SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
cocktail d’expérience informatiques
             Genève 3 & 4 octobre 2011
                   Seconde édition




Auteur    D. WILLIAMS & F. NOURISSON
  Track   Incubateur
Session   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ésentateurs
   Erlang, eXtreme Programming, trains, USSD, Internet




                              Python, jQuery
                              118000.fr
                              Ornithorynque, ski, rugby
   Fabrice Nourisson
   @duckmole




                              C, Lisp
                              Océanographie, corporama.com
                              Zen, jazz, voile
   Dominic Williams
   @domiwilliams
                                                             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




      Du code concis (peu de lignes de code)
      Un langage haut niveau
      Des systèmes plus robustes
      Des systèmes faciles à distribuer
      Des architectures scalables




                                               8/32
Histoire




       Alonzo Church, λ-calcul, 1930
       Erlang naît dans les labos d’Ericsson en 1986
           Dérivé de Prolog (logique)
           Inspiré de ML (fonctionnel)
           Plusieurs tentatives de VM
       Distribué en open source depuis 1998
       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


       Gestion de mémoire automatique (ramasse-miettes)
       Typage implicite
       Types haut niveau : listes, tuples, symboles
       Un modèle de concurrence simple et puissant
       langage fonctionnel
       Affectation unique (équivalence)
       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 ?




       Systèmes réactifs, multi-tâches
       Parallélisation de certains algorithmes
       Tirer parti des processeurs modernes multi-coeurs
       Modélisation du domaine




                                                           13/32
La concurrence Erlang




      Basée sur une algèbre (CSP, Tony Hoare, 1978)
      Processus légers isolés (sans mémoire partagée)
      Communicants par messages asynchrones
      Parfaitement déterministe
      Simple et compréhensible
      Automatiquement multi-coeur




                                                        14/32
Un langage distribué et communiquant


  La distribution Erlang :             Encodages binaires :
      les noeuds (VM) Erlang se            syntaxe puissante
      connectent automatiquement           (pattern matching,
      (cluster)                            construction)
      il y a un système de nommage         protocoles réseau
      distribué                            (paquets standard ou
      les process s’échangent des          propriétaires)
      messages localement ou via           fichiers binaires
      réseau de façon transparente
      la supervision de noeuds et de
      process est aussi distribuée



                                                                15/32
Supervision de process
      Le langage permet de surveiller l’existence d’autres process
          spawn_link (. . . )
          spawn_monitor (. . . )
      La notification est automatique et se fait aussi par messages
      Séparation en process métier et process de supervision
      (worker, supervisor)




                                                                     16/32
Très hautes disponibilités




       Génération d’environnements cible
       Versionnement
       Système d’upgrade/downgrade
       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éel
       Un peu de code fonctionnel (en TDD)
       Intégration dans une appli Web avec Yaws
       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




                                          Modules
                       Dialyzer
                                          Make ou rebar
                       harnais de tests
     Debugger                             Hot upgrade
                       QuickCheck
     Wrangler                             Jenkins . . .




                                                          21/32
Outils de supervision


 Interne :
      Etop
      os_mon
      Appmon
      traces
 Externe (SNMP) :
      Nagios
      HP Network
      Manager
      IBM Tivoli
      NetView



                        22/32
Bases de données


         Base temps-réel                                 Plusieurs bases NoSQL
         distribuée mnesia                               en Erlang
         Drivers ODBC, MySQL,                            Bonne intégration avec
         PostgreSQL, Oracle                              autres bases NoSQL


                        ETS   Mnesia   Tokyo   CouchDB   Riak   MongoDB   MySQL
    RAM
    Disque
    Gros volumes
    Latence
    Réplication
    Répartition
    Cluster dynamique
    Transactions
    Requêtes ad hoc




                                                                                  23/32
