Public Cloud Compute Services Review (May 2020 update)

Table of Contents

AWS Compute Services

Amazon Elastic Compute Cloud (Amazon EC2)

Technology

The technology behind AWS EC2 VMs is Xen

SLA

Monthly Uptime Percentage to Customer of at least 99.99%

Machine Types

  • Selection of instance types optimized to fit different use cases.
    Up to 96 VCPU & 768 GB Memory.
  • GPU
    Up to 16 GPU & 64 GB of GPU Memory

Machine Options

  • Dedicated Instances are Amazon EC2 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 AWS accounts. Dedicated instances may share hardware with other instances from the same AWS account that are not Dedicated instances. Pay for Dedicated Instances On-Demand, save up to 70% by purchasing Reserved Instances, or save up to 90% by purchasing Spot Instances.
    • On Demand Instances you pay for compute capacity by per hour or per second depending on which instances you run. No longer-term commitments or upfront payments are needed.
    • Reserved Instances provide you with a significant discount (up to 75%) compared to On-Demand instance pricing. In addition, when Reserved Instances are assigned to a specific Availability Zone, they provide a capacity reservation, giving you additional confidence in your ability to launch instances when you need them.
    • Spot Instances– Amazon EC2 Spot instances allow you to request spare Amazon EC2 computing capacity for up to 90% off the On-Demand price
  • Dedicated Hosts – Physical EC2 server dedicated for your use. Dedicated Hosts can help you reduce costs by allowing you to use your existing server-bound software licenses.
    • Can be purchased On-Demand (hourly)
    • Can be purchased as a Reservation for up to 70% off the On-Demand price.
  • On Premises – AWS Outposts that allows run AWS infrastructure and services on premises for a truly consistent hybrid experience

Disks (Block & File Devices)

Amazon EC2 supports two types of block devices: Instance store volumes (virtual devices whose underlying hardware is physically attached to the host computer for the instance) and EBS volumes (remote storage devices), and a File Devices under Cloud File Storage

Instance store volumes

An instance store provides temporary block-level storage for your instance. This storage is located on disks that are physically attached to the host computer. Instance store is ideal for temporary storage of information that changes frequently, such as buffers, caches, scratch data, and other temporary content, or for data that is replicated across a fleet of instances, such as a load-balanced pool of web servers. SSD (up to 60 TB) and Magnetic (up to 48TB)

Elastic Block Storage (EBS)

Amazon EBS allows you to create storage volumes and attach them to Amazon EC2 instances. Once attached, you can create a file system on top of these volumes, run a database, or use them in any other way you would use a block device. Amazon EBS volumes are placed in a specific Availability Zone, where they are automatically replicated within the same AZ to protect you from the failure of a single component.

You can create EBS General Purpose SSD (gp2), Provisioned IOPS SSD (io1), Throughput Optimized HDD (st1), and Cold HDD (sc1) volumes up to 16 TiB in size.

Cloud File Storage

Cloud file storage is a method for storing data in the cloud that provides servers and applications access to data through shared file systems. This compatibility makes cloud file storage ideal for workloads that rely on shared file systems and provides simple integration without code changes. Amazon Cloud File Storage systems can store petabytes of data.

Auto Scaling

AWS Auto Scaling monitors your applications and automatically adjusts capacity to maintain steady, predictable performance at the lowest possible cost.

Features:

  • Auto Scaling Plans
  • Maintain current instance levels based on a periodic health check
  • Manual Scaling where you specify the change in the maximum, minimum or desired capacity
  • Scheduling Scaling for predictable changes
  • Dynamic Scaling based on a policy
  • Auto Scaling Group is a collection of AWS EC2 instances by the Autoscaling Service that have a minimum, maximum, and, desired number of EC2 instances.
  • Scaling Policy can be associated with CloudWatch alarms
  • The cooldown period is a configurable setting for your Auto Scaling group that helps to ensure that it doesn’t launch or terminate additional instances before the previous scaling activity takes effect.

Parallel Cluster

AWS ParallelCluster is an AWS-supported open source cluster management tool (based on CfnCluster project) that helps you to deploy and manage High Performance Computing (HPC) clusters in the AWS Cloud

Billing Model

  • On Demand: Pricing is per instance-hour consumed for each instance, from the time an instance is launched until it is terminated or stopped. Each partial instance-hour consumed will be billed per-second for Linux Instances and as a full hour for all other instance types.
  • Discounts:
    • Spot Instances up to 90%
    • Reserved Instances up to 75%
    • Dedicated Host depending on your legacy SW licenses reutilizations

Other

  • Linux & Windows Support
  • Public and Custom Image Support
  • Snapshot support
  • Start & Termination Script
  • Migration tools and methodology
  • VMware Cloud on AWS is an integrated cloud offering jointly developed by AWS and VMware that allows organizations to seamlessly migrate and extend their on-premises VMware vSphere-based environments to the AWS Cloud running on Amazon EC2 bare metal infrastructure.

Amazon Lightsail

Lightsail is a lightweight, simplified product offering of AWS,  hard disks are fixed size EBS SSD volumes, instances are still billable when stopped, security group rules are much less flexible, and only a very limited subset of EC2 features and options are accessible.

