Nowadays, when working on software systems, you have heard about Cloud Computing technology. Understanding cloud fundamentals is an essential part when getting started with Cloud Computing. Amazon Web Services (AWS) is one of the cloud providers that offer over 300 services. Before starting with AWS, understand cloud concepts such as what is cloud computing, the advantages of using cloud computing, cloud computing types, and cloud deployment models.
In this article, we'll cover the concepts you need to build that solid foundation to implement Cloud Computing technologies.
What is Cloud Computing
Cloud computing gives you the option to transform IT infrastructure into a utility - which means you can get into your IT infrastructure via the internet, using computing resources on the cloud. Without the need to install or maintain these resources on-premises.
What is on-premise you might ask? Going with the on-premise way, you must manage your own servers, hire IT people, payor rent the real-estate for the servers.
The opposite of on-premise is the cloud providers, who provide you these services via the internet. The cloud providers are companies who own the servers, hire the IT people, pay and manage the real estate for the servers. Those companies give you the option to manage the configuration of the cloud services you use, and your code and they take care of the rest.
Simply put, Cloud Computing offers you on-demand access, through the internet to cloud computing resources, applications, servers (physical and virtual servers), data storage, development tools, networking capabilities, and more — hosted at remote data centers that are managed by cloud service providers.
Advantages of Using Cloud Computing
We learned what on-premise IT is, the traditional way of managing IT infrastructure. Based on the differences between on-premise and cloud computing provider solutions, there are some obvious benefits you get when using cloud computing resources.
Lower total cost of ownership (TCO)
For all the attributes of having your on-premise infrastructure that we mentioned such as managing your own servers, hiring the IT people, paying or renting the real-estate for the servers, those all come up with a price, and with the cloud computing technology, you eliminate the capital expenses.
In just a few clicks you're able to get up and running the computing resources you need for your applications — As Webiny's CEO Sven noted on the Serverless Chats podcast by answering Jeremy's question "What are the benefits of serverless for both small and big companies?" - "When using serverless, the cost of managing infrastructure will go way down, by releasing a big chunk of the budget or resources or working hours, that you can now focus on product iterations, so your product can grow faster. And if your product grows faster, you can out-innovate potential competitors, which can't afford that same level of innovation."
Scale and Performance
The two most important benefits you get when switching to cloud computing technologies is when you want your customers to have an amazing user experience using your product, anywhere - that means in the lowest or highest spikes of your product's traffic. Cloud computing services run on a worldwide network, so they're able to provide you the ability to scale and deliver the resources when they're needed.
Types of Cloud Computing Services
The cloud computing services fall into four different categories: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Serverless, and Software as a Service (SaaS). They are all built up on top of one another. We'll go through them to understand what they are and the differences between them.
Infrastructure as a Service (IaaS)
IaaS represent the building blocks for cloud IT by providing access to networking features, computers, and data storage space. You can use those resources to build your own products. These are offered by different cloud provider companies on a pay-as-you-go basis. Some examples of cloud providers are Amazon Web Services (AWS), Google Cloud Platform, and Microsoft Azure.
— Intended for Admins
Platform as a Service (PaaS)
I'm assuming you are a software developer? Well, this cloud computing category is designed for you. PaaS offers cloud computing services with an on-demand environment for development, testing, delivering, and managing software applications. This will make it easier for developers to create web or mobile applications, without worrying about the infrastructure, storage, network, and databases needed for development.
— Intended for Developers
I'll mention the definition of serverless computing based on Webiny's guide to serverless ⬇️
"Serverless means there are no servers you have to operate to run a particular service or an app. Usually, in Serverless architectures, you rely on services that are managed for you. Be that function-as-a-service, storage-as-a-service, and others. Using managed services means all the maintenance and operational tasks are abstracted away. Yes, there are still servers there, but they are no longer your responsibility to manage."
Some of the examples that offer serverless services are AWS Lambda Service, Cloudflare Workers, Google Cloud Functions, IBM Cloud Functions, Knative, Microsoft Azure Functions, Oracle Functions. When it comes to building serverless applications and APIs on top of these services, Webiny takes the lead! Webiny is a serverless framework — a complete plugin based admin interface and a set of ready-made serverless applications. Learn more about Webiny features here.
Software as a Service (SaaS)
SaaS takes place when cloud providers offer complete software products. The infrastructure, product maintenance, security its managed by the cloud provider. Some examples of this cloud computing category are Salesforce, Gmail, Office 336.
— Intended for Customers
Cloud Deployment Models
With this type of deployment model you'll have access to anything the cloud provider offers, from SaaS applications, virtual machines (VMs), infrastructure and development platforms — available to users via the public internet. Different cloud providers offer these services in different pricing models such as subscription-based, or pay-per-use.
One of the known characteristics of the Cloud is the multi-tenant* environment—the data centers infrastructure is shared by all public cloud customers. This leads to one or more disadvantages of the Cloud such as limited resources → Even though they have incredible computing power, they share their resources with multiple tenants.
Multi-tenant* → When a single instance of a software application serves multiple tenants (or user accounts).
Tenant* → Can be an individual user, but more often is a group of users that share common access and privileges within that instance of a software application.
On-Premise || Private Cloud
The on-premise cloud refers to the cloud computing resources being used by one organization or customer → sometimes is called a private cloud. One reason is the security that the on-premise offers for sensitive data for customers such as Government, Hospitals, Enterprises with different regulations. The on-premise cloud is hosted in the customer's data center, but it has the option to combine the hosting on an independent cloud provider's infrastructure.
A combination of the public cloud and on-premise → connecting an organization's on-premise cloud services and public clouds into a single infrastructure for all the organization's applications.
The goal is to have an optimal solution for each of the organization's applications to do the workloads between the two — based on the current requirements.
Using Hybrid cloud gives organizations the freedom to meet their business and technical objectives with benefits such as lower costs and efficiency rather than using just public or on-premise cloud.
Now that you know the cloud computing concepts, I think you are ready to start with some examples of cloud computing services or you can follow the blog on 5 AWS services you need for web development!
If you learned something new today and are interested to follow up on our blogs, subscribe to our newsletter and we'll provide you the best content of the serverless world!
Thanks for reading! My name is Albiona and I work as a developer relations engineer at Webiny. I enjoy learning new tech and building communities around them = ) If you have questions or just want to say hi, reach out to me via Twitter.