Support


   Ericsson :                     Formation et support :
       Développement actif du         Extreme Forge
       langage, des librairies,       Erlang Solutions
       documentation
       Code sur GitHub            Outils avec support
       Mailing list               commercial :
                                      QuickCheck
   Communauté :                       RabbitMQ
       Trapexit.org                   Riak
       Blogs                          CouchDB
       Livres                         Process-One (ejabberd)



                                                               24/32
Etude de cas : serveur intéractif USSD


      Cellicium/Myriad Group
      Selfcare téléphonie mobile (suivi conso, rechargement,
      call-me-back. . . )
      Interface core network, SI opérateur et fournisseurs contenu

       2 personnes, 9 mois
       99,99% dispo
       20 millions d’utilisateurs
       5000 MPS
       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


       Nombreux produits écrits en Erlang pour du non-Erlang
       Open source et/ou commerciaux



    Nom          Description                             Société
    QuickCheck   Vérfication de propriétés                QuviQ
    CouchDB      Base de données                         Fondation Apache
    Riak         Base de données                         Basho
    RabbitMQ     Middleware AMQP (orienté messages)      VMware
    ejabberd     Chat, messaging XMPP                    Process One
    U.C.Engine   Framework Web temps-réel collaboratif   AF83
    Zotonic      CMS                                     WhatWebWhat
    Disco        Map Reduce                              Nokia Research



                                                                            27/32
Intégration et communication externe



      Sockets TCP/IP
      Serveurs et clients HTTP
      SSH
      CORBA
      ASN.1
      Megaco (H.248)
      SIP
      Ports et drivers C
      Jinterface (Java)




                                       28/32
Etude de cas : Chat Facebook


     Appli de chat en ligne    +800 millions messages/jour
     4 personnes, 7 mois       7 millions de canaux actifs
     Ajax/PHP/C++/Erlang       100 machines




                                                        29/32
Etude de cas : routage et répartition de charge


       Utiliser la distribution et la supervision d’Erlang
       Rendre robuste, parallèle et scalable votre code existant




                                                                   30/32
Conclusion




      Langage simple, concis, sûr et puissant
      Fait pour le multi-coeur et la scalabilité
      Facile à intégrer à un existant




                       Questions ?
                                                   31/32
Références

    Société               Domaine              CA/Me    Utilisation
    Goldman Sachs         Banque                27000   Trading
    Amazon                E-commerce            24000   Base de données cloud
    BT                    Télécoms              24000
    Ericsson              Télécoms              22000   Switches, gateways. . .
    T-Mobile              Télécoms              21000
    Motorola              Télécoms              15000
    Activision            Jeux vidéos            3100   Middleware jeux réseau
    Electronic Arts       Jeux vidéos            2600   Chat
    Facebook              Réseau social          1400   Chat
    Ansaldo Signal        Ferroviaire            1300   Contrôle-commande signalisation
    Nortel                Télécoms                438   E-mail, accélérateur SSL
    Meetic                Site de rencontres      186
    Myriad Group          Télécoms                 71   Portail USSD
    Teba Bank             Banque                    2   Transactions
    37signals             Gestion de projet             Chat
    Beebole               Gestion de projet             AppliWeb
    Blue Group            E-commerce                    Paiement en-ligne
    Correlatus            Télécoms                      SS7
    Engine Yard           Hébergement                   Hébergement Ruby
    Gemini technologies   Télécoms                      Base de données
    GitHub                Hébergement
    Heroku                Hébergement                   Load balancing
    Klarna                Paiement en-ligne             Tout
    Smarkets              Pari                          Site de paris en-ligne




                                                                                          32/32
Etude de cas : Switch AXD301




      Switch ATM Ericsson
      40 personnes, 4 ans
      1500 KLOC, 2000
      modules Erlang
      99,9999999% dispo
      (31ms/an)
      10 à 160 Gbit/s
      Leader marché (11%)




                               33/32

Más contenido relacionado

Similar a soft-shake.ch - Un zeste d’Erlang dans le shaker!

Lepton : Description succincte
Lepton : Description succincteLepton : Description succincte
Lepton : Description succincteO10ée
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisantcluelessjoe
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tousMicrosoft
 
