Upload
soft-shakech
View
760
Download
0
Embed Size (px)
DESCRIPTION
Dominic Williams & Fabrice NourissonLes technologies logicielles se multiplient. Il faut savoir combiner les forces de plusieurs langages et outils. Erlang est la seule technologie conçue spécifiquement pour tirer parti très simplement des architectures multi-coeur et en cluster. Cette présentation vous invite à ajouter cet ingrédient à votre cocktail.Sommaire:- Aperçu du langage.- Démo de code, en TDD et en binôme, avec du refactoring et de la mise à jour de code à chaud.- Points forts, points faibles, domaines et contextes adaptés.- Ecosystème (références, produits).- Cas d’étude: chat online de Facebook.http://soft-shake.ch/2011/conference/sessions/incubator/2011/09/13/un-zeste-d-erlang-dans-le-shaker.html
Citation preview
cocktail d’expérience informatiques
Genève 3 & 4 octobre 2011
Seconde édition
Track
Auteur
Session
Incubateur
D. WILLIAMS & F. NOURISSON
Un zeste d’Erlang dans le shaker!
Un zeste d’Erlang dans le shaker!Soft-Shake 2011
Dominic Williams Fabrice Nourisson
4 octobre 2011
c©Extreme Forge. All rights reserved.
1/32
Sommaire
Faisons connaissance
Introduction à Erlang
Le langage plus en détail
Démo
L’écosystème Erlang
Erlang comme ingrédient du cocktail
2/32
Sommaire
Faisons connaissance
Introduction à Erlang
Le langage plus en détail
Démo
L’écosystème Erlang
Erlang comme ingrédient du cocktail
3/32
Les présentateursErlang, eXtreme Programming, trains, USSD, Internet
Fabrice Nourisson@duckmole
I Python, jQueryI 118000.frI Ornithorynque, ski, rugby
Dominic Williams@domiwilliams
I C, LispI Océanographie, corporama.comI Zen, jazz, voile
4/32
Extreme Forge
http ://extremeforge.com@extremeforge
5/32
Le public ?
6/32
Sommaire
Faisons connaissance
Introduction à Erlang
Le langage plus en détail
Démo
L’écosystème Erlang
Erlang comme ingrédient du cocktail
7/32
Les avantages d’Erlang
I Du code concis (peu de lignes de code)I Un langage haut niveauI Des systèmes plus robustesI Des systèmes faciles à distribuerI Des architectures scalables
8/32
Histoire
I Alonzo Church, λ-calcul, 1930I Erlang naît dans les labos d’Ericsson en 1986
I Dérivé de Prolog (logique)I Inspiré de ML (fonctionnel)I Plusieurs tentatives de VM
I Distribué en open source depuis 1998I Perce dans le monde Internet en 2007
9/32
Utilisé pour l’informatique critique
Ericsson, Goldman Sachs, Mobile Interactive Group, Myriad Group,British Telecom, Klarna, Teba Bank, Ansaldo Signal, Twitter, Facebook,GitHub, Amazon, . . .
10/32
Sommaire
Faisons connaissance
Introduction à Erlang
Le langage plus en détail
Démo
L’écosystème Erlang
Erlang comme ingrédient du cocktail
11/32
Simplicité et robustesse
I Gestion de mémoire automatique (ramasse-miettes)I Typage impliciteI Types haut niveau : listes, tuples, symbolesI Un modèle de concurrence simple et puissantI langage fonctionnelI Affectation unique (équivalence)I Style déclaratif : pattern matching (filtrage)
f a c (0 ) −> 1 ;f a c (N) −> N ∗ f a c (N−1).
12/32
A quoi sert la concurrence ?
I Systèmes réactifs, multi-tâchesI Parallélisation de certains algorithmesI Tirer parti des processeurs modernes multi-coeursI Modélisation du domaine
13/32
La concurrence Erlang
I Basée sur une algèbre (CSP, Tony Hoare, 1978)I Processus légers isolés (sans mémoire partagée)I Communicants par messages asynchronesI Parfaitement déterministeI Simple et compréhensibleI Automatiquement multi-coeur
14/32
Un langage distribué et communiquant
La distribution Erlang :I les noeuds (VM) Erlang se
connectent automatiquement(cluster)
I il y a un système de nommagedistribué
I les process s’échangent desmessages localement ou viaréseau de façon transparente
I la supervision de noeuds et deprocess est aussi distribuée
Encodages binaires :I syntaxe puissante
(pattern matching,construction)
I protocoles réseau(paquets standard oupropriétaires)
I fichiers binaires
15/32
Supervision de process
I Le langage permet de surveiller l’existence d’autres processI spawn_link (. . . )I spawn_monitor (. . . )
I La notification est automatique et se fait aussi par messagesI Séparation en process métier et process de supervision
(worker, supervisor)
16/32
Très hautes disponibilités
I Génération d’environnements cibleI VersionnementI Système d’upgrade/downgradeI Upgrade de code à chaud (sans arrêt logiciel)
17/32
Sommaire
Faisons connaissance
Introduction à Erlang
Le langage plus en détail
Démo
L’écosystème Erlang
Erlang comme ingrédient du cocktail
18/32
Démo
Un nuage de mots temps-réelI Un peu de code fonctionnel (en TDD)I Intégration dans une appli Web avec YawsI Changement de code à chaud
19/32
Sommaire
Faisons connaissance
Introduction à Erlang
Le langage plus en détail
Démo
L’écosystème Erlang
Erlang comme ingrédient du cocktail
20/32
L’environnement de développement
I DebuggerI Wrangler
I DialyzerI harnais de testsI QuickCheck
I ModulesI Make ou rebarI Hot upgradeI Jenkins . . .
21/32
Outils de supervision
Interne :I EtopI os_monI AppmonI traces
Externe (SNMP) :I NagiosI HP Network
ManagerI IBM Tivoli
NetView
22/32
Bases de données
I Base temps-réeldistribuée mnesia
I Drivers ODBC, MySQL,PostgreSQL, Oracle
I Plusieurs bases NoSQLen Erlang
I Bonne intégration avecautres bases NoSQL
ETS Mnesia Tokyo CouchDB Riak MongoDB MySQLRAM X XDisque X X X X X XGros volumes X X X X XLatence X X X X X XRéplication X X X X X XRépartition X X X XCluster dynamique XTransactions X X XRequêtes ad hoc X X X X
23/32
Support
Ericsson :I Développement actif du
langage, des librairies,documentation
I Code sur GitHubI Mailing list
Communauté :I Trapexit.orgI BlogsI Livres
Formation et support :I Extreme ForgeI Erlang Solutions
Outils avec supportcommercial :
I QuickCheckI RabbitMQI RiakI CouchDBI Process-One (ejabberd)
24/32
Etude de cas : serveur intéractif USSD
I Cellicium/Myriad GroupI Selfcare téléphonie mobile (suivi conso, rechargement,
call-me-back. . . )I Interface core network, SI opérateur et fournisseurs contenu
I 2 personnes, 9 moisI 99,99% dispoI 20 millions d’utilisateursI 5000 MPSI Leader marché (>30
opérateurs)
25/32
Sommaire
Faisons connaissance
Introduction à Erlang
Le langage plus en détail
Démo
L’écosystème Erlang
Erlang comme ingrédient du cocktail
26/32
Produits
I Nombreux produits écrits en Erlang pour du non-ErlangI Open source et/ou commerciaux
Nom Description SociétéQuickCheck Vérfication de propriétés QuviQCouchDB Base de données Fondation ApacheRiak Base de données BashoRabbitMQ Middleware AMQP (orienté messages) VMwareejabberd Chat, messaging XMPP Process OneU.C.Engine Framework Web temps-réel collaboratif AF83Zotonic CMS WhatWebWhatDisco Map Reduce Nokia Research
27/32
Intégration et communication externe
I Sockets TCP/IPI Serveurs et clients HTTPI SSHI CORBAI ASN.1I Megaco (H.248)I SIPI Ports et drivers CI Jinterface (Java)
28/32
Etude de cas : Chat Facebook
I Appli de chat en ligneI 4 personnes, 7 moisI Ajax/PHP/C++/Erlang
I +800 millions messages/jourI 7 millions de canaux actifsI 100 machines
29/32
Etude de cas : routage et répartition de charge
I Utiliser la distribution et la supervision d’ErlangI Rendre robuste, parallèle et scalable votre code existant
30/32
Conclusion
I Langage simple, concis, sûr et puissantI Fait pour le multi-coeur et la scalabilitéI Facile à intégrer à un existant
Questions ?
31/32
Références
Société Domaine CA/Me UtilisationGoldman Sachs Banque 27000 TradingAmazon E-commerce 24000 Base de données cloudBT Télécoms 24000Ericsson Télécoms 22000 Switches, gateways. . .T-Mobile Télécoms 21000Motorola Télécoms 15000Activision Jeux vidéos 3100 Middleware jeux réseauElectronic Arts Jeux vidéos 2600 ChatFacebook Réseau social 1400 ChatAnsaldo Signal Ferroviaire 1300 Contrôle-commande signalisationNortel Télécoms 438 E-mail, accélérateur SSLMeetic Site de rencontres 186Myriad Group Télécoms 71 Portail USSDTeba Bank Banque 2 Transactions37signals Gestion de projet ChatBeebole Gestion de projet AppliWebBlue Group E-commerce Paiement en-ligneCorrelatus Télécoms SS7Engine Yard Hébergement Hébergement RubyGemini technologies Télécoms Base de donnéesGitHub HébergementHeroku Hébergement Load balancingKlarna Paiement en-ligne ToutSmarkets Pari Site de paris en-ligne
32/32
Etude de cas : Switch AXD301
I Switch ATM EricssonI 40 personnes, 4 ansI 1500 KLOC, 2000
modules ErlangI 99,9999999% dispo
(31ms/an)I 10 à 160 Gbit/sI Leader marché (11%)
33/32