SlideShare a Scribd company logo
1 of 28
Download to read offline
JBoss, cloud
  and the
          Rails
      Bob McWhirter
Red Hat Middleware, aka JBoss
wtf, mate?

• I love Ruby and Rails

• I work for a Java company (JBoss)

• Deployment of rails apps is sucky
“Rails can’t scale”
• The Twitter “incident”
• Packs of mongrels (~100mb core
  apiece)

• Not easy to deploy, scalability of admin
  procedures (DRb, memcached, cron)
Do Rails on Java!
• JRuby is Rails-happy
  (jruby.codehaus.org)

• Apparently Glassfish does it
• Any Java appserver can do it with
  Warbler, if you feel like producing
  a .war before deploying
But why?
         Because the Java appserver
    environment provides what you need.

• Don’t have to worry about deploying
  memcached
• Never worry about deploying crontabs
• Enterprisey features like clustering,
  failover, and such
• Works just as well on Windows as Unix
JBoss scales!

• It’s enterprisey

• Plenty of prior art with clustering

• Top-shelf caching (JBossCache)
Do Rails on JBoss
• Deploy mostly “native” Rails app easily
• Doesn’t require bundling of .war files
• Deploys from RAILS_ROOT, changes to
  views & controllers are reflected
  immediately
JBossAS is modular
       environment
JBossAS provides all sorts of useful
services
•   Web
•   Remoting
•   Scheduling
•   Caching
J2EE is just one way of
        doing it
• All apps boil down to controllers,
  views, and other components
• Ruby/Rails is just yet-another-
  programming model for describing
  components
• Map them to enterprisey Java
  infrastructure
but...
don’t make me think too much about java!
Start with JRuby-Rack
http://github.com/nicksieger/jruby-rack/tree/master




• Speaks Java Servlet API on one side
• And Ruby Rack on the other
• Works with Rails, Merb, and anything
  Rack-happy
jboss-rails.deployer
• Wires it up to a Tomcat context
• Looks at the RAILS_ROOT
• Provides jruby.jar
• Integrates app with JRuby-Rack,
  magically
jboss-rails-plugin

• Just some Rake tasks, that’s all
  • start up JBossAS
  • deploy/undeploy your app
• You don’t even really need it
rake jboss:as:*
    Once you’ve set $JBOSS_HOME...


rake jboss:as:run

rake jboss:as:run:cluster
rake jboss:rails:jdbc:*
• rake jboss:rails:jdbc:install
  :derby
  :h2
  :hsql         Installs the appropriate JDBC drivers
  :mysql          into your vendor/plugins/
  :postgresql
  sqlite3
rake jboss:rails:*


rake jboss:rails:deploy
rake jboss:rails:undeploy
What’s it mean to
       deploy?
Drop a deployment-descriptor into the
server’s deploy/ directory.
myapp-rails.yml

application:
  RAILS_ENV: development
  RAILS_ROOT: /home/bob/myapp
web:
  context: /
Deployment Descriptor
• It’s like a symlink pointing to the
  application’s codebase (RAILS_ROOT)
• It embodies the RAILS_ENV for the
  deployment
• It describes the context to bind the
  app, since appservers can deploy many
  sometimes-overlapping apps
What about
         capistrano?
• Same capistrano deployment process
• “create-symlink” actually should create
  deployment descriptor
• Instead of bouncing mongrel, should do
  nothing at all (JBoss auto-hot-
  deploys)
And then the cloud...
“Cloud” is just
      virtualization
• Xen instances
• VMWare instances
• Amazon EC2
Basic Premise

• Enough Linux to run JBoss

• JBoss baked in

• Clustering configured & ready
Red Hat Thincrust
      http://thincrust.net/
• Mixture of Kickstart, RPMs, and Yum
• Produces machine images with “just
  enough” OS
• Bakes in any other packages needed
• Wires up auto-updating and
  reconfiguration using Puppet and magic
JBoxx

• A “Fedora Remix” (trademark pending)
  based on a minimal Fedora 9
• Includes JBossAS 5 (the latest &
  greatest)
• Includes jboss-rails.deployer
JBoxx on EC2

• One-click(tm) spinning of new nodes in
  a cluster
• Nodes auto-merge into existing cluster
  through JGroups
Issues
• EC2 uses runlevel 4, wtf?
• EC2 disabled multicast, need to wire up
  JGroup Gossip rendezvous