XMPP et Interopérabilité
XMPP et InteropérabilitéXMPP et Interopérabilité
XMPP et InteropérabilitéNyco
 
Article open-silicium-juin-juillet-aout-2013
Article open-silicium-juin-juillet-aout-2013Article open-silicium-juin-juillet-aout-2013
Article open-silicium-juin-juillet-aout-2013O10ée
 
Alphorm.com Formation Splunk : Maitriser les fondamentaux
Alphorm.com Formation Splunk : Maitriser les fondamentauxAlphorm.com Formation Splunk : Maitriser les fondamentaux
Alphorm.com Formation Splunk : Maitriser les fondamentauxAlphorm
 
ICT Journal - Dossier déduplication
ICT Journal - Dossier déduplicationICT Journal - Dossier déduplication
ICT Journal - Dossier déduplicationschene
 
Ethereum Blockchain - Softeam - Tech Conf 15.02.18
Ethereum Blockchain - Softeam - Tech Conf 15.02.18Ethereum Blockchain - Softeam - Tech Conf 15.02.18
Ethereum Blockchain - Softeam - Tech Conf 15.02.18TelecomValley
 
Sonar devant le Java User Group de Lausanne
Sonar devant le Java User Group de LausanneSonar devant le Java User Group de Lausanne
Sonar devant le Java User Group de LausanneFreddy Mallet
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotiqueMicrosoft
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08Loïc Descotte
 
Fusioninventory journees-perl-2012
Fusioninventory journees-perl-2012Fusioninventory journees-perl-2012
Fusioninventory journees-perl-2012Gonéri Le Bouder
 
Formation Linux - Initiation
Formation Linux - InitiationFormation Linux - Initiation
Formation Linux - Initiationrobertpluss
 
Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletGenevaJUG
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveFreddy Mallet
 
Theme1 (1)
Theme1 (1)Theme1 (1)
Theme1 (1)salmazen
 

Similar a soft-shake.ch - Un zeste d’Erlang dans le shaker! (20)

Lepton : Description succincte
Lepton : Description succincteLepton : Description succincte
Lepton : Description succincte
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous
 
XMPP et Interopérabilité
XMPP et InteropérabilitéXMPP et Interopérabilité
XMPP et Interopérabilité
 
Article open-silicium-juin-juillet-aout-2013
Article open-silicium-juin-juillet-aout-2013Article open-silicium-juin-juillet-aout-2013
Article open-silicium-juin-juillet-aout-2013
 
Alphorm.com Formation Splunk : Maitriser les fondamentaux
Alphorm.com Formation Splunk : Maitriser les fondamentauxAlphorm.com Formation Splunk : Maitriser les fondamentaux
Alphorm.com Formation Splunk : Maitriser les fondamentaux
 
ICT Journal - Dossier déduplication
ICT Journal - Dossier déduplicationICT Journal - Dossier déduplication
ICT Journal - Dossier déduplication
 
Wygday 2008
Wygday 2008Wygday 2008
Wygday 2008
 
Ethereum Blockchain - Softeam - Tech Conf 15.02.18
Ethereum Blockchain - Softeam - Tech Conf 15.02.18Ethereum Blockchain - Softeam - Tech Conf 15.02.18
Ethereum Blockchain - Softeam - Tech Conf 15.02.18
 
Sonar devant le Java User Group de Lausanne
Sonar devant le Java User Group de LausanneSonar devant le Java User Group de Lausanne
Sonar devant le Java User Group de Lausanne
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08
 
Multi-Threading Et Cocoa
Multi-Threading Et CocoaMulti-Threading Et Cocoa
Multi-Threading Et Cocoa
 
Fusioninventory journees-perl-2012
Fusioninventory journees-perl-2012Fusioninventory journees-perl-2012
Fusioninventory journees-perl-2012
 
Formation Linux - Initiation
Formation Linux - InitiationFormation Linux - Initiation
Formation Linux - Initiation
 
Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy Mallet
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG Genève
 
