29
Yann Klis, MiniConf, 11 mars 2008 Écosystème Ruby : Enjeux et Perspectives

Écosystème Ruby : Enjeux et Perspectives

  • Upload
    novelys

  • View
    970

  • Download
    4

Embed Size (px)

DESCRIPTION

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

Citation preview

Yann Klis, MiniConf, 11 mars 2008

Écosystème Ruby :Enjeux et Perspectives

Yann Klis, Novelys, 11 mars 2008

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

“Rails is the killer app for Ruby.”Yukihiro Matsumoto, Créateur du langage Ruby

Yann Klis, Novelys, 11 mars 2008

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.”Wikipedia

Yann Klis, Novelys, 11 mars 2008

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

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

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

Autres VM

Xruby

basé sur la JVM

compile le code Ruby vers du bytecode Java

Cardinal

VM Parrot

Yann Klis, Novelys, 11 mars 2008

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_rubinius ?

Yann Klis, Novelys, 11 mars 2008

Chronologiemod_ruby (Apache)

CGI

FastCGI

(SCGI)

Yann Klis, Novelys, 11 mars 2008

ChronologieMongrel

“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

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

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

Rails n'est pas le meilleur outil pour tous les développements web

Yann Klis, Novelys, 11 mars 2008

“Autres” framework WebRamaze

Camping (4k)

Nitro

Cerise (inspiration de J2EE)

Coset (adapteur Rack pour REST)

Halcyon (JSON)

IOWA

Unicycle (EventMachine)

Merb...

moins de magie,adapté à un usage

particulier,choix de composants

particuliers,basé sur d'autres concepts

Yann Klis, Novelys, 11 mars 2008

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 Python

Yann Klis, Novelys, 11 mars 2008

EventMachine (2)

Concurrency: 20Requests: 2000

EventMachine: Requests per second: 3327.79/sec (mean)Twisted: Requests per second: 3194.76/sec (mean)

Concurrency: 200Requests: 20000

EventMachine: Requests per second: 4401.80/sec (mean)Twisted: Requests per second: 4761.90/sec (mean)

Yann Klis, Novelys, 11 mars 2008

EventMachine (3)

require 'rubygems'require 'eventmachine'

module Echo def receive_data data send_data data endend

EM.run { EM.start_server "0.0.0.0", 10000, Echo}

Yann Klis, Novelys, 11 mars 2008

Rack

Interface entre un serveur web et un framework Ruby

Interface Rack dispo pour Rails, Ramaze, Merb, etc

Yann Klis, Novelys, 11 mars 2008

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

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

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

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

Ressources

Merci de votre attention !

http://www.rubyinside.com/

http://ramaze.net/#other-frameworks

http://rubyforge.org/news/

([email protected])