Lightsail has been created for customers who want a very simple to understand hosting plan and host simple websites.

EC2 Container Service (ECS) & Elastic Container Service for Kubernetes (EKS)

AWS offer two options for CaaS:

  • EC2 Container Service (ECS).
    This was the first version of CaaS. It is a highly scalable, fast, container management AWS service that makes it easy to run, stop, and manage Docker containers on a cluster.
  • Elastic Container Service for Kubernetes (EKS).
    Amazon EKS runs the Kubernetes management infrastructure. Applications running on any standard Kubernetes environment are fully compatible and can be easily migrated to Amazon EKS

 

The original AWS solution for CaaS was ECS, however due to the market pressure with Kubernetes AWS decided to release the managed service of Kubernetes EKS.

Currently the integration of EKS with the rest of AWS services is not as complete as ECS but it is a matter of time.

Clearly the winning bet is EKS given the compatibility with other managed services of kubernetes and implementations on premise.

 

Amazon EKS features:

  • AWS Load-balancing integration.
  • Automatic scaling of your cluster’s node instance count
  • Automatic upgrades for your cluster’s node software
  • Hybrid Networking
  • Workload Portability, on-premises and cloud
  • Identity and Access Management Integration
  • Logging and Monitoring

Amazon ECR Registries allows o host your images in a highly available and scalable architecture, allowing you to deploy containers reliably for your applications. You can use your registry to manage image repositories and Docker images. Each AWS account is provided with a single (default) Amazon ECR registry  with the additional features:

  • Fine-grained access control.
  • Existing CI/CD integrations

You pay per hour for each Amazon EKS cluster that you create and for the AWS resources you create to run your Kubernetes worker nodes.

AWS Elastic Beanstalk and AWS Batch

AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.

Features:

  • Wide Selection of Application Platforms; Java, .NET, Node.js, PHP, Ruby, Python, Go, and Docker to deploy your web applications.
  • Variety of Application Deployment Option (Visual Studio and Eclipse)
  • Monitoring, Logging, and Tracing
  • Management and Updates
  • Scaling
  • AWS Resources Customization

AWS Batch enables developers, scientists, and engineers to easily and efficiently run hundreds of thousands of batch computing jobs on AWS. AWS Batch dynamically provisions the optimal quantity and type of compute resources.

Features:

  • Support for multi-node parallel jobs
  • Granular job definitions
  • Simple job dependency modeling
  • Support for popular workflow engines
  • Dynamic compute resource provisioning and scaling
  • Priority-based job scheduling
  • Dynamic spot bidding
  • Integrated monitoring and logging
  • Fine-grained access control

There is no additional charge for AWS Elastic Beanstalk and AWS Batch. You pay for AWS resources (e.g. EC2 instances or S3 buckets) you create to store and run your application.

AWS Lambda

Language Runtimes

AWS Lambda natively supports Java 8-11, Go 1.x, PowerShell and C# (.Net Core 3.1 and 2.1), Python 3.8-3.7-3.6-2.7, Node.js 12 & 10, and Ruby 2.7-2.5 code.

In addition, you can implement an AWS Lambda runtime in any programming language. A runtime is a program that runs a Lambda function’s handler method when the function is invoked.

Events and Triggers

  • HTTP— HTTP requests using Amazon API Gateway or API calls made using AWS SDKs.
  • Amazon S3
  • Amazon DynamoDB
  • Amazon Kinesis Data Streams
  • Amazon Simple Notification Service
  • Amazon Simple Email Service
  • Amazon Simple Queue Service
  • Amazon Cognito
  • AWS CloudFormation
  • Amazon CloudWatch Logs
  • Amazon CloudWatch Events
  • AWS CodeCommit
  • Scheduled Events (powered by Amazon CloudWatch Events)
  • AWS Config
  • Amazon Alexa
  • Amazon Lex
  • Amazon API Gateway
  • AWS IoT Button
  • Amazon CloudFront
  • Amazon Kinesis Data Firehose
  • Other Event Sources: Invoking a Lambda Function On Demand

AWS Serverless Application Model (AWS SAM) and Serverless Application Repository

An open-source framework that you can use to build  Serverless Application ( a combination of Lambda functions, event sources, and other resources that work together to perform tasks) together with a  repository for serverless applications.

Timeout

Function execution time is limited by the timeout duration, which you can specify at function deployment time. A function times out after 3 seconds by default, but you can extend this period up to 15 minutes. When function execution exceeds the timeout, an error status is immediately returned.

SLA

Monthly Uptime Percentage <= 99.95%

Billing Model

  • Lambda counts a request each time it starts executing in response to an event notification or invoke call, including test invokes from the console. You are charged for the total number of requests across all your functions.
  • Duration is calculated from the time your code begins executing until it returns or otherwise terminates, rounded up to the nearest 100ms. The price depends on the amount of memory you allocate to your function.
  • Data Transfer out to internet
  • The Lambda free tier includes 1M free requests per month and 400,000 GB-seconds of compute time per month.