Skip to content

Instantly share code, notes, and snippets.

@hwatkins
Created September 30, 2009 18:43
Show Gist options
  • Save hwatkins/198340 to your computer and use it in GitHub Desktop.
Save hwatkins/198340 to your computer and use it in GitHub Desktop.
Where would the target audience becoming from? I assume primarily Java or .NET
I’m not qualified for .NET, but most the questions I get when you mention using Ruby (primarily Rails) instead of Java (J2EE) is they equate that to the View Layer, not the model and controller part.
So I would pick a sample application that would really show the entire stack. Here would be some ideas:
Large Retailer: System allows customers to be notified when product X is back in stock at their local store. The Ruby system must be able to talk back with Mainframe for order shipments and a J2EE application for pricing and customer records. In this case the only model is the “in stock request” the login information for the customer may or may not reside in the Ruby system
Airline: System to send SMS messages about Flight Delays based on Frequent Flyer information. Assume the airlines current Web interface will be where the customer enables this, so there is no user focused View layer instead it’s primarily a web interface that gets toggled for a particular customer. The phone number is stored in the Ruby Model, but the rest of the information about a customer is in Mainframe for flight information and database (terradata) for other Frequent Flyer information.
Electric Power Company: System to dispatch work crews based on trouble calls. System should provide Web interface, SMS interface and integrate with Voice Response system to allow customers to report electric outage, (using phone number, customer id, street address, ect). System integrates with Mainframe for billing information and proprietary UNIX application for power line layout (GIS) information. The power line layout application is used to pinpoint problem location based on aggregate trouble reports.
Gas Company: System to monitor gas pressure across footprint based on network of sensors using cellular communications as the backchannel. Sensors are used to detect leaks. System communicates with proprietary VAX application to close certain vales in the event of leak.
These are just samples to show a real world integration effort between the various types of systems that a “Enterprise Company” would have. The segmentation of data is also important, when do you need to replicate and when can you just use the other systems data. How does data change notification work (triggers, polling, etc)
I think the other big topic would be how do you deploy a Ruby application Network, Hardware, etc. Focus would be:
Linux/UNIX
HAProxy, Keepalived (or other VRRP solution) for HA
Nginx or Apache and Mongrel, Phusion,Unicorn, etc
Capistrano
Chef or Puppet
JRuby/Glassfish if you want to go there
DB: Mysql, Postgres, Oracle, etc (possibly include a Key/Value store like CouchDB if the problem domain fits)
The thing here is that most “enterprise” developers are not concerned with the deployment environment because there is a DBA Group, a Sys Admin Group, possibly a Hardware Group, A network group, etc that handles the deployment. The developer produces a WAR file and a set of instructions, the rest is done by someone else. To pitch a Ruby project they are going to have to be more knowledgeable on a typical deployment architecture.
One of the things I have run into as a developer is that Ruby still does not have the depth of libraries of Python and I have to go back to using python for some stuff. Notable examples are Telcos which use Corba and Sun RPC (ONC-RPC) in their network, both of these are weak or non-existent in Ruby but available in Python (or Java)
One other thing that may be nice is to highlight good uses of Ruby in the Enterprise vs poor choices, although the lines get blurry
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment