By Abhinav Bhatia．Dec 6, 2021
A lot has been said and told about what cloud is/is not but over the years I have put in a good amount of thought into what exactly it is. I was greatly moved by this quote by Marc Benioff, Founder, CEO and Chairman Salesforce where Marc focuses more on the magic it can do. According to him, it is just a way to run your business in a better way. Period.
The goal of this blog series is to break down cloud computing into simplified components so that at the end of the day anyone can understand the depth upto which cloud can go and how you can use it to your advantage towards transforming your life and that of your company. I have used a lot of Google Cloud Platform (GCP) constructs in the blog series so that we can understand and appreciate the concepts better when things are put into perspective.
A few Disclaimers
All opinions discussed in this blog series are my own and in no way should be attributed to be coming from the companies that I am or have been a part of. These are my learnings that I have tried to put in in as simple manner as possible. I understand that oversimplification can sometimes leads to an alternate version which might not be true. I would try my best not to oversimplify but my only request is to take all of this with a pinch of salt. Validate from as many sources as possible.
What is Cloud ?
When you learn anything new, the first thing that you do is to define it. The first thing anyone would want to know is what I am learning about. The mind wants to make sense of what is it dealing with and therefore it is natural to ask this question in the beginning. Since the goal of this blog series is to break things down in a simplified manner, I’ll not start with the technical definition. But I would cover it later so that we can break it down into simple structures.
Cloud is nothing but an outsourcing model. As a cloud customer you choose to outsource the tasks that does not directly add value to your business to a specialist player so that you can focus on tasks that matters.
Utility Model ?
Simply put, it’s a model that we’ve been following throughout in our day to day lives where, for example, to get power at our houses we take a utility connection from a power company. These power companies job is to produce power from various raw materials and involve the best people and technology to be as efficient as possible. We, on the other hand, would not want to focus on producing electricity because we want to focus on doing stuff that matters in our lives which is answering a client call or developing code or whatever it is that we love doing. At best, we invest in having a backup because we don’t want our lives to be disrupted by a power cut. So we install an inverter or a generator and have AMCs so that someone can maintain those equipments.
We see a similar model on cloud where we identify the tasks that are essential for the business to run, compete, grow and outpace their competitor. They decide whether it would be fruitful (cost effective/efficient) for them to do the tasks on their own or whether they should focus on getting more customers, doing marketing activities adding more partners and rely on a COTS (commercial off the shelf software) or a SaaS version of the application for running the business. It all depends on the DNA or the building blocks of the business. If the business core DNA is technology (talk about ride sharing apps, apps connecting buyers with sellers) where the core product that is being consumed by the end user is the application, businesses tend to hire the best people to write code and hire engineers to make sure that the environment they run on (even if it is on a public cloud) is highly efficient and responsive ( They don’t want to lose their customers owing to a slow app/webpage). On the other hand, if the main business is not technology focussed, I have seen people outsourcing a lot to public cloud and having partners manage most of it. Of course these cases are not set in stone and there might be a few exceptions.
OK. so what is the technical definition. The National Institute of Standards and Technology is a physical sciences laboratory and non-regulatory agency of the United States Department of Commerce. They have defined Cloud computing as
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
Vending Machine model ?
The way I have understood the above complex definition is by comparing cloud to a vending machine. If you have ever used a vending machine, you would remember that the giant machine vends out either food stuff, electronic gadgets or possibilities are endless. Essentially the idea is to to have nil human interaction where you are selling your stuff that goes inside the machine to the end user. There is no haggling, no discounts that you have to give. And it sells like hot cakes. The only human interaction needed is in the management of the machine, to refill it with new stuff and take out the money.
Essentially with Cloud, you are vending out computing resources. These resources includes servers, storage, application, networks, services etc. Now you cannot put a 19.5 kg server inside a machine and expect people to pay for it or even carry them to their office or data centres. So that is where technology comes to rescue with a term called as VIRTUALIZATION where the resources are pooled using virtualization (creation of virtual version of hardware) and broken down into different sizes depending upon the demand. The end user can also create a custom size resource since the original resources are already pooled and virtualized.
Since the resources are virtual (NO physical machines), it can be provisioned or created at the click of a button, deleted and released back to the pool at the click of a button. Essentially we have put in all the resources in this giant Vending machine (in case of cloud is a data centre) using virtualization and any one can consume it on-demand whenever they need it and release it back when they don’t. Google Cloud uses security hardened KVM as the hypervisor and in this article they have mentioned 7 ways in which they harden the same. Through Google VMware Engine, there is also an option of having your own VMware based ESXi based Hypervsior as part of Software Define Data Center.
The thing that we still have to understand is how much money would have to be paid. For the same, the cloud also needs a way to measure the time the resources were used. So as simple as a utility meter or a cab meter, in a cloud, you would also need technology and application that can help measure the consumption rate of a user and use the price chart (per minute/per second/per milli second etc) to bill the customer (also called as CHARGEBACK). So essentially as a user I am paying for the resources on-demand. For bigger enterprise customers, who would know their usage and can tell for sure that a part of the resources would be utilized 24×7 365 days a year, there are different commitment model available where you can pay upfront or in arrears (after a month) and reduce your per hour/per second/per ms rate. In GCP, there is an on-demand pricing model where essentially GCP gives a Sustained Usage discount on some machine types basis how much hours the machine have been used in a month, and a Committed Usage discount basis the tenure (1 or 3 years) a customer choose to commit cores and RAM for an machine family in a particular region
In a vending machine you press the button to get your stuff. In case of cloud, the way you press the button is on your mouse or on your keyboard where the cloud providers have built an online market/ marketplace (think about any ecommerce websites)where they showcase all the resources available in their market and similarly all the resources available to sell by other companies on their platform (marketplace). There are different modes where the resources can be listed and purchased like a console (GUI) or with SDKs (Software Development Toolkits) which includes things like command line (using shell scripts) or even inside your code (Client Libraries).
The idea is to ORCHESTRATE all the operations that goes behind while requesting a virtual resource which are abstracted so that the end user does not have to focus or worry about those steps (Remember focus on stuff that matters ?) Cloud providers being the Specialist players have written numerous lines of code to orchestrate and built a software defined data centre where everything is controlled using code and everything is API driven. An API or Application Programmable Interface is a software interface which every service in cloud has. So a cloud is nothing but those tons of resources which are available for sale having a software interface so that the resources can be consumed, metered, chargeback, deleted or integrated with your own code.
Imagine a pack of chips that you purchase out of a vending machine has a button that would tell the seller how many pieces of chips have you consumed so that instead of charging you on the whole pack they can come with a pricing model of an individual chip. You would use that button to open the pack , dispose it and what not. Basically that small button becomes the centre of all the tasks that you want to do. That is API in a cloud.
In GCP, you can use console to enable or disable all the APIs centrally and also monitor the number of requests, errors and latency observed with those APIs.
So we have built this huge vending machine. Do we expect our users to book a cab to my data centre and stand in huge queues to vend out a server. NO. And that is where Internet came to the rescue. Internet played a huge role in making cloud what it is today. Essentially, you don’t have to be anywhere, you don’t need to have an office also to place these resources. You just need to have a client device ( a laptop or a cell phone) having internet connectivity or if you are in your office, your office network needs to be connected with the cloud network ( over VPN or a leased line). That’s it. Your laptop/cell phone becomes the place where you can run a billion dollar enterprise and make sure your your end users are able to use your application in the best possible way. In GCP, internet for the end user are available in two service tiers: standard (optimizes cost) and premium (uses Google Global Network). Cloud VPN and Cloud Interconnect can be availed to connect your offices or an onsite data centre with Google Cloud.
What next ?
And that is cloud. Its not a buzzword, its not a hype but essentially a necessity where the companies have realised that it is better to use this pooled model where also because of economies of scale and humongous sharing of resources, cloud provider can possibly bring down the cost of a resource. But is cloud cheaper than doing the work on your own ? Thats a topic of another discussion.
This is just the beginning. With this understanding of cloud, we would touch upon
- Learning Cloud through GCP — Part 2: How can I consume Cloud ? where I would first discuss the layers of a software application and then understand the different service models in which those layers are bundled and sold by a Cloud vendor with a Shared Responsibility Model. (IaaS, PaaS, SaaS, FaaS, XaaS)
- Learning Cloud through GCP -Part 3: Where do I compute on Cloud ? where I would touch upon the several compute options available on cloud and how to choose between them. (VM vs Kubernetes vs Serverless vs Event Driven Serverless Framework)
- Learning Cloud through GCP -Part 4: Where do I store my data on Cloud ? where I would try to answer a very pertinent question on how to select the right storage unit to hold your data. (OLTP vs OLAP, ETL vs ELT, SQL vs NoSQL, File vs Block Storage, What is NewSQL ?)
- Learning Cloud through GCP -Part 5: How do I connect to my Cloud ? where I would discuss some of the important networking and security constructs available on cloud. (Load Balancers, DNS, CDN, WAF, VPC)
There are tons of products and services available on cloud. The intent of this blog series is not to cover all of them but touch upon the critical ones which are the essential ones. On top of it, you can add different layers depending on your use case.
The original article published on Medium.