Quick Introduction to Cloud
Cloud refers to hosted services over the Internet. For example, Google Drive and GoogleDocs are cloud services. Google Drive allows you to save your files on their hardware. GoogleDocs is a collection of software (word processor, spreadsheet, etc.) hosted on Google's servers. The software resided on Google's hardware and uses their memory and CPU. You access it through the Internet. The are three category of cloud services:
- IaaS: Infrastructure as a Service
- PaaS: Platform as a Service
- SaaS: Software as a Service
IaaS providers provide highly automated and scalable computing resources accessible through an API and/or dashboard over the Internet. It allows users to build their own virtual data centre.
PaaS facilitate building highly scalable and applications. Examples include Heroku, Google App Engine, and OpenShift.
Hosting software on your servers require reliable hardware, network, and skilled technical staff. SaaS takes away the need for all this. The cloud will take care of all these technical problems and all you have to do is access the software through the Internet.
Before the cloud, companies built their infrastructure to be able to handle their peak requirements. This meant that significant portion of the hardware was left unused during off-peak hours. Cloud allows users to add more resources (scale out) during peak hours and reduce resources (scale in) during off-peak hours. This allows the business to use only the resources they need and only pay for the resources they consume. This is called elasticity.
Elasticity means the ability to increase or decrease resources and services as your needs change. Suppose you are using 5 CPUs and 24 Gig or RAM and your virtual servers cannot cope with the load, you would want to add more CPUs and memory. This can easily be done in the cloud with a few clicks in the dashboard in real time. When you add more CPU or RAM to your virtual machines, it is called scaling up. When you reduce CPU or RAM, it is called scaling down Collectively, this is called vertical scaling. When you add more nodes or components, it is called scaling out. When you reduce nodes, it is called scaling in. Collectively, this is called horizontal scaling.
Apps must be designed to take advantage of elasticity. If an application is designed to use only one CPU at a time, allocating 3 CPUs will not help speed up the execution of your jobs. In the cloud, you have access to infinite CPU and memory. Hardware limitation is no longer a bottleneck. The bottleneck is how much resources you can afford to buy and the ability of your apps to use elastic services.
Agility and Risk Management
IT infrastructure is expensive to setup and maintain. This presents financial risk. If you don't build enough to handle all your customers, you won't be able to serve your customers. If you build too much, then your infrastructure is sitting idle and draining your finances. In the cloud, you only build what you need and only pay for what you use. Furthermore, you can scale up, down, in or out quickly. You also delegate many tasks such as security tasks to the cloud.
In IT, agility refers to faster development, ease of experimentation, and fewer hurdles to innovation. Cloud allows users to access resources spin up and terminate instances quickly. Development can be automated and made consistent with templates. This reduces time to develop. You can experiment quick with low cost and low risk.
Key Advantages of Cloud
- No need to build your own data center
- Resources are disposable - you can spin and terminate new instances anytime
- Scalability - you can build one CPU infrastructure to a million CPU infrastructure
- Highly available
- Strong physical data center security and data security
- Fault tolerant
- Reliability - able to recover from disruptions