22-March-2021
Whether we realize it or not, Cloud Computing has become an integral part of our life. When we are checking mails, are on social media, making train reservation, attending zoom calls, ordering food on Swiggy, watching Netflix, shopping on flipkart, chatting on whatsapp, using net banking, making online transactions, …. we are using cloud computing services. Cloud Computing has been a key enabler of Digital Transformation of the society.
According to the official NIST (USA) definition, "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."
In simple words Cloud Computing enables on-demand services like compute, storage, networking, etc. which can be accessed through the internet and the user is not required to manage these resources.
The NIST definition lists five essential characteristics of cloud computing:
1. Pay as you go – pay for what you use
With cloud service, you don’t have to incur expenses on purchasing computing resources and you pay as your requirements grow. You also pay only for the time that you actually use and not for the time you don’t use.
2. Accessible from anywhere through internet
As cloud resources are accessed through internet, these can be accessed from anywhere where net connectivity is available. This gives great flexibility to users over on-premise computer systems.
3. User perceives infinite cloud
With Cloud, user can expect that his computational needs would be met with on-demand and systems can grow with infinite elasticity.
4. No human interaction
Another advantage of using cloud is that user requirements of resources can be met without any human intervention.
5. Assign resources according to current demand
With cloud, the user needs to allocate only as many resources as are needed currently. Need for more resources will be catered to immediately. Similarly if the requirement reduces, extra resources can be released.
Cloud computing allows companies to avoid or minimize up-front IT infrastructure costs. It also allows enterprises to get their applications up and running faster, with improved manageability and less maintenance, and that it enables IT teams to more rapidly adjust resources to meet fluctuating and unpredictable demand, providing the burst computing capability: high computing power at certain periods of peak demand.
Prominent Cloud Service providers are Amazon, Microsoft, Google, IBM, Oracle, etc with Amazon having the biggest share.
The prominent Cloud deployment models are Public Cloud, Private Cloud and Hybrid Cloud.
Public cloud is like a public transport system – available to everyone. You can choose class of service, but not much flexibility. On other extremes is private cloud which is like your own car that can be used by your family members and have full flexibility. Hybrid cloud is like cab service that provides privacy and flexibility and doesn’t bring in cost of ownership.
The three prominent service models are IAAS, PAAS & SAAS
IAAS or Infrastructure As A Service is a service where cloud service provider offers you computing resources like server, storage, etc and one can use them instead of physically purchasing them. For example, Amazon AWS provides servers through EC2 (Elastic Compute) and storage through S3 (simple storage) and EBS (block storage).
PAAS or Platform As A Service is a service where you get a platform for further development. It offers you development environment comprising of various tools and pre-built components and libraries. This greatly eases the IT needs of a SW development organization. Microsoft Azure is a development and deployment environment using the PaaS concept. Azure also supports a wide range of tools, languages, and frameworks. Azure supports the entire web app development life cycle, from build to deploy and thereafter.
SAAS or Software As A Service makes software available to users over the internet, usually for a user based subscription fee. With SaaS, you don’t need to buy whole SW and install and run it on your computer (or any computer). You subscribe to one available over internet and users use it by logging into their accounts online. This model is extremely useful for small organizations. For example, mail systems – like gmail or yahoo mail, conferencing solutions like zoom, etc.
We can see it with an example. If you move to a new city and want to prepare meal at the new home, you need to arrange for necessary infrastructure. If it was a furnished flat, you may get stove with piped gas supply, refrigerator, etc. along with flat (IAAS). If it was a serviced apartment, you may additionally get utensils, mixer/grinder, microwave oven and other tools – so that cooking can be done by you or someone you hire after arranging for ingredients (PAAS). You also have option of ordering food online and get it delivered at your new home (SAAS). You need to decide which option suits you!
Cloud computing relies on sharing of computing resources to provide its services and economies of scale. I consider the following three technologies as pillars of Cloud Technology:
Virtualization,
Software Defined Networks (SDN)
Infrastructure as Code (IaC)
We’ll take up these three briefly here:
The key enabling technology for cloud computing is virtualization – a concept that deals with software emulation of hardware.
A virtual machine can be described as a software emulation of a computer machine. The computer machine on which this virtual machine (emulated computer machine) runs is generally referred to as the host, and the computer machine emulated on that host is generally referred to as the guest. A host can emulate several guests, each of which can emulate different operating systems and hardware platforms. A layer called hypervisor enables running of guest on host by translating their machine instructions. This emulated running of a guest on a host is called ‘virtualization’.
The desire to run multiple operating systems on a single machine was the initial motive for virtualization, so as to allow time-sharing among several single-tasking operating systems. IBM's CP/CMS were first widely used systems to allow full virtualization. These implemented time sharing by providing each user with a single-user operating system, the Conversational Monitor System (CMS).
Although virtualization technology has been in existence since 1960’s, it has evolved in a big way over past two decades and has emerged as a key enabling technology for cloud computing.
With advancements in cloud technologies, Virtual Machines are getting replaced by Containers which are based on another form of virtualization known as OS Virtualization. Containers are making Cloud technology much more efficient. Container technology will be discussed in more detail later.
Another critical aspect of cloud infrastructure is networking among different guests and the applications running on them. In conventional system, interconnecting servers is taken care through physical switches and routers. These switches and routers need to be configured through complex network management procedures. With virtualization coming in, switches and routers also need to be emulated in software. Also, as guests need to be dynamically orchestrated, the routing also needs to be managed dynamically. This is where technologies like Open vSwitch are used. With evolution of Software Defined Networking (SDN), the routing can be dynamically managed by programming the control plane.
SDN disassociates forwarding process of network packets (data plane) from the routing process (control plane). Control Plane can command Data Plane to set packet forwarding tables used by Data Plane. OpenFlow is a common protocol that is used for communication between data plane and control plane. With combined and centralized control plane, the routing at data plane can be controlled dynamically by Orchestrator and Cloud Management.
A crude parallel can be drawn with Railway system. While the train runs on rail tracks, the interconnecting two tracks is done through railroad switches by the cabin man based on the instructions received from the central control.
A Cloud infrastructure is essentially a very large pool of IT resources – servers, storage, switches, routers, etc. In the beginning, managing IT resources was done manually - that was extremely complex task.
Infrastructure as code (IaC) is the process of managing and provisioning this infrastructure through automated tasks and machine-readable definition and configuration files. The IT infrastructure managed by this process comprises both physical equipment, such as bare-metal servers, as well as virtual machines, and associated configuration resources. A number of tools exist for automation of server configuration and management, including Ansible, Puppet, Salt, Terraform, and AWS CloudFormation.
Orchestration is essentially putting together automated tasks into a process workflow to cater to defined policies. The orchestrator plays key role in provisioning of cloud services utilizing the intelligence gathered.
Cloud Management primarily involves various aspects of managing large pool of IT infrastructure and catering to the needs of guests on the hosts.
As an Operating System manages the resources of a computer system, allocating them to needing processes based on its policies, a cloud management software like OpenStack manages resources of a cloud system. OpenStack is an open source Cloud Management software that has evolved significantly over the past decade. VMware is other major Cloud Management software that is available commercially.
The availability of high-capacity networks, low-cost computers and storage devices as well as the widespread adoption of hardware virtualization, service-oriented architecture and autonomic and utility computing has led to exponential growth of cloud computing.
Cloud Computing services have played a crucial role during pandemic to keep the work ongoing. This has further accelerated drive of organization to move to cloud environment.
The use of cloud computing services has enhanced the quality and overall use of computer technology in recent years. Due to the benefits provided by cloud computing services, more developers and companies are using them to manage their technological resources. The cloud systems have provided many benefits that include applications with Lambda functions, more geographic reach, and better quality websites and servers.
Cloud Computing is a key enabler of development in other technologies. The advancements in the field of IoT, Artificial Intelligence, Data Analytics, Self Driving Cars, Communication and Media wouldn’t have been possible without cloud computing.
Virtualization is already revolutionizing the telecom world. With evolution of Network Function Virtualization (NFV), the cost of telecom equipment is getting reduced drastically. The evolution of 4G and 5G networks would not have been possible without these.
The Cloud Computing technologies continue to evolve at rapid pace, to make cloud computing more efficient, more user friendly and easier to develop new applications. These will be covered in a future post of Cloud Native Computing.
Want to know how to build skills in Cloud Computing?
To know how to build skills in Cloud Computing Technologies, please read our other post.