Cloud Computing can be viewed from two different perspectives:
- The user perspective
- The server or infrastructure perspective
From the User Perspective any application or service that a user uses over the internet can be considered a Cloud Computing Service. The user typically has no idea what computer infrastructure is needed to run the application they are using. Examples of large user Cloud Computing services include: Email, Search, Google Docs, Facebook, Flickr, Microsoft Office 360 and thousands of other applications that run on the Internet (or World Wide Web).
From the Computer Server or Infrastructure Perspective Cloud Computing is a way of engineering applications that are delivered over the internet to thousands (in some cases millions) of users at the same time. In order to support such a large number of users, sophisticated software engineering techniques are used to provide high availability with good performance at enormous scale. Major Cloud provides have also automated much of their infrastructure deployment and maintenance to reduce costs.
It is key for IT professionals to understand Cloud Computing from the server perspective. IT professionals will need to understand what is involved in developing and operating applications that run on Cloud Servers. They will also need to understanding how Cloud Computing from a server perspective will change the role of IT in the future.
As we have seen in my earlier posts, around 2002 to 2004, the number of users, on Amazon, Google and Yahoo had grown to thousands and in some case millions of users. In order to provide good service, these organizations had to add thousands of servers to their computer infrastructure. Their scale of their infrastructures was becoming expensive and a bottleneck to growth.
Each of these companies decided to automate the provisioning and maintenance of servers using low cost x86 commodity processors. Each company engineered their own unique solution to their infrastructure growth issues. Although each solution is different they share elements of both existing and new software engineering concepts such as:
- Time Sharing
- High Availability Computing
- High Performance and Grid Computing
- Multi-Processing and Virtualization
- Web Services
- Service Oriented Architectures
- Data base sharding
- New packaging ideas using shipping containers as data centers
The result of these engineering efforts was new forms of computer infrastructures that scaled to millions of users and billions of transactions. Amazon was the first to offer these new automated infrastructure services to the general public and create what today we call Cloud Computing.