From fe3492a98de29942477b061cd02c92246f4bf85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 28 Mar 2016 15:36:42 +0200 Subject: Initial commit, new website system --- talks/erlang-cowboy/erlang-cowboy-fr-unis.html | 469 +++++++++++++++++++++++++ 1 file changed, 469 insertions(+) create mode 100644 talks/erlang-cowboy/erlang-cowboy-fr-unis.html (limited to 'talks/erlang-cowboy/erlang-cowboy-fr-unis.html') diff --git a/talks/erlang-cowboy/erlang-cowboy-fr-unis.html b/talks/erlang-cowboy/erlang-cowboy-fr-unis.html new file mode 100644 index 00000000..85d065c7 --- /dev/null +++ b/talks/erlang-cowboy/erlang-cowboy-fr-unis.html @@ -0,0 +1,469 @@ + + + + + +Applications web performantes avec Erlang et Cowboy + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + +
+ +
+

Applications web performantes avec Erlang et Cowboy

+

Nine Nines and beyond...

+

Loïc Hoguin - @lhoguin

+

Erlang Cowboy and Nine Nines Founder

+
+ + +
+

Nine Nines

+
+ + +
+

La société

+
    +
  • Fondée en janvier 2012
  • +
  • Société open-source
  • +
  • Petite structure
  • +
  • 0 financement
  • +
+
+ + +
+

Principale activité

+
    +
  • Dev open-source Erlang
  • +
  • Projet Cowboy (HTTP server)
  • +
  • Projets Farwest, Sheriff, Bullet...
  • +
+
+ + +
+

Les services offerts

+
    +
  • Training
  • +
  • Consulting
  • +
  • Support
  • +
+
+ + +
+

Conférences

+
    +
  • Erlang Factory (San Francisco, Londres)
  • +
  • Erlang User Conference (Stockholm)
  • +
  • OSCON (Portland)
  • +
  • Diverses écoles et universités
  • +
  • Organise la Erlang Factory Lite Paris
  • +
+
+ + +
+

Erlang Factory Lite Paris

+
    +
  • Prévue fin septembre 2012
  • +
  • Gratuite
  • +
  • En français
  • +
  • Ouverte à tous et pour tous les niveaux
  • +
+
+ + +
+

Erlang

+
+ + +
+

Origines

+
    +
  • Language fonctionnel
  • +
  • Inspiré par Prolog
  • +
  • Créé pour les télécommunications
  • +
  • Inventé par Joe Armstrong à Ericsson
  • +
+
+ + +
+

Orienté messages

+
    +
  • Processes natifs Erlang (pas de threads !)
  • +
  • Rien de partagé
  • +
  • Echanges possibles via l'envoi de messages
  • +
  • Processes légers et peu coûteux
  • +
+
+ + +
+

[DEMO]

+
    +
  • Echange de messages
  • +
  • Création de 10000 processes en < 1s
  • +
+
+ + +
+

Résistant aux pannes

+
    +
  • Si 1 process crash, seul celui-ci est interrompu
  • +
  • Possibilité de link ou monitorer les processes
  • +
  • Méchanismes pour relancer automatiquement les processes
  • +
  • Si une node Erlang crash, celle-ci est redémarrée (heart)
  • +
+
+ + +
+

Let it crash

+
    +
  • Il est plus efficace de laisser crash
  • +
  • On ne peut pas prévoir tous les types d'erreur
  • +
  • Le pattern matching d'Erlang permet de crash facilement
  • +
  • On peut toujours catch les exceptions localement si besoin
  • +
+
+ + +
+

[DEMO]

+
    +
  • Pattern matching
  • +
  • Crash d'1 process
  • +
  • Crash de processes linkés
  • +
+
+ + +
+

Distribué

+
    +
  • Nodes découvertes automatiquement
  • +
  • "Plug and play"
  • +
  • Aucun changement à apporter au code
  • +
  • RPC
  • +
+
+ + +
+

[DEMO]

+
    +
  • 2 nodes
  • +
  • RPC
  • +
+
+ +
+

Upgrades live

+
    +
  • Aucune interruption
  • +
  • Aucune connexion fermée ou perdue
  • +
  • Un court délai suivant la taille du système
  • +
+
+ + +
+

En résumé

+
    +
  • Tous les éléments requis pour atteindre Nine Nines
  • +
+
+ + +
+

Qui utilise Erlang ?

+
    +
  • Facebook, Google, Amazon, Apple
  • +
  • Les serveurs Call of Duty
  • +
  • WhatsApp (2+ millions de connexions !)
  • +
  • Rackspace, Github, Heroku...
  • +
  • Serveurs NoSQL : Riak, CouchDB...
  • +
  • L'Europe
  • +
  • Orange, EDF, Meetic, AdopteUnMec
  • +
+
+ + +
+

Popularité en augmentation

