The fundamental model for writing applications has not changed in 40 years. The core model is: 1) A library of useful APIs. 2) A programming language for writing applications that compose an application from the APIs and add some additional functions. There have been some changes: 1) Higher layer abstractions like BPEL or RDBMs queries. 2) More flexible “linking,” e.g. Web services. 3) Improved languages and frameworks, e.g. Spring.
Unfortunately, evolving the basic programming model will not work for cloud computing. Consider core elements of cloud computing:
1.Software-as-a-Service: The canonical example is Salesforce.com. Extending and programming the sales force application typically does not require programming. There is a higher layer, focused abstraction for adding fields, modifying forms, defining simple rules, creating simple workflows, etc. There is an intuitive interface for defining the customization and extensions. Write code is the exception, not the rule.
2.Platform-as-a-Service: Drupal is a widely used, open source platform for content and collaboration centric applications. There are over 8,000 plug-in modules. Using Drupal or a plug-in is primarily defining an information schema and setting configuration properties. There are interfaces for defining the schema and properties.
3.Programmable Web: The vision of SOA was, “Encapsulate all of your APIs, put them in a repository and build all new applications by stringing them together.” The programmable web of called APIs supersizes this model. Any function a programmer needs is “out on the web somewhere.”
These simple, configuration/form based technology and prebuilt modules/APIs allow non-programmers to implement 99.9% of all cloud applications. This model is what will drive cloud computing, combined with HTML5 based mobile applications.