Cloud computing

Cloud computing

Cloud computing

Cloud computing is the on-demand delivery of the computing resources like virtual machines (the equivalent of your remote desktop), storage, networking, databases and other IT infrastructure. The key word to remember is the on-demand delivery, as it has a very significant impact on how we build and manage our IT infrastructure (hardware & software) and overall IT costing. Also, another important aspect is that these resources are accessible over the internet via Http(s) protocol.

Difference between Cloud vs distributed computing

Somebody put this question to me and at first, I was taken aback, never thought about it at first. At the high level they look so similar, so what differentiates these two computing models:
Distributed computing is two or more computers networked together and dividing a large problem into smaller pieces and having multiple computers process these smaller pieces (slices). Distributed computing is a very generic term, very commonly used for any such infrastructure so internet, massively parallels online gaming, Hadoop map-reduce processing are all examples of distributed computing.
On the other side cloud computing brought some unique features/terminologies/concepts that entitle it a separate classification:

Everything as a service

On Cloud, everything is available as-a-service. The service models help to provide a well-defined SLAs for the resources that you are using. The SLA might include uptime (in case of Virtual machines, servers etc.), throughput (in case of disk storages, network etc.) or even durability (in case of data storage). There are 3 primary service models:
- IaaS (Infrastructure as a service): The IaaS includes all the barebone components that make up the IT infrastructure of the organization (like machines, network, storage etc.)
- PaaS (Platform as a Service): The PaaS includes all the platform level components like web-servers, SQL servers or other runtime components that can be used to further build other components that serve specific requirements.
- SaaS (Software as a Service): The SaaS includes the software that we normally use emails, word editors or even accounting software. The SaaS like their desktop equivalents is built to meet specific purpose or business requirement
. The as-a-service model clearly differentiates the distributed computing model with the cloud model as distributed computing might not offer such specific SLAs as offered by cloud’s as-a-service models.

On-Demand Delivery

With the distributed computing, you are pretty much bound with the infrastructure/resources assigned to you, as soon as you are reaching the limits your jobs/processes will be either halted or wait for some other resources to be freed before continuing, a good example is the number of requests your site can handle per second (depends on maximum throttling provide by your website host based on your plan), let’s say you need to support 100000 requests per day from existing 20000 request per day), you cannot do it on your own without your website host increasing the limits at their end (obviously a planned upgrade), what about managing the sites at different geographies. With the cloud, you can scale at massive levels based on the load instantaneously. You can spawn your sites across geographies and you can do it just for special occasions (like black Friday sales). On-demand delivery is a true differentiator and a major feature of cloud computing.

Pay as you go

Again, with distributed computing the resources are fixed with your plan and plan charges are defined in advance, you subscribe to plan and you pay for it, irrespective of whether the resources are used or not. Consider that your website host provider provides you 5GB of space and 200000 requests per month for $15. Let’s say your site just used, 2 GB of space and 120000 requests per month, your website host is still going to charge $15 (no discounts on less usage). With cloud’s pay-as-you-go model you are charged only for what you pay. Generally, for storage, you are charged for actual storage used, for computing units (like virtual machines, web-servers) you pay for uptime (ie only when the resources were running).

Economies of scale

Let’s say you need to run a Hadoop cluster and you identified the need to build a 100 node cluster that can handle the load for next 2-3 years. You need to invest in hardware and on teams who can manage that hardware. You have to pay upfront costs for hardware and manpower procurement (usually called capital cost). With the cloud, these massively parallel systems are capable of running multiple clusters on the same hardware, thus allowing for cost-sharing across clusters. Just to visualize the cost advantage, we estimated that managing a 100 node Hadoop cluster on-premise was costing our customers approx. 1-1.2 million USD (salaries, capital investment in hardware, electricity, data-center rentals etc.) year on year. A much powerful m4.xlarge 100 node cluster was approx. 300k USD and including all other expenses, total outgo was approx. 500k. A direct saving of 100%. Also, consider that additional hardware might be required after 3 years when the workload is increasing for on-premise setup vs cloud where we can scale anytime within few minutes or move to higher configuration nodes.

Major Players

The major players in the cloud arena are:
AWS – Amazon Web Services
Microsoft Azure
GCP – Google Cloud Platform
Hope that gives you a basic idea about cloud computing, I will publish more on the cloud as and when time permits. Happy Tech learning