+
    +
  • Participation doublée chaque année aux conférences
  • +
  • Mise en place de cours du soir dans diverses villes
  • +
  • Utilisation par nombre de grandes compagnies
  • +
  • Pénurie de développeurs
  • +
+
+ + +
+

Le web

+
+ + +
+

Le web aujourd'hui

+
    +
  • Peu de sites statiques
  • +
  • Sites à contenu généré par l'utilisateur
  • +
  • Applications à caractère "temps réel"
  • +
  • API pour applications mobiles
  • +
+
+ + +
+

Nouvelles technologies

+
    +
  • XMLHTTPRequest
  • +
  • Websockets
  • +
  • Server Sent Events
  • +
  • SPDY
  • +
+
+ + +
+

Les besoins

+
    +
  • Excellent temps de réponse
  • +
  • Nombreux utilisateurs simultanés
  • +
  • Toujours disponible
  • +
+
+ + +
+

Erlang est adapté

+
    +
  • Il n'y a pas meilleure base qu'Erlang pour le web
  • +
  • C'est pourquoi Cowboy a été écrit en Erlang
  • +
+
+ + +
+

Cowboy

+
+ + +
+

Un serveur en Erlang, pour Erlang

+
    +
  • Code 100% Erlang
  • +
  • Facile à lire et à comprendre
  • +
  • 1 connexion = 1 process
  • +
  • Connexion -> HTTP -> Handler -> HTTP
  • +
+
+ + +
+

Features clés

+
    +
  • REST
  • +
  • Websocket
  • +
  • Long polling
  • +
+
+ + +
+

Performances

+
    +
  • Testé avec plus de 1 million de connexions simultanées
  • +
  • Temps de réponse inchangé avec un grand nombre de connexions
  • +
  • Faible usage mémoire (500 K connexions = 10 GB)
  • +
  • Pas ou peu d'optimisations
  • +
+
+ + +
+

[DEMO]

+
    +
  • Petit benchmark
  • +
+
+ + +
+

Juste Erlang

+
    +
  • Cowboy fait le minimum par défaut
  • +
  • Hibernation de websocket ou long-polling
  • +
  • Utilisation de binaries plutôt que de lists
  • +
  • Date/heure générée toutes les secondes par un process dédié
  • +
+
+ + +
+

Futures améliorations

+
    +
  • Projet Horse : benchmarking commit par commit
  • +
  • Sujet de stage d'été de 2 étudiantes
  • +
+
+ + +
+

Intégration

+
    +
  • PHP via cowboy_fcgi
  • +
  • Ruby on Rails via Rack
  • +
  • Possibilité d'appliquer seulement à certaines requêtes
  • +
+
+ + +
+

Historique

+
    +
  • Premier commit le 7 mars 2011
  • +
  • Présentation publique en Novembre à Stockholm
  • +
  • Utilisé pour du financier, publicitaire...
  • +
  • 500+ watchers sur Github aujourd'hui
  • +
+
+ + +
+

Et après ?

+
+ + +
+

Farwest

+
    +
  • Un "framework" pour le dev côté client
  • +
  • Fait pour les intégrateurs et devs JS
  • +
  • Permet de créer des applications Erlang, sans connaitre Erlang
  • +
  • Séparation claire entre côtés client et serveur
  • +
+
+ + +
+

Autres projets

+
    +
  • Ranch : accepteur de connexions
  • +
  • Bullet : connexion websocket permanente
  • +
  • Sheriff : validation de données entrantes automatisée
  • +
  • Goldrush : monitoring et remote debugging de nodes Erlang
  • +
  • Et d'autres à venir...
  • +
+
+ + +
+

En conclusion

+
+ + +
+

Erlang est prêt

+
    +
  • Le nombre de coeurs par CPU augmente
  • +
  • Tous les languages doivent s'adapter
  • +
  • La plupart des solutions sont inefficaces
  • +
  • Erlang est déjà prêt
  • +
+
+ + +
+

Cowboy est prêt

+
    +
  • Utilise pleinement toutes les capacités de Erlang
  • +
  • Intègre les technologies de pointe
  • +
  • Peut complémenter un système déja existant facilement
  • +
+
+ + +
+

Etes-vous prêt ?

+
    +
  • Initiez-vous dès aujourd'hui
  • +
  • Venez à la conférence en septembre
  • +
  • Participez aux Erlounge tous les mois
  • +
  • Faites passer le message
  • +
+
+ + +
+

Liens

+
    +
  • http://erlang.org
  • +
  • http://learnyousomeerlang.com
  • +
  • https://github.com/extend
  • +
  • http://ninenines.eu
  • +
+
+ + +
+

Communauté

+
    +
  • erlang-questions ML sur http://erlang.org
  • +
  • https://groups.google.com/group/erlang-paris
  • +
  • #erlang et #erlounge sur irc.freenode.net
  • +
+
+ + +
+

Questions ?

+
+ + +
+ + + -- cgit v1.2.3