• Need appliances for DBs, load-
  balancers
• Need scripts for cluster management
Resources
• My Blog
http://fnokd.com/
• Code on GitHub
http://github.com/bobmcwhirter/jboss-rails

http://github.com/bobmcwhirter/jboss-rails-plugin


and several others...

More Related Content

What's hot

ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
Christian Posta
 

What's hot (20)

WebAssembly vs JavaScript: What is faster?
WebAssembly vs JavaScript: What is faster?WebAssembly vs JavaScript: What is faster?
WebAssembly vs JavaScript: What is faster?
 
WebAssembly overview. KievJS meetup
WebAssembly overview. KievJS meetupWebAssembly overview. KievJS meetup
WebAssembly overview. KievJS meetup
 
Azkaban-en
Azkaban-enAzkaban-en
Azkaban-en
 
ActiveMQ 5.9.x new features
ActiveMQ 5.9.x new featuresActiveMQ 5.9.x new features
ActiveMQ 5.9.x new features
 
WebAssembly in Houdini CSS, is it possible?
WebAssembly in Houdini CSS, is it possible?WebAssembly in Houdini CSS, is it possible?
WebAssembly in Houdini CSS, is it possible?
 
Agile sites311training
Agile sites311trainingAgile sites311training
Agile sites311training
 
Maven
Maven Maven
Maven
 
DotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactDotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + react
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
 
Vagrant&ansible
Vagrant&ansibleVagrant&ansible
Vagrant&ansible
 
Web a Quebec - JS Debugging
Web a Quebec - JS DebuggingWeb a Quebec - JS Debugging
Web a Quebec - JS Debugging
 
Improved development workflows using vagrant
Improved development workflows using vagrantImproved development workflows using vagrant
Improved development workflows using vagrant
 
Play framework
Play frameworkPlay framework
Play framework
 
Agile sites @ telmore
Agile sites @ telmore Agile sites @ telmore
Agile sites @ telmore
 
Agile sites2
Agile sites2Agile sites2
Agile sites2
 
Putting the 'ctions' in Azure Fun-ctions
Putting the 'ctions' in Azure Fun-ctionsPutting the 'ctions' in Azure Fun-ctions
Putting the 'ctions' in Azure Fun-ctions
 
CFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful CodeCFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful Code
 
Jenkins Job Builder: our experience
Jenkins Job Builder: our experienceJenkins Job Builder: our experience
Jenkins Job Builder: our experience
 
Apache Camel in the belly of the Docker whale
Apache Camel in the belly of the Docker whaleApache Camel in the belly of the Docker whale
Apache Camel in the belly of the Docker whale
 
MariaDB - The Future of MySQL?
MariaDB - The Future of MySQL?MariaDB - The Future of MySQL?
MariaDB - The Future of MySQL?
 

Similar to JBoss, Rails and the cloud

Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Nilesh Panchal
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
elliando dias
 

Similar to JBoss, Rails and the cloud (20)

Jaoo Michael Neale 09
Jaoo Michael Neale 09Jaoo Michael Neale 09
Jaoo Michael Neale 09
 
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
Play Framework + Docker + CircleCI + AWS + EC2 Container ServicePlay Framework + Docker + CircleCI + AWS + EC2 Container Service
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
 
Crank Up Your Apps With TorqueBox
Crank Up Your Apps With TorqueBoxCrank Up Your Apps With TorqueBox
Crank Up Your Apps With TorqueBox
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOps
 
LASUG Online: Introduction to Docker and Docker Tools
LASUG Online: Introduction to Docker and Docker ToolsLASUG Online: Introduction to Docker and Docker Tools
LASUG Online: Introduction to Docker and Docker Tools
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
An introduction to Rails 3
An introduction to Rails 3An introduction to Rails 3
An introduction to Rails 3
 
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Test like a_boss
Test like a_bossTest like a_boss
Test like a_boss
 
Fluxible
FluxibleFluxible
Fluxible
 
Introduction to Containers - SQL Server and Docker
Introduction to Containers - SQL Server and DockerIntroduction to Containers - SQL Server and Docker
Introduction to Containers - SQL Server and Docker
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 

More from elliando dias

Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
elliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
elliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
elliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
elliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
elliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 

More from elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Recently uploaded

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

