SlideShare una empresa de Scribd logo
1 de 44
Enterprise Hosting
    Workshop
  Ruby on Rails Application Server




                Julian Fischer
         fischer@enterprise-rails.de
       http://www.enterprise-rails.de
Ruby/RACK/Rails
Application Server
Application Server
     Übersicht
Application Server




               @railshoster
Application Server
       Thin
Thin




       @railshoster
Thin

‣ Verwendet den Mongrel Parser.




                 @railshoster
Thin

‣ Verwendet den Mongrel Parser.
‣ Setzt auf EventMachine auf.




                  @railshoster
Thin

‣ Verwendet den Mongrel Parser.
‣ Setzt auf EventMachine auf.
‣ Vollständig RACK kompatibel.




                  @railshoster
Thin

‣ Verwendet den Mongrel Parser.
‣ Setzt auf EventMachine auf.
‣ Vollständig RACK kompatibel.
‣ Serviert nur eine einzelne App-Instanz



                  @railshoster
Thin




       @railshoster
Thin


‣ Es müssen mehrere Thin-Instanzen auf
 mehren Ports betrieben werden.




                 @railshoster
Thin


‣ Es müssen mehrere Thin-Instanzen auf
  mehren Ports betrieben werden.

‣ Einwenn nur ein App-Server vorhandenbenötigt.
  Auch
       Load Balancer wird
                                      ist.




                         @railshoster
Thin


‣ Es müssen mehrere Thin-Instanzen auf
  mehren Ports betrieben werden.

‣ Einwenn nur ein App-Server vorhandenbenötigt.
  Auch
       Load Balancer wird
                                      ist.



‣ Ein Prozessmonitor (z.B. Monit) sollte die
  Thins bewachen und ggf. neustarten.




                         @railshoster
Application Server
      Monit
Application Server




               @railshoster
Application Server

Monit




               @railshoster
http://mmonit.com/monit/
Eignet sich auch für das aktive,
   eingreifende Monitoring
    vieler andere Prozesse,
        z.B. RabbitMQ.
Application Server
     Passenger
Passenger




            @railshoster
Passenger


‣ Plugin für Apache Webserver




                 @railshoster
Passenger


‣ Plugin für Apache Webserver
‣ Plugin für NGINC Webserver




                 @railshoster
Passenger


‣ Plugin für Apache Webserver
‣ Plugin für NGINC Webserver
‣ Standalone Version




                 @railshoster
Passenger




            @railshoster
Passenger


‣ Gut in Kombination mit Ruby Enterprise
  Edition (Ruby 1.8.7)




                  @railshoster
Passenger


‣ Gut in Kombination mit Ruby Enterprise
  Edition (Ruby 1.8.7)

‣ Bis zu 33% Speicherersparnis




                  @railshoster
Passenger


‣ Gut in Kombination mit Ruby Enterprise
  Edition (Ruby 1.8.7)

‣ Bis zu 33% Speicherersparnis
 ‣ Tuned GC




                  @railshoster
Passenger


‣ Gut in Kombination mit Ruby Enterprise
  Edition (Ruby 1.8.7)

‣ Bis zu 33% Speicherersparnis
 ‣ Tuned GC
‣ Integriert sich gut in NGINX/Apache


                  @railshoster
Passenger


‣ Gut in Kombination mit Ruby Enterprise
  Edition (Ruby 1.8.7)

‣ Bis zu 33% Speicherersparnis
 ‣ Tuned GC
‣ Integriert sich gut in NGINX/Apache
 ‣ Liefert auch statische Inhalte
   aus ohne dabei den Rails-Stack zu durchlaufen.


                           @railshoster
Application Server
     Unicorn
Unicorn




          @railshoster
Unicorn


‣ Designed for Rack & Unix gewinnen.
  Nutzt OS Libs wo möglich um Performance zu




                       @railshoster
Unicorn


‣ Designed for Rack & Unix gewinnen.
  Nutzt OS Libs wo möglich um Performance zu



‣ Process management startet abgestorbene Instanzen
  Verwaltet mehrere App-Instanzen und
  neu. Ein Load Balancer ist somit bei einem einzelnen App-Server nicht
  erforderlich.




                              @railshoster
Unicorn


‣ Designed for Rack & Unix gewinnen.
  Nutzt OS Libs wo möglich um Performance zu



‣ Process management startet abgestorbene Instanzen
  Verwaltet mehrere App-Instanzen und
  neu. Ein Load Balancer ist somit bei einem einzelnen App-Server nicht
  erforderlich.



‣ Vollständiger RACK Support
  => Rails & Sinatra Support




                              @railshoster
Mehr über Unicorn

 http://rh.gd/s9a8PX
Application Server
  Thin vs. Unicorn
Thin                           Unicorn
                  Thin vs. Unicorn [Requests / s]
15000


                                                    8,012
11250
          6,774


 7500



 3750                                               4,347
          3,638



    0
        1 Instance                             3 Instances
http://rh.gd/rKXakt
Links
Links
Links

‣ Thin
 http://code.macournoyer.com/thin/
Links

‣ Thin
 http://code.macournoyer.com/thin/

‣ Unicorn
 http://unicorn.bogomips.org/
Links

‣ Thin
 http://code.macournoyer.com/thin/

‣ Unicorn
 http://unicorn.bogomips.org/

‣ Phusion Passenger
 http://www.modrails.com/index.html

Más contenido relacionado

Más de Avarteq

