Sunday, August 02, 2009

Cloud Computing & You

Cloud Computing is coming, and it's bigger than you think


Despite the enormous chatters surrounding the "cloud", I think it's still under-hyped. And no matter who you are, you will experience it. In my opinion, the significance and transformation brought about by the cloud computing will be as big a step as the transition from command-line to GUI and from isolated computers to internet - combined.

For a user, cloud computing means your data and applications are never confined to a particular "computer", never lost, and always accessible from anywhere. You can use your PC, your phone, your TV, other people's phone, airport kiosks to do email, play your favorite games, make presentation, listen to music and chat with friends.

For a developer, could computing means you have the power to build an application that can be accessibled from virtually all computing devices, and avaialble potentially to millions and billions of users, if you can attract them to come. Just like going from command line to GUI requires software maker to think about event driven programming, GUI design, pretty buttons and animation. Cloud computing brings new scenarios and also new programming models and contructs. Forgetting old ones maybe harder than learning new ones.

Past is a hint for the future


Let's review the three giant steps in computing in the past, and see what cloud brings to the table in the same vein.

  • Shared computing to Personal computing - a paradigm shift

    "Paradigm shift" is an overly used term, for me, it simply means a significant change in ways of thinking. There was a time when computing was not available to the mass. Like there was a time when driving was not avaiable to most people. And today, flying across long distrance is not avaialble to most. When computing was only available to selected few, software was developed in a particular way that assumes its users to be highly trained and many (>100) of them were sharing a super expensive computer.

    The shift into personal computing, required a sea change to the design of the software. No longer were the computer serving hundreds of masters at a time, the users were no longer highly trained scientists and engineers. If you were the designer of a 747 air-liner, how would you design an air plane that carries just a small family and can be operated by a crazy teenager with a few weeks in fly-school? It's hard not only in solving the technical problems, but also in the sheer changes to long standing assumptions, conventional wisdom and truisms.
  • CLI to GUI - bring in new audience

    Another significant shift into personal computing, is the user interface. In a shared computing environment, to spend significant CPU cycles rendering a pretty UI for hundreds of users simply didn't make economical sense. But in the era of personal computing, it had become increasingly necessary to attract wider and wider audience by reducing the learning curve for the mass. Early PCs thrived on command line (DOS days) because it offered significant functionalities (think Lotus 1-2-3, Word Perfect) to motivate its user to learn the arcane commands. But it wasn't until a successful commercial GUI was available - Windows 3.1 and the subsequent Windows 95, that numbers of PC users exploded in the scale we see today.
  • Local computing to Internet - eliminate the friction of information distribution

    When so many PCs are on the market, using them as terminals for receiving information, like TVs and radios, was an obvious thought. And PCs have the "interesting" potential to do two-way communications. Various attempts were made to build the "network" - BBS, CompuServ, AOL, early MSN, but they were largely superseded by the one network that rules them all - internet. Internet eliminated the friction (cost and access to technology) for distributing information. News, knowledge and stupid jokes alike in forms of text, audio and video can be distributed on the internet for the same low costs - nearly zero, especially when you compare to the cost of building TV stations and renting broadcast equipments.

Cloud Disruption

To assess the impact of cloud to our industry, let's take a look its potential impact from the angle of "paradigm shift in software design", "infusion of new users and new challenges and opportunities that entail" and "removal of major friction in delivering value to users". These are the lasting changes from the last sea change in the industry. If cloud computing could deliver in these 3 elements, wouldn't it carry the similar amount of force to reshape the industry?

  • Paradigm Shift - Personal Computing to Cloud Computing

    Cloud Computing is the product of internet. Like the transition into personal computing, cloud computing requires a significant change to how software is designed to fit the new realities and expectation of its users. Many software designers would never fully settle comfortably into the new world order. Developers who grow up with the internet would never look back. The "generational gap" will manifests in the software makers' ability to understand and predict the needs and desire of their customers. The transition would be incredibly disruptive for the industry.
  • Widening Audience - Make computing & services available to the next 1 billion users.

    By shifting the data storage and computation heavy lifting into the cloud, coupled with the continuing force of Moore's Law, personal computing devices could continue to shrink in size and cost. Mobile phones are already widely available in the developing economies, and with the relatively brief life span for these low cost mobile phones, soon, the next billion people who don't have access to a full fledged PC, will have a mobile phone that is capable of accessing the cloud to obtain most of the functionalities and information that we use our PCs for today. The infusion of new user base will likely drive a very different kind of economy. Disruption abounds for established business and revenue models.
  • Frictionless Application Access - Eliminate the friction of application distribution

    Today's application platforms allow developer to provide useful functionalities to its user on a particular computing hardware. Applications distributions has been costly. Distributing through retail channel like Best Buy is reserved for only the largest vendors. Distributing through internet or your own website is cost effective, but gaining people's attention to visit the website is hard. Once people get the software, installing the software, keeping it update to date with patches and upgrading to new versions, are far from easy and reliable. OS, hardware incompatibility, conflicts with other software on the machines, are a fact of life. These existing application platforms can work on solutions to many of the problems above, Apple's iPhone Marketplace is an example where the distribution and discovery of applications is simplified.

    Cloud application platforms of tomorrow will be built to avoid many of the problems above. The ease of clicking on a link, will be the benchmark for "installing and start running" an application on the cloud. Updates and upgrades to the software are expected to happen transparently to the user. For the most part, new features are expected to just "show up" without down time. And users would expect the application to run in a fashion that works on their device, no matter what OS and hardware the device has.

    The emergence of new cloud services / application platforms (Google's Google App Engine, Microsoft's Windows Azure, Amazon's cloud computing offering to some extend), will obviously be disruptive for dominant players in today's application platforms - Apple and Microsoft.

Part 2 work in progress =)

Industrial Movement & Related Technologies

  • Web Services
  • Software as a Service
  • Platform as a Service
  • Infrastructure as a Service

Microsoft Positioning

  • Windows Azure
  • Microsoft Applications for the Cloud Era
    • Live Mesh (consumer)
    • Microsoft Online (enterprise)
  • Client Future - Windows here to stay