Theme1 (1)
Theme1 (1)Theme1 (1)
Theme1 (1)
 
2003 forum asso-faches
2003 forum asso-faches2003 forum asso-faches
2003 forum asso-faches
 
fortran 2.pdf
fortran 2.pdffortran 2.pdf
fortran 2.pdf
 

Más de soft-shake.ch

soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
soft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch
 
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch
 
soft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch
 
soft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch
 
soft-shake.ch - JBoss AS 7, la révolution
soft-shake.ch - JBoss AS 7, la révolutionsoft-shake.ch - JBoss AS 7, la révolution
soft-shake.ch - JBoss AS 7, la révolutionsoft-shake.ch
 
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch
 
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch
 
soft-shake.ch - Déploiement continu sur le cloud avec SlipStream
soft-shake.ch - Déploiement continu sur le cloud avec SlipStreamsoft-shake.ch - Déploiement continu sur le cloud avec SlipStream
soft-shake.ch - Déploiement continu sur le cloud avec SlipStreamsoft-shake.ch
 
soft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch
 
soft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch
 
soft-shake.ch - Documentation et agilité
soft-shake.ch - Documentation et agilitésoft-shake.ch - Documentation et agilité
soft-shake.ch - Documentation et agilitésoft-shake.ch
 
soft-shake.ch - Agilité = discipline et rigueur ?
soft-shake.ch - Agilité = discipline et rigueur ?soft-shake.ch - Agilité = discipline et rigueur ?
soft-shake.ch - Agilité = discipline et rigueur ?soft-shake.ch
 
soft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch
 
soft-shake.ch - Le développement durable
soft-shake.ch - Le développement durablesoft-shake.ch - Le développement durable
soft-shake.ch - Le développement durablesoft-shake.ch
 
soft-shake.ch - The feel of Scala
soft-shake.ch - The feel of Scalasoft-shake.ch - The feel of Scala
soft-shake.ch - The feel of Scalasoft-shake.ch
 
soft-shake.ch - Le terrain Agile
soft-shake.ch - Le terrain Agilesoft-shake.ch - Le terrain Agile
soft-shake.ch - Le terrain Agilesoft-shake.ch
 
soft-shake.ch - Recettes d’une passion
soft-shake.ch - Recettes d’une passionsoft-shake.ch - Recettes d’une passion
soft-shake.ch - Recettes d’une passionsoft-shake.ch
 

Más de soft-shake.ch (20)

soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
soft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easy
 
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
 
soft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch - Clojure Values
soft-shake.ch - Clojure Values
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Grids
 
soft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Caching
 
soft-shake.ch - JBoss AS 7, la révolution
soft-shake.ch - JBoss AS 7, la révolutionsoft-shake.ch - JBoss AS 7, la révolution
soft-shake.ch - JBoss AS 7, la révolution
 
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
 
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
 
soft-shake.ch - Déploiement continu sur le cloud avec SlipStream
soft-shake.ch - Déploiement continu sur le cloud avec SlipStreamsoft-shake.ch - Déploiement continu sur le cloud avec SlipStream
soft-shake.ch - Déploiement continu sur le cloud avec SlipStream
 
soft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecture
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
soft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivation
 
soft-shake.ch - Documentation et agilité
soft-shake.ch - Documentation et agilitésoft-shake.ch - Documentation et agilité
soft-shake.ch - Documentation et agilité
 
soft-shake.ch - Agilité = discipline et rigueur ?
soft-shake.ch - Agilité = discipline et rigueur ?soft-shake.ch - Agilité = discipline et rigueur ?
soft-shake.ch - Agilité = discipline et rigueur ?
 
soft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changement
 
soft-shake.ch - Le développement durable
soft-shake.ch - Le développement durablesoft-shake.ch - Le développement durable
soft-shake.ch - Le développement durable
 
