The cloud services ☁️ are programs that are hosted on a server, accessible from any device connected to the Internet, and all of them offer the end user functionalities and capacities adapted to specific needs.
A few years ago we couldn’t even think of having, for example, a bigdata cluster in a few minutes or even something much simpler like an application server, configured and ready to run with just one click. Now this type of service provides us with notable advantages, as its use is not restricted to a single physical computer, and the security, storage capacity and resources of the cloud are greater than those of a traditional computer.
Cloud services are known for their special nomenclature, with the well-known “as a Service” format which is represented generically by XaaS, basically “Anything as a Service”.
In this post I will tell you the meaning of the most common and used services today, although more and more cloud providers have more and more specific services and new services and associated nomenclatures are emerging. The most common and known by the Cloud users are IaaS, PaaS, SaaS, CaaS or FaaS.
IaaS (Infrastructure as a Service) 💻
This service is based on the fact that the supplier “rents” the infrastructure and gives the customer the possibility to control it almost entirely. We could choose or select the resources of the machine (such as processor, RAM memory, hard disk…) depending on the needs.
There are a series of “flavours” by default, which allow you to select these characteristics under a specific plan that corresponds to a cost depending on them.
The most common billing model is pay-per-use, so we can control the costs based on the fact that we will only be charged for the time the machine is in use, and it will not be billed as long as it is turned off. This model is a significant advantage for large companies, as it reduces both hardware and infrastructure maintenance costs. In addition, the supplier is responsible for keeping the hardware up to date in a transparent way.
If we make use of this model, we will only have to select the Operating System with which we want to work, and from that moment on we will be the administrators, being able to make use of the resources assigned freely and install or modify what we want.
If at any time we need to scale the capacities, it is possible to do it both vertically (changing the “flavour”), and horizontally (basically creating a “clone” of the original machine that behaves in the same way and can download the incoming requests at first, working as a cluster).
If we talk about a Private IaaS, all the advantages are kept except the saving of the installation cost, maintenance or the upgrade of the hardware.
PaaS (Platform as a Service) ⚙️
PaaS, or Platform as a Service, provides a platform and environment that allows developers to create applications and services. The provider in turn provides different tools, with different levels of complexity for the end user, which allow the creation and availability of applications in this model.
By using these services, a developer does not need to invest in infrastructure, nor time in its administration, which facilitates focusing on application development, improving time to market and reducing knowledge at the operating system or middleware level.
An example of PaaS would be a WebApp from Azure or ElasticBeanstalk from AWS , where we are offered an “application server” already installed and pre-configured, capable of running with a couple of configurations several types of software, developed with different technologies.
FaaS (Functions as a Service) ⌨️
FaaS, or Functions as a Service, also known as Serverless.
These services allow the execution of applications through containers that are created at the necessary moment for their execution, so that the developer does not have to worry about the management of the infrastructure on which its function is executed, focusing, therefore, on the functionality.
This greatly simplifies the development cycle and favours the use of microservices based architectures, facilitating the life cycle and continuous deployments.
Using this type of service infrastructure costs are reduced and it is important to know that costs are only generated when the service is used, that is, only during the time the function is executed. Normally the costs associated to these services are only for computer or CPU expenses during that time.
Examples: Azure Functions , AWS Lambda or Google Cloud Functions.
CaaS (Container as a Service) 🔩
Containers as a Service (CaaS) refers to a cloud service that allows software developers and operations teams to create, organize, run, scale, manage and stop containers through container-based virtualization (docker). A CaaS provider will typically provide a framework that allows users to make use of the service.
Examples of CaaS container orchestration platforms are Kubernetes , Docker Swarm or Apache Mesos. We have recently found services such as AKS, ARO or EKS where both Azure and AWS give us an environment with these capabilities, based on Kubernetes or RedHat Openshift for example.
Are there more services? 🧐
As we said in the first lines, the services are growing practically by the day, and really any service we can imagine may already have an existing implementation in any of the cloud providers that exist in the market. Concepts such as Bakup as a Service, Monitoring as a Service, Storage as a Service, etc… exist, and countless others.
Which is the best or the most complete? 👌
That depends and a lot on the needs of who is going to use it, each one has its advantages and we have to analyze very well which is our particular case before deciding for any of them.
The best thing is that all these types are available on the market and in different cloud providers, being able to use them in a combined way in an architecture that can combine the best of each of them, whether exclusively in public or hybrid cloud.
In Santander we make use of all of them, as well as our private cloud for different services and clients. All this mixed with the Agile and DevOps methodologies and the appropriate tools of development and software life cycle (ALM), provide us with a modern environment, adapted to new technologies and collaborative where to grow and be increasingly strong technologically.