soft-shake.ch - Un zeste d’Erlang dans le shaker!
-
Upload
soft-shakech -
Category
Technology
-
view
760 -
download
0
description
Transcript of soft-shake.ch - Un zeste d’Erlang dans le shaker!
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