Have you ever wondered how efficient software development would be, if you could open up your Integrated Development Environment (IDE) and focus on your domain-specific logic and needs, right from day #1? And not bother about architecting and configuring your development environment for days? Platform as a Service (PaaS) represents just such a zeitgeist in the industry.
Platforms that allow us to immediately code our core business processes with ease, without having to spend too much time configuring environments, have surfaced time and time again in the industry. Groupware platforms like Lotus Notes or customizable SaaS products like salesforce are historical examples of facilitation for quick-start, domain-focused development. However, most of these earlier attempts seem to have fallen short of being completely flexible platforms for bespoke software development.
With today’s advancement in cloud computing technology and the resulting shift towards distributed development over the Internet, we once again have quick-start domain-focused development knocking on the door – in the form of “Platform as a Service”. This time there seems to be real hope.
Let me briefly explain the basic concept behind PaaS.
There are many “common needs” when developing a web app with transactional support, say for a commercial enterprise. User management, security, concurrency management, scalability, persistence and failover would all be a common requirement of bespoke development projects. Integrated lifecycle management measures like configuration management, continuous integration, code analysis and unit test cases are usually essential environmental requirements of any sizable development project. Furthermore, in today’s age of shared services on the Internet, one might want to bridge one’s bespoke apps with best of breed service infrastructures like OpenID login or Amazon S3 file storage. Perhaps, it would also be a common requirement (if it isn’t already) to integrate apps with Social Media like Facebook, passing certain information to be shared publicly.
Traditionally, we’d have to piece together “by hand” the requisite development environment and architect our project’s code structure. Most of us who have done this know that this requires a lot of thought and a ton of configurations in various components of the environment; not to mention figuring out the design for service integrations.
PaaS has envisioned to addresses just this problem – it allows us to register over the Internet with a provider, configure a development environment in a simple way – plugging in different “cartridges” into the environment like the required technology stack and service integrations – and sync one’s local Integrated Development Environments with it (usually via a downloaded plug-in). Presto! We will have on our local machines a ready-for-development project that has all the environmental configurations wired, with the appropriate package structure and requisite files to address all our common infrastructure needs. The software that needs to run locally and remotely – web server, database, life-cycle management tools, the lot – will have been configured and structured in our local code-base. We’d just have to write our custom code that governs the business logic and user experience, and check-in! At least, that’s the concept in theory.
The most notorious early strider towards the PaaS direction is of course Google’s AppEngine, but more recent examples of cloud-based, “quick-start” integrated development providers include OpenShift, appfog and Stackato. They all have their pros and cons, and there are many online comparisons1, 2 available for those who are interested.
Calcey Technologies is a strong proponent of PaaS, having exploited several leading providers like AppEngine and AWS to the advantage of our clients.
- A Java Developer’s Guide to PaaS: http://www.infoq.com/articles/paas_comparison
- Conducting a PaaS Comparison: http://apprenda.com/library/paas/conducting-a-paas-comparison/