Image via CrunchBase
This is the third post in the PaaS is the future of cloud services series but a long overdue one. The focus of the series is to highlight the fact that PaaS, not IaaS, is going to play an important role in the future of cloud services because of the value it brings to any organization interested in embracing cloud computing. In my last post, I highlighted how VMWare realizes this future and partnered with Salesforce.com to offer VMforce platform. Venture capitalists are also seeing such a PaaSy future and it was evident from the news that came out on Monday. Heroku, a Ruby based PaaS provider, has secured $10 Million Series B funding led by Ignition along with existing investors Redpoint Ventures, Baseline Ventures, and Harrison Metal Capital. This is going to push this Y-Combinator kid further into the PaaS game and position themselves as a leading player in the PaaSy future. They already have more than 60,000 apps deployed on their platform and additional funding will help them expand further. In this post, I am going to dig a bit deeper into Heroku’s offerings.
Simple Workflow: Heroku greatly simplifies the life of developers making it easy for anyone to create, deploy and manage apps on the cloud. Let me briefly discuss how it is done and then dig a little bit on their architecture. With Heroku, creating apps are very simple. For example,
$ sudo gem install heroku
$ heroku create yourappname
Once created, the deployment process is same as what many of the developers are already familiar with, a Git workflow. The deployment process is a push to the repo inside Heroku and, bingo, the app is ready. Everything else needed for the app can be managed by their API.
Simplified Architecture: PaaS is exciting because it completely abstracts away all the underlying complexity for the developers. They just don’t have to worry about failing hardware, network issues, scaling, etc.. That is exactly what Heroku is offering to developers. They abstract away everything from the hardware to virtual machines to middleware to framework. The developers have to write the code and push it into Heroku platform and watch it scale based on how exciting their app is for the users. It can’t get any easier than that for the developers. As it is the case with any aaS offering, Heroku platform is multi-tenant platform offering high performance and scalability. Let me now discuss the underlying nuts and bolts of the Heroku platform briefly. Even though the advantage of PaaS is not to worry about the underlying nuts and bolts, it is important that we understand the underlying dynamics before investing on a platform service.
From the application users point of view, their platform has an entry layer comprising of HTTP reverse proxy, HTTP cache and a routing mesh. HTTP reverse proxy handles the the http-level processing such as SSL and gzip compression before the requests are passed on to HTTP cache. Most of the modern web applications have a caching mechanism built in to offer much higher performance for the applications. As the request comes into the cache, it responds if it has the content cached already with immediate results. If not, it passes it on to the routing mesh which balances the requests by routing intelligently to the available computing resources. The computing resources include a highly scalable dyno grid, scalable databases and memory based caching system.
From the application developers point of view, when they push the code into the Heroku platform, it compiles their code into what is called as Slugs, a self contained read only version of the app including all the required libraries. This compiled code is then run on Dynos, a single process running the ruby code on the servers in the Heroku grid. It is similar to Mongrel application server but it can run on multiple servers. The servers in the Heroku grid are Amazon EC2 instances running on Amazon datacenters. Based on the traffic for the app, the developers can increase the number of dynos to scale. Since the app is already compiled into ready to run “containers”, the dynos can be started in 2 seconds, allowing a seamless scaling. Each dyno contains the app along with the framework (Rails or Sinatra depending on whether it is a full app or lightweight app), middleware, App Server, Ruby VM and a POSIX environment. By taking the POSIX route, they are implementing the battle tested unix permissions system over a security model running inside the Ruby VM. This ensures that the apps are running in a secure environment completely isolated from other tenants in the system.
Simple Extensibility: The high point of Heroku platform is their Addons offerings. These are third party solutions like Amazon RDS, WebSolr, Memcache, etc. and other value added functionalities like Cron processes, SSL, etc., which developers can easily integrate inside their apps. I spoke with both an add-on provider, Northscale offering Memcache, and a developer. The Northscale folks told me that it is extremely easy for them to plug their services into the Heroku platform. They said Heroku platform offered them a faster access to the market without worrying about the nitty gritty tasks like billing, reporting, etc.. They just have to send a small file containing some config information. As simple as that. From the developers side, they can add any of the addons with a few clicks. They have to select the “size” of the addon, pay with a credit card and the addon is ready to be integrated inside their app with a slight modification of their code. The addon marketplace is going to be one of the biggest factors in Heroku’s success. In fact, for any PaaS offering to be successful, it is important that their platform is extensible like Heroku’s platform. In some of the future posts in this series, I am going to dig deeper into the extensibility of the plarforms and also about some of the service providers offering their services through such addon marketplace.
Conclusion: Heroku has set a bar on the kind of platform services that can be offered in the marketplace. Of course, not everyone likes such a higher levels of abstractions. Heroku competitors like Engine Yard are filling up those gaps (I will write about Engine Yard in this space one day). But by making app development child’s play, Heroku has pushed the envelope further up. Google App Engine and Microsoft Azure (well, Microsoft is planning to open up VM level access and it may not entirely fit in the mold of Heroku) are doing the same but Heroku has the momentum. It will be interesting to see the evolution of Heroku as they now have the necessary financial backup.