The Cloud Explained
Table of contents
What is the Cloud?
The internet has allowed companies to deliver and rent their Infrastructure resources to others. This includes cloud providers such as Amazon, Microsoft and Google to use economies of scale to offer low-cost Infrastructure, Platform, Software Functions and/or BackEnd as services.
Services mean the IT resources are shared/split between clients, billed at a rate based on usage and typically have no lock-in contracts and are allocated instantly setup.
In essence, the cloud is renting/hiring IT infrastructure, services and equipment such as databases, computing power and data backup over the Internet instead of owning and maintaining the resources (On-Premise). This allows for the abstraction of the physical infrastructure and allows for easier scaling up and down as demand changes.
Types of cloud
The cloud can be categorized by its deployment and service model.
Deployment Models
Deployment specifies the type of cloud environment based on ownership, scale, access, nature and purpose. As well as the location of the servers to be utilized and who is responsible for them.
Current deployments models include public, private, hybrid, community and multi.
Public Cloud
Cloud infrastructure services are owned and operated by a provider and are provided over the Internet to the general public or organisations. Thus it is open for anybody to access the systems and services and therefore may be less secure.
Private Cloud
A private cloud consists of cloud computing resources used exclusively by one business or organization. The services and infrastructure are always maintained on a private network and the hardware and software are dedicated solely to your organization. This gives greater flexibility of control over cloud resources.
The cloud could be physically kept on the organization’s data centre (on-premise) or hosted by a third-party service provider. It is protected by powerful firewalls and under the supervision of an organization’s IT department.
Hybrid Cloud
A hybrid cloud combines on-premises infrastructure and/or a private cloud with the public cloud. Hybrid clouds allow data and apps to move between the clouds.
This allows the organisation to keep data/apps in a safe environment while taking advantage of the public cloud’s cost savings by moving the data/apps between different clouds depending on their needs.
Community Cloud
A community cloud is accessible by a community of organizations. It allows the organisation to launch in essence a private public cloud. This allows them to share the cost of a private cloud and increase the security that the public cloud can't provide.
They are formed based on a community, industry, or business. The cloud could be shared between multiple organizations which have similar regulations or duties. It is generally managed by a third party or by the combination of one or more organizations in the community.
Multi-cloud/Cross-Cloud
Multi-cloud/Cross-Cloud is when an organisation mixes and matches cloud computing and storage services from multiple vendors to form a single architecture that allows the improvement of infrastructure capabilities and costs.
The diversification of vendors reduces the dependency and risk of relining on one cloud provider.
It is similar to the hybrid cloud deployment approach, only instead of combining public and private cloud resources, it combines multiple public clouds from different vendors.
Service Model
The service Model refers to the layer the cloud providers maintain as a service. The Layers are as follows Networking, Storage, Servers, Virtualization, Operating System, Middleware, Runtime, Data and Application. The cloud service models offer a trade-off in control/customizability for ease of use/abstraction.
On-premise
The traditional method requires the organisation to acquire, own, maintain and scale the infrastructure and have staff to manage all layers.
IaaS (Infrastructure as a Service)
For IaaS the Cloud Provider manages/maintains the Networking, Hardware, Storage and Virtualization but allows the user to configure the infrastructure.
Networking
Allow the connection and communication between computing devices that allow the exchange of data and sharing of resources with each other. They use communications protocols to communicate over physical connections or wireless.
Storage
A repository for persistently storing and managing collections of data such as databases, simple files, emails, etc. A database is a series of bytes that is managed by a database management system (DBMS).
Servers/Hardware
The physical computer that a server program runs on is also frequently referred to as a server. Provides a service or resources to another computer program and its user, also known as the client.
Virtualization
The use of software to split a single computer/server into multiple computers that share the same hardware. Enables IT organizations to run more than one virtual system with each having its operating systems and applications on a single server.
Summary
IaaS gives you the highest level of flexibility and management control while avoiding the need to maintain data centres and hardware/servers and allowing the flexibility to scale IT resources up and down with demand. Typically the user is a system/IT admin.
Examples include
Amazon Web Services
Google Compute Engine
Microsoft Azure
Google Cloud Storage
PaaS (Platform as a Service)
For PaaS, the Cloud Provider manages the OS, Middleware and Runtime in addition to IaaS. This means the hardware and an application-software platform are provided and managed by a cloud service provider.
Operating System
Manages all of the software and hardware on the computer. It performs basic tasks such as file, memory and process management, handling input and output, and controlling peripheral devices such as disk drives and printers.
Middleware
Middleware is software that lies between an operating system and the applications. Essentially functioning as a hidden translation layer that enables communication and data management for distributed applications. It’s sometimes called plumbing, as it connects applications so data and databases can be easily passed between the “pipe”.
Runtime
The execution of code that uses and interacts with the computer's resources. The program is running with the instructions needed for proper execution. Doing this, allows the program to interact with the computing resources it needs to run.
Summary
PaaS allows the user, usually a developer to focus on the deployment and management of your applications and the data the app relies on. Note that it is harder to migrate between different cloud providers.
This helps you be more efficient as you don’t need to worry about resource procurement, capacity planning, software maintenance, patching and everything else involved in running your application.
Examples include
AWS Elastic Beanstalk
Windows Azure
Google App Engine
SaaS (Software as a Service)
SaaS is the delivery of software/applications over the internet through an app or browser. In this model the user is anyone and they use the software and don't need to know anything except how to use the software.
Data
Is the layer which contains, stores and receives all of the data that gets generated by visitors engaging with your app/website. The data layer is to provide a reliable place to collect data as its generated which improves scalability and performance.
Application
The actual application or software program is designed to carry out a specific task for the end-users.
Summary
With SaaS, all that is needed is an internet connection and knowledge of how to use the software with the vendors managing all potential technical issues.
Examples include
Google Gmail
Slack
Spotify
Hashnode
Adobe CC
Dropbox
Microsoft Office 365
Serverless
Serverless allows the abstraction of servers to allow developers to deploy code directly into production as if the server and underlying infrastructure have no impact. The servers still exist but are completely managed by the Cloud Provider who dynamically allocates resources as needed.
Serverless computing offerings typically fall into two groups, Backend-as-a-Service (BaaS) and Function-as-a-Service (FaaS). Serverless more commonly refers to FaaS.
FaaS (Function as a Service)
FaaS provides an event-driven computing architecture where functions are triggered by a specific event such as message queues or API calls.
In this method, the developers will still create the application logic however the code is executed in stateless compute instances that are managed by the cloud provider.
The resources will be allocated to create a stateless instance when an event happens and once finished the instance is terminated and the resources deallocated. This allows for the cloud provider to bill by the number of events.
Examples include
AWS Lambda
Google Cloud Functions
Microsoft Azure Functions
BaaS (Backend-as-a-Service)
The cloud provider provides the backend. This allows the developer to create and maintain the frontend only that typically calls the BaaS through APIs.
BaaS may offer authentication services, extra encryption, cloud-accessible databases, and high-fidelity usage data.
Examples include
Firebase
AWS Amplify
Azure Mobile Apps