The objective of this post is to analyze the Compute Services offered by the four main providers of public cloud; AWS, GCP, Azure and Alibaba
Public Cloud Compute Services
We can define Public Cloud Compute Services as the Cloud Platform or Engine to execute your business logic. Ok this is a very generic definition, but we can understand the services better if we go deeper into the next level.
In general, AWS, GCP, Azure and Alibaba have structured his Compute Services in four types of services:
- Infrastructures as a Service (IaaS)
- Container as a Service (CaaS)
- Application as a Service (AaaS)
- Functions as a Service (FaaS)
Moving from a model of high level of configurability and access of the underline infrastructure (IaaS) to a Serveless Model were the developer only have to take care of the application code (FaaS).
IaaS (Infrastructure as a Service)
IaaS was the first computing services offer by the Public cloud Provider and now it is a commodity.IaaS provides the basic building blocks for cloud IT and typically provide access to networking features, computers (virtual or on dedicated hardware), and data storage space.
Infrastructure as a Service provides you with the highest level of flexibility and management control over your IT resources and is most similar to existing IT resources that many IT departments are familiar with today.
During the last years all the Public Cloud has aligned the offering covering the following features:
- Predefined Virtual Machines with a wide range of VCPU’s and Memory depending of your type of workload:
- Standard o General Purpose
- High CPU Optimize
- High Memory Optimize
- Custom Virtual Machines where you can combine Cores and Memory to cover your specific needs
- Graphics processing units (GPUs) to accelerate specific workloads on your instances such as machine learning and data processing.
- Linux & Windows Support
- SSD and Magnetic storage local o network disks
- Supports Auto Scaling
- Supports different model of Billing; On demand, Reserved or Preemptible
- Images and Instance templates management
- Custom or default Virtual private network to deploy the VM
And offer different models of Machine agreements:
- Dedicated Instances are instances that run in a VPC on hardware that’s dedicated to a single customer. Your Dedicated instances are physically isolated at the host hardware level from instances that belong to other accounts. Dedicated instances may share hardware with other instances from the same account that are not Dedicated instances. Pay for Dedicated Instances On-Demand, Reserved Instances, or Spot Instances.
- On-Demand Instances let you pay for compute capacity by unit of time with no long-term commitments or upfront payments.
- Perfect for users that want the low cost and flexibility without any up-front payment or long-term commitment
- Applications with short term, spiky, or unpredictable workloads that cannot be interrupted
- Applications being developed or tested for the first time
- Reserved Instances provides you with a capacity reservation, and offer a significant discount on the hourly charge for an instance 1 Year to 3 Year Terms.
- Applications with steady state or predictable usage
- Applications that require reserved capacity
- Spot Instances: With Spot Instances, you can bid for unused capacity in a cloud vendors data center. You can save up to 90% of the cost when compared to On-Demand Instances. However, if some else bids higher than you, your Instance will be taken away.
- Applications that have flexible start and end times
- Applications that are only feasible at very low compute prices
- Users with an urgent need for large amounts of additional computing capacity
- On-Demand Instances let you pay for compute capacity by unit of time with no long-term commitments or upfront payments.
- Dedicate Host are physical server dedicated for your use. Dedicated Hosts can help you reduce costs by allowing you to use your existing server-bound software licenses.
-
- Useful for regulatory requirements that may not support multi-tenant virtualization.
- Great for licensing which does not support multi-tenancy or cloud deployments.
- Can be purchased On-Demand or Reserved
-
- On Premises that allows extend the Provider fully managed IaaS solution on-premises under an hybrid approach.
CaaS (Container as a Service)
CaaS provides a managed environment for deploying, managing, and scaling your containerized applications. The trend today is to use Docker containers with Kubernetes that was led by Google.
Kubernetes is open source software that allows you to deploy and manage containerized applications at scale. Kubernetes manages clusters of the Public Cloud IaaS compute instances and runs containers on those instances with processes for deployment, maintenance, and scaling. Using Kubernetes, you can run any type of containerized applications using the same toolset on-premises and in the cloud.
In the future the vendors will also provide solutions to cover all life cycle management including Continuous Integration and Continuous Delivery customize for a Kubernetes/Docker environment. Up to date they are offering approaches based on Open Source solutions.
Finally the trend is start to offer CaaS with Kubernetes in a Serverless mode.
AaaS (Application as a Service)
AaaS is the next level of abstraction provide by the Public Cloud providers to simplify the work of deploying web and mobile applications offering a fully managed platform that completely abstracts away infrastructure so you focus only on code.
In addition to the Infrastructure abstraction the AaaS also cover the life cycle management of the application to perform more robust deployment workflows than deploying your website directly to production.
Finally, under AaaS is also cover the Batch Engine that allows you to run applications, long-running scripts, or heavy compute scripts without creating or managing the underlying infrastructure of VM pool.
AaaS seems the optimal solution for new applications, however there are some issues:
- Each Public Cloud offer a different approach (and no one standard) that means a strong Lock-in with the Vendor
- It seems that Public Cloud vendors have stopped betting on this initiative and focus on the options of CaaS and FaaS
- There are limitations in the use of third-party products, languages and application architecture.
FaaS (Function as a Service)
FaaS is the maximum level of abstraction provide by the Public Cloud vendors to simplify the deployment of code. FaaS is a Serverless execution environment for building cloud services encapsulated in functions. With FaaS you write simple, single-purpose functions that can be used in the following way:
- As an event-driven compute service where the function runs in response to events.
- As a compute service to run your function in response to HTTP requests.
Functions are really Serverless and Scales automatically.
Although the technology used for FaaS in each Public Cloud vendor is different, the interfaces and features are very similar, which allows with a light architecture to avoid the Lock-in.
The billing model is also very similar; Pay only while your code runs.
However, FaaS is not the perfect solution to develop applications. It has limitations that must be taken into account as:
- Limited execution Timeout
- Latency to start the function
- Limited languages
So up to date, Functions are appropriate anytime you want to use Serverless infrastructure to run code snippets that no need a low latency response.
In addition, some providers are empowering the Serverless model with the concept of Serverless Applications as a combination of Functions and the rest of resources requires to run an application like interfaces API’s, events, etc.
Public Cloud Compute Services Use Cases & Recommendations
Good For: | |||
- Legacy Monolithic Systems | - New developments and Legacy Containerized systems - Microservices | - Rapid Deployment of web facing applications | - Event driven transformations - Light Microservices |
Pros: | |||
- You can customized OS - Any machine shape - CDN supported - Low latency storage options - Legacy configuration support | - Platform Independent - Logical level representation - Smart Defaults and have control resources (CPU/RAM) | - Code First - You can have infinite scalable app - Production Version Management | - Event Based - No Ops & Serverless - Pay per use - Fully managed option |
Cons: | |||
- You need to manage VM - You need to define Autoscalling policy | - Application should be containerized - You need a manager cluster - Constrained Runtimes | - You can’t customize OS - Lock-in solution - Constrained Runtimes | - Limited choice of programming env - No Low Latency - Cost of baseline - Function level granularity - Batch support - Less resources that can be adjusted for price/performance tradeoffs |
IaaS
Use Case | Description |
---|---|
Legacy Application Migration | Migration of a legacy system that requires a specific OS or OS changes or any monolithic application that cannot be containerized |
Development and test environment | Scalable DevOps Implementation |
Backup and disaster recovery | Backup and Disaster recovery of legacy on-premise systems |
High performance computing | Deploy a high performance computing system with a horizontal scalability |
AaaS
Use Case | Description |
---|---|
Web or Mobile App | Rapid deployment of web or mobile applications (warning lock-in) |
Batch Processing | Rapid deployment of batch applications |
CaaS
Use Case | Description |
---|---|
Microservices | Easily run microservices applications with deep integrations to Public Cloud vendor Services, while getting access to the full suite of Kubernetes functionality and popular open source tooling. |
Hybrid Container Deployment | Run highly available and scalable Kubernetes clusters on the Public Cloud vendor while maintaining full compatibility with your Kubernetes deployments running anywhere else. |
Batch Processing | The Kubernetes Jobs API lets you run sequential or parallel workloads on the cluster. |
Application Migration | Easily containerize and migrate existing applications to kubernetes without needing to refactor your code or tooling. |
FaaS
Use Case | Description |
---|---|
Real-Time Data processing / ETL | Listen and respond to Cloud Storage events such as when a file is created, changed, or removed. Process images, perform video transcoding, validate and transform data, and invoke any service on the internet from your Cloud Functions. |
Intelligent Applications | Virtual Assistants and Chatbots. Video/Audio analysis. |
Webhooks | Via a simple HTTP trigger, respond to events originating from 3rd party systems or from anywhere that can send HTTP requests. |
Lightweight APIs | Compose applications from lightweight, loosely coupled bits of logic that are quick to build and that scale instantly. Your functions can be event-driven or invoked directly over HTTP/S. |
Mobile Backend | Listen and respond to events from mobile applications. |
IoT | Use Cloud Functions to process, transform and store data from IoT in streaming. |