Cloud Computing has slowly but surely seeped into every aspect of technology. All the Cloud-in-a-box, not-in-a-box, babble notwithstanding, there has been steady progress made on multiple fronts. With the challenges around Infrastructure-as-a-service (IaaS) all but conquered, technology vendors have firmly and steadily moved up the stack to kill the Platform-as-a-Service(PaaS) monster. In attacking the multitude of challenges and ways to attack them Platform-as-a-Service vendors seem to have taken “There are many ways to skin a cat” adage literally. If you look around you will find scores of vendors attacking the challenge of providing a Platform-as-a-Service, that can meet all the needs of the future enterprise in cloud, from different angles.
While the definition of what constitutes a PaaS is broad and murky, various personalities, diverse at that, seem to have definitely emerged.
Personality #1: Application Development Platform
There is a school of thought that with all the technology advances – extensive self-service, mobile access, social interactions etc, companies will (and must) revisit all their existing applications and in most cases re-write them. Ongoing management of legacy applications is fraught with challenges, be it
- disappearing skill sets (think Cold Fusion developers),
- hardware compatibility issues (think archaic warehouse scanner applications)
- upgrading to new access models like iPhone, Android (think homegrown mainframe COBOL application).
With all the advances in open source technologies, productivity focused technologies like Ruby-on-Rails and abundant skilled labor for the latest technologies, cloud based platforms, now is as good a time as any for rationalizing legacy applications.
Companies like Salesforce.com (Force.com), Microsoft (Azure), Google (AppEngine), Heroku, all have built excellent development platforms to help companies refresh their application portfolios with latest technology based replacements. With these platforms, one could re-write the applications in a short span of time using some of the pre-baked widgets, wizards and templates. While there is still some gap in capabilities between the commercial PaaS application frameworks available today to the on-premise frameworks used by mid-to-large-ISVs, the progress has been steady and the victory (parity) line is well in sight.
These commercial application platforms do a great job at providing IT organizations/ISVs with an application stack that allows them to build a brand new application. They do not have to deal with the vagaries of the underlying technology components, their assembly, interoperability and licensing. In the best case, they support multiple infrastructure-as-a-service providers without you having to deal with the compatibility issues and also preventing any IaaS lock-in. I wrote about some of the key ingredients that go into a good platform-as-a-service in one of my previous posts but here are things you should look for at a minimum:
- Ability to define your custom business objects and extend standard objects.
- Build relationship between one or more objects
- A standard relational database (best case) or a proprietary database (worst case) as a datastore.
- Wizards to generate CRUD UI around the objects
- A good library of standard templates, widgets, components to build rich UI that conforms to multiple form factors (desktop, mobile etc)
- Capabilities to build custom logic using standards based language (best case) or their proprietary scripting language (worst case)
- A business process modeling capability using drag-and-drop (best case) and a XML configuration file (worst case)
- Flexible security infrastructure (like Access Control Lists, LDAP integration) that allows you to model the security needs of the business.
- Rich API infrastructure to allow applications to expose functionality through SOAP/ REST APIs.
- Allow portability of applications across different infrastructure-as-a-service (best case) or locked-in to their framework (worst case).
Personality #2: Application Management Platform
Personality #1 is all great and dandy for new startups or if all the companies were starting today from scratch. Most companies are captive to an array of applications that have, over years, become the staple of their business function. While they need to have a clear plan to make the transition from the legacy technologies to the state-of-the-art (Oxymoron Alert!), realistically it has to be a gradual transition. It is not a rip-and-replace.
Companies prefer to move their existing portfolio of applications to cloud where possible and get the benefits of elasticity, foregoing technology license renewals. This is where the Personality #2 comes in. In the best case, they help companies move their applications as-is with little or no need for retrofit. In the worst case they will require companies to make minor changes to the architecture and provide scaffolding to support that. Companies like RightScale, Makara have gone after that large legacy home grown application market which can benefit from moving to cloud. In addition to helping companies move these applications without a lot of elbow grease, these platforms also provide some nifty tools to manage them, version control, profile them for performance, load balance once they are in cloud. So right away these aging applications should start acting like they got a shot of steroid. While legacy applications built using ColdFusion, COBOL etc might not see the light of their day in cloud, most Java, .NET, PHP, Python based applications, WordPress, Drupal based community applications certainly are moving to cloud. This personality while meeting the operational needs of IT in managing, deploying the applications, should also extend it beyond IT and make it self service. Look for the following characteristics in this personality (at a minimum)
- Self Service provisioning of clusters, nodes, database and application instances
- Ability to configure load balancing, scaling up and down of nodes depending on the demand
- Monitoring and diagnosis of application performance through Integrated diagnosis tools to perform Log inspection, visualization of memory heaps, identification of leaks, diagnostics of mis-configured network topology, runaway processes, SQL execution plans etc.
- Easy to use configuration wizards to deploy components of application at different tiers
- Developer Tool kits to configure, build, deploy, un-deploy applications.
- Alerts, notifications upon breaching constraints defined for performance, scale, consumption of resources.
- Metering, Chargeback and Configuration Management.
Personality #3: Data Processing Platform
In this flavor of PaaS, companies are positioning middleware technology as a platform. Companies can use these platforms to run business activities like Data processing, Hosting external data feeds, Identity repositories, CDNs etc. Companies like Amazon (Elastic MapReduce), PingIdentity, Akamai fall into these categories. Here the publishers and consumers of the service might be applications sitting in Cloud or on-premise infrastructure, but the service provider is a specialized purpose-driven platform. While things are still slowly manifesting for this personality to truly make its presence felt, look for the following (at a minimum)
- Robust tools to transport large amounts of data back-and-forth from public/private clouds.
- Rich API and tool sets that will allow the platform to be integrated into applications that initiate the process and those that consume the output.
- Data Governance tools that allow companies to manage the lifecycle of the data, access control around it.
While the different personalities are solving challenges from different angles, they are all contributing to the combined goal of providing robust, scalable platforms in Cloud. As the three personalities of Platform-as-a-Service fully develop, integrate and provide a unified experience, you will start increasingly hearing enterprises singing the “Come and knock on our door, we’ve been waiting for you…. three’s company too.”