Écosystème Ruby :
            Enjeux et Perspectives




Yann Klis, MiniConf, 11 mars 2008
Présentation
 Yann Klis
 Formation à Strasbourg (réseaux et applicatifs)
 grandes entreprises, start'up, SSII
 fondateur d...
“Rails is the killer app for Ruby.”
        Yukihiro Matsumoto, Créateur du langage Ruby




             Yann Klis, Novel...
Plan
Virtual Machines
Serveurs web
Framework Web
Divers




                   Yann Klis, Novelys, 11 mars 2008
Plan
Virtual Machine




                  Yann Klis, Novelys, 11 mars 2008
“Un logiciel ou interpréteur qui isole
 l'application utilisée par l'utilisateur
   des spécificités de l'ordinateur.”
   ...
VM “officielles”
Ruby 1.8
  aka MRI (Matz' Ruby Implementation)
  pas très performante
  green threads (fastthread)
YARV e...
Rubinius
Architecture basée sur Smalltalk-80
  “petite” VM écrite en C
  Ruby pour le reste
Intégration des dernières rech...
Utilisation de VM existantes
JRuby / IronRuby
  JVM / VM .Net et Dynamic Language Runtime (DLR)
  Sun + ThoughtWorks (6 pe...
Autres VM
Xruby
  basé sur la JVM
  compile le code Ruby vers du bytecode Java
Cardinal
  VM Parrot




                  ...
Plan
Virtual Machines
Serveurs web




                   Yann Klis, Novelys, 11 mars 2008
Chronologie
              (sur 2 ans)

mod_ruby
CGI
FastCGI
(SCGI)
Mongrel
EventedMongrel (emongrel)
Thin
Ebb ?
mod_rubini...
Chronologie
mod_ruby (Apache)
CGI
FastCGI
(SCGI)




      Yann Klis, Novelys, 11 mars 2008
Chronologie
Mongrel
  “plain HTTP”
  parser écrit en Ragel et en C
Evented Mongrel (emongrel)
  - thread, + event (EventMa...
Chronologie (future ?)
Ebb
  libev
  “mongrel state machine”
  Rack
  => quasiment tout en C
mod_rubinius
  module pour Ap...
Quelques chiffres




    Yann Klis, Novelys, 11 mars 2008
Plan
Virtual Machines
Serveurs web
Frameworks web




                   Yann Klis, Novelys, 11 mars 2008
Problèmes liés à Rails
Trop de “hype” (maturité de certains plugins)
“thread safety”
Montée en charge




              Ra...
“Autres” framework Web
Ramaze
Camping (4k)
Nitro
Cerise (inspiration de J2EE)
Coset (adapteur Rack pour REST)
Halcyon (JSO...
Plan
Virtual Machines
Serveurs web
Frameworks web
Divers




                   Yann Klis, Novelys, 11 mars 2008
EventMachine
Ruby et C
“event driven” (select, epoll, kqueue, etc)
Reactor Pattern
Comparable à Twisted dans le monde Pyth...
EventMachine (2)

Concurrency: 20
Requests: 2000

EventMachine: Requests per second: 3327.79/sec (mean)
Twisted: Requests ...
EventMachine (3)
require 'rubygems'
require 'eventmachine'

module Echo
 def receive_data data
  send_data data
 end
end

...
Rack
Interface entre un serveur web et un framework Ruby
Interface Rack dispo pour Rails, Ramaze, Merb, etc




          ...
Divers - Shoes
Toolkit et gestion de fenêtre
Inspiré des pratiques du web



  Shoes.app {
    button("Press Me") { alert(...
Divers - Erlang/Ruby
Erlectricity
   Pont entre des processus Erlang et Ruby
Fuzed
   Faire tourner des applis Rails derri...
Divers
Starling
   Gestion de file d'attente développé par Twitter
Revactor
   “Actor” (thread avec boîte aux lettres)
   ...
Conclusion
Univers Ruby de plus en plus mature
Gestion de la “courbe de hype”
Logiciel de plus en plus pointu
Logiciel “ph...
Ressources
http://www.rubyinside.com/
http://ramaze.net/#other-frameworks
http://rubyforge.org/news/



    Merci de votre...
Prochain SlideShare
Chargement dans…5
×

Écosystème Ruby : Enjeux et Perspectives

1 054 vues

Publié le

Une petite présentation faite le 13 mars 2008 devant le LUG de Strasbourg.

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 054
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Écosystème Ruby : Enjeux et Perspectives

  1. 1. Écosystème Ruby : Enjeux et Perspectives Yann Klis, MiniConf, 11 mars 2008
  2. 2. Présentation Yann Klis Formation à Strasbourg (réseaux et applicatifs) grandes entreprises, start'up, SSII fondateur de Novelys (Strasbourg) en 2005 spécialisée dans le développement d'applications web basée sur Ruby et Rails (et occasionnellement Python) Yann Klis, Novelys, 11 mars 2008
  3. 3. “Rails is the killer app for Ruby.” Yukihiro Matsumoto, Créateur du langage Ruby Yann Klis, Novelys, 11 mars 2008
  4. 4. Plan Virtual Machines Serveurs web Framework Web Divers Yann Klis, Novelys, 11 mars 2008
  5. 5. Plan Virtual Machine Yann Klis, Novelys, 11 mars 2008
  6. 6. “Un logiciel ou interpréteur qui isole l'application utilisée par l'utilisateur des spécificités de l'ordinateur.” Wikipedia Yann Klis, Novelys, 11 mars 2008
  7. 7. VM “officielles” Ruby 1.8 aka MRI (Matz' Ruby Implementation) pas très performante green threads (fastthread) YARV et Ruby 1.9 YARV == Yet Another Ruby VM (1 personne) sorti en décembre 2007 pas encore pour la production meilleurs perfs que MRI Yann Klis, Novelys, 11 mars 2008
  8. 8. Rubinius Architecture basée sur Smalltalk-80 “petite” VM écrite en C Ruby pour le reste Intégration des dernières recherches en ingéniérie logicielle Meilleurs perfs que VM 1.8 et 1.9 (dans certains cas) EngineYard (4 personnes) Yann Klis, Novelys, 11 mars 2008
  9. 9. Utilisation de VM existantes JRuby / IronRuby JVM / VM .Net et Dynamic Language Runtime (DLR) Sun + ThoughtWorks (6 personnes) / Microsoft JIT / AOT Interaction avec la VM hôte et le code executé dans d'autres langages Plateforme Libre (Mono) Yann Klis, Novelys, 11 mars 2008
  10. 10. Autres VM Xruby basé sur la JVM compile le code Ruby vers du bytecode Java Cardinal VM Parrot Yann Klis, Novelys, 11 mars 2008
  11. 11. Plan Virtual Machines Serveurs web Yann Klis, Novelys, 11 mars 2008
  12. 12. Chronologie (sur 2 ans) mod_ruby CGI FastCGI (SCGI) Mongrel EventedMongrel (emongrel) Thin Ebb ? mod_rubinius ? Yann Klis, Novelys, 11 mars 2008
  13. 13. Chronologie mod_ruby (Apache) CGI FastCGI (SCGI) Yann Klis, Novelys, 11 mars 2008
  14. 14. Chronologie Mongrel “plain HTTP” parser écrit en Ragel et en C Evented Mongrel (emongrel) - thread, + event (EventMachine) Thin parser de Mongrel (vitesse et sécurité) EventMachine Rack Yann Klis, Novelys, 11 mars 2008
  15. 15. Chronologie (future ?) Ebb libev “mongrel state machine” Rack => quasiment tout en C mod_rubinius module pour Apache et Nginx Yann Klis, Novelys, 11 mars 2008
  16. 16. Quelques chiffres Yann Klis, Novelys, 11 mars 2008
  17. 17. Plan Virtual Machines Serveurs web Frameworks web Yann Klis, Novelys, 11 mars 2008
  18. 18. Problèmes liés à Rails Trop de “hype” (maturité de certains plugins) “thread safety” Montée en charge Rails n'est pas le meilleur outil  pour tous les développements web Yann Klis, Novelys, 11 mars 2008
  19. 19. “Autres” framework Web Ramaze Camping (4k) Nitro Cerise (inspiration de J2EE) Coset (adapteur Rack pour REST) Halcyon (JSON) moins de magie, IOWA adapté à un usage particulier, Unicycle (EventMachine) choix de composants particuliers, Merb basé sur d'autres concepts ... Yann Klis, Novelys, 11 mars 2008
  20. 20. Plan Virtual Machines Serveurs web Frameworks web Divers Yann Klis, Novelys, 11 mars 2008
  21. 21. EventMachine Ruby et C “event driven” (select, epoll, kqueue, etc) Reactor Pattern Comparable à Twisted dans le monde Python Yann Klis, Novelys, 11 mars 2008
  22. 22. EventMachine (2) Concurrency: 20 Requests: 2000 EventMachine: Requests per second: 3327.79/sec (mean) Twisted: Requests per second: 3194.76/sec (mean) Concurrency: 200 Requests: 20000 EventMachine: Requests per second: 4401.80/sec (mean) Twisted: Requests per second: 4761.90/sec (mean) Yann Klis, Novelys, 11 mars 2008
  23. 23. EventMachine (3) require 'rubygems' require 'eventmachine' module Echo def receive_data data send_data data end end EM.run { EM.start_server "0.0.0.0", 10000, Echo } Yann Klis, Novelys, 11 mars 2008
  24. 24. Rack Interface entre un serveur web et un framework Ruby Interface Rack dispo pour Rails, Ramaze, Merb, etc Yann Klis, Novelys, 11 mars 2008
  25. 25. Divers - Shoes Toolkit et gestion de fenêtre Inspiré des pratiques du web Shoes.app { button("Press Me") { alert("You pressed me") } } Yann Klis, Novelys, 11 mars 2008
  26. 26. Divers - Erlang/Ruby Erlectricity Pont entre des processus Erlang et Ruby Fuzed Faire tourner des applis Rails derrière Yaws Yann Klis, Novelys, 11 mars 2008
  27. 27. Divers Starling Gestion de file d'attente développé par Twitter Revactor “Actor” (thread avec boîte aux lettres) S'inspire de Erlang, Scala, etc Yann Klis, Novelys, 11 mars 2008
  28. 28. Conclusion Univers Ruby de plus en plus mature Gestion de la “courbe de hype” Logiciel de plus en plus pointu Logiciel “phare” (EventMachine, Rack, Rubinius) Performance ? Et le “desktop” ? Yann Klis, Novelys, 11 mars 2008
  29. 29. Ressources http://www.rubyinside.com/ http://ramaze.net/#other-frameworks http://rubyforge.org/news/ Merci de votre attention ! (contact@novelys.com) Yann Klis, Novelys, 11 mars 2008

×