Getting started with the cloud, cloud computing, and the different cloud service models available and when you can use them.
The Cloud
The cloud I am referring to has nothing to do with the white fluffy things in the sky which give us an idea of the day's weather.
The Cloud explained here is a global network of servers with a unique function accessed over the internet. These servers are maintained by a third-party provider responsible for hosting, managing, and securing data stored on its infrastructure. example of these third-party provider includes Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud, IBM Cloud (Kyndryl), DigitalOcean and many more.
Instead of accessing files and data from a local or personal computer, you are accessing them online from any Internet-capable device—the information will be available anywhere you go and anytime you need it. The Cloud is a remote space where our files can be stored, retrieved, and managed.
Cloud Computing
Cloud computing is a remote virtual pool of on-demand shared resources offering Compute, Storage, Database, and Network Services that can be rapidly deployed at scale.
That was a whole lot of vocabulary but breaking it into bits below:
a remote virtual pool of on-demand shared resources
These are resources/services that use an on-demand delivery model(meaning that resources are made available as needed by the user) that can be accessed over the internet and can be used by multiple clients or customers.
Cloud Service Providers(eg Google Cloud.) use these resources to serve and meet the needs of their clients or customers.
This concept of a " remote virtual pool of on-demand shared resources " spans around the term Virtualisation but will be discussed later.
offering compute, storage, database, and network services.
Initially, I talked about resources that are shared among multiple users and can be accessed over the internet. These resources are grouped under Compute resource, Storage resource, Database resource, and Network services or resources. I will explain each of these resources later on in the article.
that can be rapidly deployed at scale.
This explains another importance of cloud computing which is "scalability". Scalability here is the ease with which the shared resources can be increased or decreased to meet the demand of the clients or users. it could be adding more resources such as RAM or processing power to your existing server when you have increased workload over time. This approach is cost-effective because you only pay for what you use.
In the past when companies make use of on-premises physical infrastructure (datacentres within the company) it could take weeks or months to modify the resources based on their users' demand but with cloud computing the whole process is automated.
A data center is a physical location that stores computing machines and their related hardware equipment. It contains the computing infrastructure that IT systems require, such as servers, data storage drives, and network equipment. It is the physical facility that stores any company’s digital data.
Cloud scalability is often confused with Cloud elasticity. both are similar but the only difference is in the Time. Cloud elasticity is required for short-term bursts and it is needed to meet the dynamic needs of an organization or a client. say for example a wedding planning site whose transaction workload increases during the festive period like Christmas as a result of increased bookings, will go for cloud elasticity because as soon as the season is out, the additional resources added as a result of an increase in demand can then be requested for withdrawal.
While for Cloud Scalability, it is required for a long-term and strategically planned to meet the static needs of an organization. for example, a movie streaming business whose database was small and based on a small customer range in the early beginnings but over time the business and database size grew based on a wider customer range will have to request their cloud service vendor(AWS, Microsoft Azure, etc.) for the scaling up of their database capacity to handle a heavy workload.
There are different types of scaling ranging from Vertical, Horizontal and Diagonal Scaling but we will not be discussing them in this article.
Resource Types within Cloud Computing
Compute
Compute resources can be considered the brains and processing power required by applications and systems to carry out computational tasks via a series of instructions. Applications that enable problem-solving and solution creation through receiving, analyzing, and storing data will require more "compute" resources.
For example, applications that run machine learning algorithms will require many gigs of RAM and multiple CPUs to run successfully. In this case, the CPUs, RAM, and Graphic Processing Units required will be called compute resources, and the applications would be compute-intensive applications.
Cloud providers/vendors provide different "compute" resources like the AWS Elastic Compute Cloud(EC2), Google Cloud GPUs, Azure Functions, etc.
Storage
This resource allows you to save and store structured and unstructured data, including photos, and videos in the cloud through different cloud computing providers. It is a way for organizations to store data securely online so that it can be accessed anytime from any location by those with permission.
We have three main types of cloud storage
file storage, often known as network-attached storage (NAS) which stores files in a strict tree-like hierarchy with directories, sub-directories, and so on. To access a stored file, you must follow a specific path to it. unlike object storage which uses a specific identifier to access its files.
object storage, which stores large amounts of unstructured data like photos, videos, and audio and makes it possible to customize metadata in ways that make the data easier to access and analyze by using secure buckets.
block storage
Block storage is used to store an organized collection of data in the form of blocks that can be accessed quickly eg databases.
Enterprise applications like databases often require dedicated, low-latency storage(easily accessible within a short time span) for each host.
Database
These resources allow you to store structured sets of data used by your application, It serves many of the same functions as a traditional database with the added flexibility of cloud computing. Can support relational databases (including MySQL and PostgreSQL) and NoSQL databases (including MongoDB and Apache CouchDB).
Network resources
These provide connectivity allowing all other resources (compute, database, storage) to communicate with each other. eg the Routers that route traffic between network switches, Firewalls to "allow" or "deny" traffic. switches, load balancers, firewalls, bandwidth, etc.
Cloud Service Models
- Platform as a Service(PaaS)
This is a cloud service model that offers a balance between customization and user control whereby the hardware, underlying architecture, and operating system are owned and managed by the cloud service provider. While the developers focus on designing the application layer without the need to install any software or get extra hardware to run the application. eg Google Firebase for building and deploying mobile and web applications, AWS Elastic Beanstalk, and Heroku.
- Infrastructure as a service(IaaS)
On-premises data centers usually comprise various infrastructures(all of the physical components contained in a data center environment) that perform various functions, and each of those infrastructures costs a lot to purchase and maintain.
Infrastructure as a service model(IaaS) gives you the flexibility of accessing different infrastructures(virtualization, storage, network, servers) based on your application needs without worrying about the operational cost and maintenance of these servers.
It offers the greatest amount of user customization and control. The developer or user here has full control of the operating system, application, and the data to be used on these servers.
Examples of these cloud service models are Amazon Web Services, Microsoft Azure, and Google Compute Engine.
- Software as a service(SaaS)
Saas offers a way of delivering applications over the internet as a service. application like Netflix, which streams videos over the internet, and Slack, which is a messaging app for businesses are all examples of SaaS organizations. And it allows little to no end-user customization or control here.
In Summary, SaaS gives you a lot of flexibility to choose from a wide range of pre-built applications, IaaS gives you maximum control over the cloud and PaaS manages all the infrastructure for you.
There are different other cloud service models like Storage as a Service (SAAS), Communications as a Service (CAAS), Network as a Service (NAAS), Monitoring as a Service (MAAS), etc.
These are all an isolation of different services to enable users to have access to them independently And from their naming you can say what each of the services does.
In conclusion, it is very important for businesses/organizations transitioning to the cloud to take note of each of the services putting into consideration their business demands, financial budget, customers, etc to better ascertain the service that suits it.