Kanban - Classes of Service
Kanban - Classes of ServiceKanban - Classes of Service
Kanban - Classes of ServiceAvarteq
 
Kanban - Set Work in Progress Limits
Kanban - Set Work in Progress LimitsKanban - Set Work in Progress Limits
Kanban - Set Work in Progress LimitsAvarteq
 
Kanban - Set a pace for the input
Kanban - Set a pace for the inputKanban - Set a pace for the input
Kanban - Set a pace for the inputAvarteq
 
Kanban – Visualizing the value chain
Kanban – Visualizing the value chain Kanban – Visualizing the value chain
Kanban – Visualizing the value chain Avarteq
 
Kanban - Establish a Delivery Rhythm
Kanban - Establish a Delivery RhythmKanban - Establish a Delivery Rhythm
Kanban - Establish a Delivery RhythmAvarteq
 
Kanban - How to coordinate with Kanban
Kanban - How to coordinate with KanbanKanban - How to coordinate with Kanban
Kanban - How to coordinate with KanbanAvarteq
 
Kanban: Kaizen - Culture of continuous improvement
Kanban: Kaizen - Culture of continuous improvementKanban: Kaizen - Culture of continuous improvement
Kanban: Kaizen - Culture of continuous improvementAvarteq
 
Kanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersKanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersAvarteq
 
Kanban - A recipe for success
Kanban - A recipe for successKanban - A recipe for success
Kanban - A recipe for successAvarteq
 
The Kanban method
The Kanban methodThe Kanban method
The Kanban methodAvarteq
 
Kanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerKanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerAvarteq
 
Ruby Grundlagen
Ruby GrundlagenRuby Grundlagen
Ruby GrundlagenAvarteq
 
Opscode Chef - Grundlagen
Opscode Chef - GrundlagenOpscode Chef - Grundlagen
Opscode Chef - GrundlagenAvarteq
 
Einführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenEinführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenAvarteq
 
RabbitMQ mit (J)Ruby
RabbitMQ mit (J)RubyRabbitMQ mit (J)Ruby
RabbitMQ mit (J)RubyAvarteq
 
Enterprise rails hosting 3 ways to scale - 2011-10
Enterprise rails hosting   3 ways to scale - 2011-10 Enterprise rails hosting   3 ways to scale - 2011-10
Enterprise rails hosting 3 ways to scale - 2011-10 Avarteq
 
Julian Fischer Ruby On Rails
Julian Fischer   Ruby On RailsJulian Fischer   Ruby On Rails
Julian Fischer Ruby On RailsAvarteq
 
Mehrserver Lösungen
Mehrserver LösungenMehrserver Lösungen
Mehrserver LösungenAvarteq
 
Enterprise Hosting
Enterprise HostingEnterprise Hosting
Enterprise HostingAvarteq
 

Más de Avarteq (20)

Kanban - Classes of Service
Kanban - Classes of ServiceKanban - Classes of Service
Kanban - Classes of Service
 
Kanban - Set Work in Progress Limits
Kanban - Set Work in Progress LimitsKanban - Set Work in Progress Limits
Kanban - Set Work in Progress Limits
 
Kanban - Set a pace for the input
Kanban - Set a pace for the inputKanban - Set a pace for the input
Kanban - Set a pace for the input
 
Kanban – Visualizing the value chain
Kanban – Visualizing the value chain Kanban – Visualizing the value chain
Kanban – Visualizing the value chain
 
Kanban - Establish a Delivery Rhythm
Kanban - Establish a Delivery RhythmKanban - Establish a Delivery Rhythm
Kanban - Establish a Delivery Rhythm
 
Kanban - How to coordinate with Kanban
Kanban - How to coordinate with KanbanKanban - How to coordinate with Kanban
Kanban - How to coordinate with Kanban
 
Kanban: Kaizen - Culture of continuous improvement
Kanban: Kaizen - Culture of continuous improvementKanban: Kaizen - Culture of continuous improvement
Kanban: Kaizen - Culture of continuous improvement
 
Kanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersKanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quarters
 
Kanban - A recipe for success
Kanban - A recipe for successKanban - A recipe for success
Kanban - A recipe for success
 
The Kanban method
The Kanban methodThe Kanban method
The Kanban method
 
Kanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerKanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile Manager
 
Ruby Grundlagen
Ruby GrundlagenRuby Grundlagen
Ruby Grundlagen
 
Opscode Chef - Grundlagen
Opscode Chef - GrundlagenOpscode Chef - Grundlagen
Opscode Chef - Grundlagen
 
Einführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenEinführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - Voraussetzungen
 
RabbitMQ mit (J)Ruby
RabbitMQ mit (J)RubyRabbitMQ mit (J)Ruby
RabbitMQ mit (J)Ruby
 
JRuby
JRubyJRuby
JRuby
 
Enterprise rails hosting 3 ways to scale - 2011-10
Enterprise rails hosting   3 ways to scale - 2011-10 Enterprise rails hosting   3 ways to scale - 2011-10
Enterprise rails hosting 3 ways to scale - 2011-10
 
Julian Fischer Ruby On Rails
Julian Fischer   Ruby On RailsJulian Fischer   Ruby On Rails
Julian Fischer Ruby On Rails
 
Mehrserver Lösungen
Mehrserver LösungenMehrserver Lösungen
Mehrserver Lösungen
 
Enterprise Hosting
Enterprise HostingEnterprise Hosting
Enterprise Hosting
 

Ruby, RACK und Ruby on Rails Application Server 2012

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n