JBoss, Rails and the cloud

  • 1. JBoss, cloud and the Rails Bob McWhirter Red Hat Middleware, aka JBoss
  • 2. wtf, mate? • I love Ruby and Rails • I work for a Java company (JBoss) • Deployment of rails apps is sucky
  • 3. “Rails can’t scale” • The Twitter “incident” • Packs of mongrels (~100mb core apiece) • Not easy to deploy, scalability of admin procedures (DRb, memcached, cron)
  • 4. Do Rails on Java! • JRuby is Rails-happy (jruby.codehaus.org) • Apparently Glassfish does it • Any Java appserver can do it with Warbler, if you feel like producing a .war before deploying
  • 5. But why? Because the Java appserver environment provides what you need. • Don’t have to worry about deploying memcached • Never worry about deploying crontabs • Enterprisey features like clustering, failover, and such • Works just as well on Windows as Unix
  • 6. JBoss scales! • It’s enterprisey • Plenty of prior art with clustering • Top-shelf caching (JBossCache)
  • 7. Do Rails on JBoss • Deploy mostly “native” Rails app easily • Doesn’t require bundling of .war files • Deploys from RAILS_ROOT, changes to views & controllers are reflected immediately
  • 8. JBossAS is modular environment JBossAS provides all sorts of useful services • Web • Remoting • Scheduling • Caching
  • 9. J2EE is just one way of doing it • All apps boil down to controllers, views, and other components • Ruby/Rails is just yet-another- programming model for describing components • Map them to enterprisey Java infrastructure
  • 10. but... don’t make me think too much about java!
  • 11. Start with JRuby-Rack http://github.com/nicksieger/jruby-rack/tree/master • Speaks Java Servlet API on one side • And Ruby Rack on the other • Works with Rails, Merb, and anything Rack-happy
  • 12. jboss-rails.deployer • Wires it up to a Tomcat context • Looks at the RAILS_ROOT • Provides jruby.jar • Integrates app with JRuby-Rack, magically
  • 13. jboss-rails-plugin • Just some Rake tasks, that’s all • start up JBossAS • deploy/undeploy your app • You don’t even really need it
  • 14. rake jboss:as:* Once you’ve set $JBOSS_HOME... rake jboss:as:run rake jboss:as:run:cluster
  • 15. rake jboss:rails:jdbc:* • rake jboss:rails:jdbc:install :derby :h2 :hsql Installs the appropriate JDBC drivers :mysql into your vendor/plugins/ :postgresql sqlite3
  • 17. What’s it mean to deploy? Drop a deployment-descriptor into the server’s deploy/ directory.
  • 18. myapp-rails.yml application: RAILS_ENV: development RAILS_ROOT: /home/bob/myapp web: context: /
  • 19. Deployment Descriptor • It’s like a symlink pointing to the application’s codebase (RAILS_ROOT) • It embodies the RAILS_ENV for the deployment • It describes the context to bind the app, since appservers can deploy many sometimes-overlapping apps
  • 20. What about capistrano? • Same capistrano deployment process • “create-symlink” actually should create deployment descriptor • Instead of bouncing mongrel, should do nothing at all (JBoss auto-hot- deploys)
  • 21. And then the cloud...
  • 22. “Cloud” is just virtualization • Xen instances • VMWare instances • Amazon EC2
  • 23. Basic Premise • Enough Linux to run JBoss • JBoss baked in • Clustering configured & ready
  • 24. Red Hat Thincrust http://thincrust.net/ • Mixture of Kickstart, RPMs, and Yum • Produces machine images with “just enough” OS • Bakes in any other packages needed • Wires up auto-updating and reconfiguration using Puppet and magic
  • 25. JBoxx • A “Fedora Remix” (trademark pending) based on a minimal Fedora 9 • Includes JBossAS 5 (the latest & greatest) • Includes jboss-rails.deployer
  • 26. JBoxx on EC2 • One-click(tm) spinning of new nodes in a cluster • Nodes auto-merge into existing cluster through JGroups
  • 27. Issues • EC2 uses runlevel 4, wtf? • EC2 disabled multicast, need to wire up JGroup Gossip rendezvous • Need appliances for DBs, load- balancers • Need scripts for cluster management
  • 28. Resources • My Blog http://fnokd.com/ • Code on GitHub http://github.com/bobmcwhirter/jboss-rails http://github.com/bobmcwhirter/jboss-rails-plugin and several others...