Thursday, May 5, 2011

Redhat OpenShift

I was at the Redhat Jboss conference this week during the announcement of OpenShift. I met some of the guys behind OpenShift and they were all great and very patiently answered all my questions and you can tell are very exited about OpenShift. So thank you to all of them that spoke with me.

First I started with OpenShift Express which is aimed at developers. The only thing bad I have to say is it doesn't yet support java. They say java is coming so I will wait patiently. There really isn't much to say about it that isn't covered on the main page, but it is simply insanely easy to use. Keeping in mind this is aimed at developers the following makes sense: git is the deployment mechanism. What that means is that once the OpenShift platform receives a "git push" it deploys the application automatically (remember this is the developer version read on for the Flex version).

To get this up an running you install the Redhat command line tools which are written in ruby so they run everywhere (although on my apple leopard I had to reinstall ruby from source to get it to work though this seems to be an OSX 10.5 problem). Also one note on the mac is you will need to install git. I just got this computer last week so I hadn't gotten git on here yet (that's my excuse). Once you run through a couple commands to create your domain and app make a change and run "git push" and your changes are deployed. I sat through about 5 demos where someone changed something on the default app that gets created and it really does take about 3 minutes soup to nuts to get a php app deployed. Also with OpenShift Express Redhat foots the bill for the amazon instances that are running behind everything.

OpenShift Express is a tool for developers, and it is quite possibly something that will really change the way development happens as developers push changes out to public urls and can setup multiple applications that can be used for rapid feedback and qa reviews at the feature level (or at least developer level) very easily. Although I think this is something that can happen with cloud technologies today it is not something that does happen as part of a routine development process...though this is only my anecdotal experience. I wouldn't use OpenShift Express as the primary source of any information including the git repo as there are no SLAs and as I understand it the data is not backed-upped at this point. Depending on how you use this however it shouldn't be a big impediment for adoption, just something to be aware of.

OpenShift Flex is about tools for production deployments (there is also another one coming called OpenShift Power which is not out yet). OpenShift Flex already supports java (both JBoss and Tomcat) and is a product geared towards an operations team as opposed to a developer. I ran though their tutorial and got a sample ear file up and running on JBoss 6 without any trouble very quickly. It runs on the Amazon infrastructure today and more I think will be added later.

Also an extremely cool thing about this whole thing is that running in the same AWS zone you also get a shared file system using Gluster. I don't think any other PaaS does anything like this. Sure there are concepts that solve the problem but dealing with a file is easy and well understood as opposed to a cloud file or an S3 bucket. Sometimes you just want a file is I guess the best way to put it.

I didn't have a lot of time to play with the database scaling and how it scales from one machine to multiple machines and where it puts the database (i.e. going from a collapsed architecture to a multi tier architecture with one db and multiple app servers). Scaling is however all built into the architecture with a couple different scaling options that although look basic are probably going to cover 90% of what you need and the product is only 2 days old. They are also super easy to use.

One final note is that if you want to setup a geographic fail over you will need to do some work yourself around the file systems and the database. Data replication is not built into the product so you would need to set this up yourself by controlling the database tier outside of OpenShift or syncing it in some other manner and you will need to sync the file systems to a separate geographic site. Depending on your app of course this may not be important to you.