Tuesday 25 May 2010

Platform-as-a-Service freedom or lock-in

There has been a set of discussions about lock-in around Platform-as-a-Service (PaaS): Joe McKendrick and Lori MacVittie in particular bring out some of the real challenges here.

Lori brings out the difference between portability and mobility. While I'm not in 100% agreement with Lori's definitions, there is a key point here: its not just code, its the services that the code relies on that buy lock-in into a cloud.

So for example, if you use Amazon SQS, Force.com Chatter Collaboration, Google App Engine's bigtable data store, all of these tie you into the cloud you are deployed onto. Amazon isn't really a PaaS yet, so the tie-in is minimal, but Google App Engine (GAE) is based on Authentication, Logging, Data, Cache and other core services. Its almost impossible to imagine building an app without these, and they all tie you into GAE. Similarly, VMForce relies on a set of services from force.com.

But its not just about mobility between force.com and Google: between two PaaSes. The typical enterprise needs a private cloud as much as public cloud. So there is a bigger question:
Can you move your application from a private PaaS to a public Paas and back again?
In other words, even if Google and Force got together and defined a mobility layer, can I then take an app I built and run it internally? Neither Google nor Force is offering a private PaaS.

The second key question is this:
How can I leverage standard Enterprise Architecture in a PaaS?
What I'm getting at here is that as the world starts to implement PaaS, does this fit with existing models? Force.com and Google App Engine have effectively designed their own world view. VMForce and the recent Spring/Google App Engine announcement address one aspect of that - what Lori calls portability. By using Spring as an application model, there is at least a passing similarity to current programming models in Enterprises. But Enterprise Architectures are not just about Java code: what about an ESB? What about a Business Process engine (BPMS)? What about a standard XACML-based entitlement engine? So far PaaS has generally only addressed the most basic requirements of Enterprise core services: databases and a identity model.

So my contention is this: you need a PaaS that supports the same core services that a modern Enterprise architecture has: ESB, BPMS, Authentication/Authorization, Portal, Data, Cache, etc. And you need a PaaS that works inside your organization as well as in a public Cloud. And if you really don't want any lock-in.... hadn't that PaaS better be Open Source as well? And yes, this is a hint of things coming very soon!

1 comment:

  1. Paul,

    Enjoyed this post - especially when you remind us that "Enterprise Architectures are not just about Java code: what about an ESB? What about a Business Process engine (BPMS)? What about a standard XACML-based entitlement engine? So far PaaS has generally only addressed the most basic requirements of Enterprise core services: databases and a identity model."

    It seems application infrastructure and network infrastructure suffer the same lack of service offerings in PaaS and IaaS respectively. One of the reasons I believe hybrid cloud models will dominate is precisely because of the lack of services. IT has come to rely upon both application and network infrastructure as part of the application and the inability to duplicate that in an off-premise cloud is certainly going to be a road bump in the cloud adoption cycle.

    Lori

    ReplyDelete