Cloud does not require change in programming model – Microsoft
In two of my previous posts I have highlighted why I think cloud computing needs change in thinking. However, in a recent discussion Walid Abu-Hadba (of Microsoft) clearly stated that Microsoft’s cloud strategy assumes that they are going to retain the existing programming model for cloud. That is, programmers can develop their application without bothering about where it is going to be deployed.
This is how the logic goes:
- When mini computers came in, IBM did not / could not retain the mainframe programming model for mini and hence lost the mini race to DEC
- When PCs came DEC suffered in the same way
- The movement from character interface to GUI saw many companies (Ashton-Tate, Word Perfect) losing out
- When network based computing transitioned from file server to client server model, Novel lost out
- A programmer learns a programming platform in first few years of his/her carrier – very few make a transition to a different platform later on
- There are huge number of programmers who are familiar with the existing programming model – transitioning them is almost impossible
Do you see the fallacy in this logic?
Essentially what Microsoft is saying is that “we will be at a serious disadvantage if the programming model changes – so let us not change it”. But, is the current programming model right for the cloud?
In past Microsoft has changed the programming model twice – the change in each occasion has been triggered by competition. The GUI programming model was forced by Mac and the .Net programming model was forced by Java. They have retained the same programming model for mobile and the result is there for all to see.
So, let me restate why I think the programming model will change. I have based my thoughts on how Google App Engine is structured – after all Google has the largest cloud computing infrastructure.
- You do not have to worry about object-relation (O-R) mapping. Big Table implementation of Google allows you to save the objects directly.
- You will not need web server – app server – database server. All of them become redundant.
Designing for heavy transaction volume will not be necessary – it is in built. Instead …
- …individual transaction performance will have to be optimized.
- …designing for high data volume will be required.
- …impact of data contention across transactions needs to be checked.
- …compute intensive algorithm needs to be broken up.
- Heterogeneity is the order of the day. Consuming services from different sources and providing services for others to use will be the starting point.
- Approach to debugging will be totally different. I am not sure how it will be done.
- In many situations, storing – searching – retrieving unstructured data may be advantageous compared to structured data.
I propose to elaborate each of these points in my future posts.
Is this Microsoft’s first major strategic decision in the post Bill Gates era? Let us see how it pans out.