1. Écosystème Ruby :
Enjeux et Perspectives
Yann Klis, MiniConf, 11 mars 2008
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. “Rails is the killer app for Ruby.”
Yukihiro Matsumoto, Créateur du langage Ruby
Yann Klis, Novelys, 11 mars 2008
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. 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. 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. 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. Autres VM
Xruby
basé sur la JVM
compile le code Ruby vers du bytecode Java
Cardinal
VM Parrot
Yann Klis, Novelys, 11 mars 2008
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. 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
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. “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
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. 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. 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. 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. 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. 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. 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. 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