Transcript
Page 1: 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!

Page 2: soft-shake.ch - Un zeste d’Erlang dans le shaker!
Page 3: soft-shake.ch - 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

Page 4: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 5: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 6: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 7: soft-shake.ch - Un zeste d’Erlang dans le shaker!

Extreme Forge

http ://extremeforge.com@extremeforge

5/32

Page 8: soft-shake.ch - Un zeste d’Erlang dans le shaker!

Le public ?

6/32

Page 9: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 10: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 11: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 12: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 13: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 14: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 15: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 16: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 17: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 18: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 19: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 20: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 21: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 22: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 23: soft-shake.ch - Un zeste d’Erlang dans le shaker!

L’environnement de développement

I DebuggerI Wrangler

I DialyzerI harnais de testsI QuickCheck

I ModulesI Make ou rebarI Hot upgradeI Jenkins . . .

21/32

Page 24: soft-shake.ch - Un zeste d’Erlang dans le shaker!

Outils de supervision

Interne :I EtopI os_monI AppmonI traces

Externe (SNMP) :I NagiosI HP Network

ManagerI IBM Tivoli

NetView

22/32

Page 25: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 26: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 27: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 28: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 29: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 30: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 31: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 32: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 33: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 34: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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

Page 35: soft-shake.ch - Un zeste d’Erlang dans le shaker!

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