soft-shake.ch - The feel of Scala
soft-shake.ch - The feel of Scalasoft-shake.ch - The feel of Scala
soft-shake.ch - The feel of Scala
 
soft-shake.ch - Le terrain Agile
soft-shake.ch - Le terrain Agilesoft-shake.ch - Le terrain Agile
soft-shake.ch - Le terrain Agile
 
soft-shake.ch - Recettes d’une passion
soft-shake.ch - Recettes d’une passionsoft-shake.ch - Recettes d’une passion
soft-shake.ch - Recettes d’une passion
 

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

  • 1. cocktail d’expérience informatiques Genève 3 & 4 octobre 2011 Seconde édition Auteur D. WILLIAMS & F. NOURISSON Track Incubateur Session Un zeste d’Erlang dans le shaker!
  • 2.
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. Les présentateurs Erlang, eXtreme Programming, trains, USSD, Internet Python, jQuery 118000.fr Ornithorynque, ski, rugby Fabrice Nourisson @duckmole C, Lisp Océanographie, corporama.com Zen, jazz, voile Dominic Williams @domiwilliams 4/32
  • 7. Extreme Forge http ://extremeforge.com @extremeforge 5/32
  • 8. Le public ? 6/32
  • 9. 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
  • 10. Les avantages d’Erlang Du code concis (peu de lignes de code) Un langage haut niveau Des systèmes plus robustes Des systèmes faciles à distribuer Des architectures scalables 8/32
  • 11. Histoire Alonzo Church, λ-calcul, 1930 Erlang naît dans les labos d’Ericsson en 1986 Dérivé de Prolog (logique) Inspiré de ML (fonctionnel) Plusieurs tentatives de VM Distribué en open source depuis 1998 Perce dans le monde Internet en 2007 9/32
  • 12. 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
  • 13. 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
  • 14. Simplicité et robustesse Gestion de mémoire automatique (ramasse-miettes) Typage implicite Types haut niveau : listes, tuples, symboles Un modèle de concurrence simple et puissant langage fonctionnel Affectation unique (équivalence) Style déclaratif : pattern matching (filtrage) f a c ( 0 ) −> 1 ; f a c (N) −> N ∗ f a c (N−1). 12/32
  • 15. A quoi sert la concurrence ? Systèmes réactifs, multi-tâches Parallélisation de certains algorithmes Tirer parti des processeurs modernes multi-coeurs Modélisation du domaine 13/32
  • 16. La concurrence Erlang Basée sur une algèbre (CSP, Tony Hoare, 1978) Processus légers isolés (sans mémoire partagée) Communicants par messages asynchrones Parfaitement déterministe Simple et compréhensible Automatiquement multi-coeur 14/32
  • 17. Un langage distribué et communiquant La distribution Erlang : Encodages binaires : les noeuds (VM) Erlang se syntaxe puissante connectent automatiquement (pattern matching, (cluster) construction) il y a un système de nommage protocoles réseau distribué (paquets standard ou les process s’échangent des propriétaires) messages localement ou via fichiers binaires réseau de façon transparente la supervision de noeuds et de process est aussi distribuée 15/32
  • 18. Supervision de process Le langage permet de surveiller l’existence d’autres process spawn_link (. . . ) spawn_monitor (. . . ) La notification est automatique et se fait aussi par messages Séparation en process métier et process de supervision (worker, supervisor) 16/32
  • 19. Très hautes disponibilités Génération d’environnements cible Versionnement Système d’upgrade/downgrade Upgrade de code à chaud (sans arrêt logiciel) 17/32
  • 20. 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
  • 21. Démo Un nuage de mots temps-réel Un peu de code fonctionnel (en TDD) Intégration dans une appli Web avec Yaws Changement de code à chaud 19/32
  • 22. 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
  • 23. L’environnement de développement Modules Dialyzer Make ou rebar harnais de tests Debugger Hot upgrade QuickCheck Wrangler Jenkins . . . 21/32
  • 24. Outils de supervision Interne : Etop os_mon Appmon traces Externe (SNMP) : Nagios HP Network Manager IBM Tivoli NetView 22/32
  • 25. Bases de données Base temps-réel Plusieurs bases NoSQL distribuée mnesia en Erlang Drivers ODBC, MySQL, Bonne intégration avec PostgreSQL, Oracle autres bases NoSQL ETS Mnesia Tokyo CouchDB Riak MongoDB MySQL RAM Disque Gros volumes Latence Réplication Répartition Cluster dynamique Transactions Requêtes ad hoc 23/32
  • 26. Support Ericsson : Formation et support : Développement actif du Extreme Forge langage, des librairies, Erlang Solutions documentation Code sur GitHub Outils avec support Mailing list commercial : QuickCheck Communauté : RabbitMQ Trapexit.org Riak Blogs CouchDB Livres Process-One (ejabberd) 24/32
  • 27. Etude de cas : serveur intéractif USSD Cellicium/Myriad Group Selfcare téléphonie mobile (suivi conso, rechargement, call-me-back. . . ) Interface core network, SI opérateur et fournisseurs contenu 2 personnes, 9 mois 99,99% dispo 20 millions d’utilisateurs 5000 MPS Leader marché (>30 opérateurs) 25/32
  • 28. 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
  • 29. Produits Nombreux produits écrits en Erlang pour du non-Erlang Open source et/ou commerciaux Nom Description Société QuickCheck Vérfication de propriétés QuviQ CouchDB Base de données Fondation Apache Riak Base de données Basho RabbitMQ Middleware AMQP (orienté messages) VMware ejabberd Chat, messaging XMPP Process One U.C.Engine Framework Web temps-réel collaboratif AF83 Zotonic CMS WhatWebWhat Disco Map Reduce Nokia Research 27/32
  • 30. Intégration et communication externe Sockets TCP/IP Serveurs et clients HTTP SSH CORBA ASN.1 Megaco (H.248) SIP Ports et drivers C Jinterface (Java) 28/32
  • 31. Etude de cas : Chat Facebook Appli de chat en ligne +800 millions messages/jour 4 personnes, 7 mois 7 millions de canaux actifs Ajax/PHP/C++/Erlang 100 machines 29/32
  • 32. Etude de cas : routage et répartition de charge Utiliser la distribution et la supervision d’Erlang Rendre robuste, parallèle et scalable votre code existant 30/32
  • 33. Conclusion Langage simple, concis, sûr et puissant Fait pour le multi-coeur et la scalabilité Facile à intégrer à un existant Questions ? 31/32
  • 34. Références Société Domaine CA/Me Utilisation Goldman Sachs Banque 27000 Trading Amazon E-commerce 24000 Base de données cloud BT Télécoms 24000 Ericsson Télécoms 22000 Switches, gateways. . . T-Mobile Télécoms 21000 Motorola Télécoms 15000 Activision Jeux vidéos 3100 Middleware jeux réseau Electronic Arts Jeux vidéos 2600 Chat Facebook Réseau social 1400 Chat Ansaldo Signal Ferroviaire 1300 Contrôle-commande signalisation Nortel Télécoms 438 E-mail, accélérateur SSL Meetic Site de rencontres 186 Myriad Group Télécoms 71 Portail USSD Teba Bank Banque 2 Transactions 37signals Gestion de projet Chat Beebole Gestion de projet AppliWeb Blue Group E-commerce Paiement en-ligne Correlatus Télécoms SS7 Engine Yard Hébergement Hébergement Ruby Gemini technologies Télécoms Base de données GitHub Hébergement Heroku Hébergement Load balancing Klarna Paiement en-ligne Tout Smarkets Pari Site de paris en-ligne 32/32
  • 35. Etude de cas : Switch AXD301 Switch ATM Ericsson 40 personnes, 4 ans 1500 KLOC, 2000 modules Erlang 99,9999999% dispo (31ms/an) 10 à 160 Gbit/s Leader marché (11%) 33/32