Public Cloud Compute Services Review (May 2020 update)

Table of Contents

Azure Cloud Compute Services

Azure VM

Technology

Azure runs on a customized version of Hyper-V

SLA

Monthly Uptime Percentage to Customer of at least 99.95%

Machine Types

  • Selection of instance types optimized to fit different use cases
    Up to 416 VCPU & 11.4 TB Memory
  • GPU
    Up to 8 GPU & 96 GB of GPU Memory

Machine Options

  • Dedicated Instances
    • On-Demand Instances (Pay as you go) –Pay for compute capacity by the second, with no long-term commitment or upfront payments. Increase or decrease compute capacity on demand. Start or stop at any time and only pay for what you use. – allows you to pay a fixed rate by the hour (or by the second) with no Commitment.
    • Reserved Virtual Machine Instances – An Azure Reserved Virtual Machine Instance is an advanced purchase of a Virtual Machine for one or three years in a specified region. The commitment is made up front, and in return, you get up to 72 percent price savings compared to pay-as-you-go pricing
    • Spot (low-Priority VM) enable you to take advantage of our unused capacity. The amount of available unused capacity can vary based on size, region, time of day, and more. When deploying Low-priority VMs in VM scale sets, Azure will allocate the VMs if there is capacity available, but there are no SLA guarantees. At any point in time when Azure needs the capacity back, we will evict low-priority VMs. Low-priority Linux VMs come with 80% discount while the Windows VMs come with 60% discount.
  • Dedicated Hosts (Isolated VM) – Azure Compute offers virtual machine sizes that are Isolated to a specific hardware type and dedicated to a single customer. These virtual machine sizes are best suited for workloads that require a high degree of isolation from other customers for workloads involving elements like compliance and regulatory requirements. Customers can also choose to further subdivide the resources of these Isolated virtual machines by using Azure support for nested virtual machines.
  • On Premises – Azure Stack Portfolio  is an extension of Azure to consistently build and run hybrid applications across datacenters, edge locations, remote offices, and cloud. Azure Stack provides customers choice and flexibility based on their solution needs from consistent hybrid cloud on-premises with Azure Stack Hub that can be connected or disconnected from public cloud, to high-performance virtualization on-premises with Azure Stack HCI or an Azure managed appliance that provides intelligent compute and AI at the edge with Azure Stack Edge.

Disks (Block & File Devices)

Azure VMs use three types of Disks Storage:
  • Operating System Disk (OS Disk) The C drive in Windows or /dev/sda on Linux. This disk is registered as an SATA drive and has a maximum capacity of 2048 gigabytes (GB). This disk is persistent and is stored in Azure storage.
  • Temporary Disk The D drive in Windows or /dev/sdb on Linux. This disk is used for short term storage for applications or the system. Data on this drive can be lost in during a maintenance event, or if the VM is moved to a different host because the data is stored on the local disk.
  • Data Disk Registered as a SCSI drive. These disks can be attached to a virtual machine, the number of which depends on the VM instance size. Data disks have a maximum capacity of 32 TB per disk. These disks are persistent and stored in Azure Storage.

There are two types of disks in Azure: Managed or Unmanaged.

  • Unmanaged disks With unmanaged disks you are responsible for ensuring for the correct distribution of your VM disks in storage accounts for capacity planning as well as availability. An unmanaged disk is also not a separate manageable entity. This means that you cannot take advantage of features like role based access control (RBAC) or resource locks at the disk level.
  • Managed disks Managed disks handle storage for you by automatically distributing your disks in storage accounts for capacity and by integrating with Azure Availability Sets to provide isolation for your storage just like availability sets do for virtual machines. Managed disks also makes it easy to change between Standard and Premium storage (HDD to SSD) without the need to write conversion scripts.

Azure managed disks currently offers four disk types: of ultra solid-state-drives (SSD) up to 65 TB, premium SSD, standard SSD, and standard hard disk drives (HDD) that supports up to 32 TB

Azure File Storage:

Azure File Service is a fully managed file share service that offers endpoints for the Server Messaging Block (SMB) protocol, also known as Common internet File System or CIFS 2.1 and 3.0. This allows you to create one or more file shares in the cloud (up to 5 TB per share) and use the share for similar uses as a regular Windows File Server, such as shared storage or for new uses such as part of a lift and shift migration strategy.

Auto Scaling

An Azure virtual machine scale set can automatically increase or decrease the number of VM instances that run your application based on Autoscale rules.

Auto-scale can be configured to make scaling decisions based on

  • Time rule or Schedule to automatically scale the number of VM instances at fixed times.
  • Resource Metric rule (CPU, Memory, disk,…)
  • Custom Metric rule that your application(s) may be emitting.

Azure in addition to scale up or down allows sending a notification and invoking a Webhook

Azure CycleCloud

An enterprise-friendly tool for orchestrating and managing High Performance Computing (HPC) environments on Azure. With CycleCloud, users can provision infrastructure for HPC systems, deploy familiar HPC schedulers, and automatically scale the infrastructure to run jobs efficiently at any scale.

Billing Model

  • Pay as you go: Pay for compute capacity by the second, with no long-term commitment or upfront payments. Increase or decrease compute capacity on demand. Start or stop at any time and only pay for what you use.
  • Discounts:
    • Spot Instances (low-Priority VM). Low-priority Linux VMs come with 80% discount while the Windows VMs come with 60% discount
    • Reserved Instances up to 72%
    • Dedicated Host depending on your legacy SW licenses reutilizations

Other

  • Linux & Windows Support
  • Public and Custom Image Support
  • Snapshot support
  • Start & Termination Script
  • Elastic IP Addresses
  • Update and Fault Domains
  • Azure Stack; hybrid cloud platform that lets you provide Azure services from your datacenter

Azure Kubernetes Service (AKS)

As AWS, Azure has decided to evolve his Container technology to Kubernetes. In fact, the previous version Azure Container Service (ACS) will be retired on January 31, 2020, and is no longer recommended for new resources.

Azure Kubernetes Service (AKS) is a hosted Kubernetes service, Azure handles critical tasks like health monitoring and maintenance for you. The Kubernetes masters are managed by Azure. You only manage and maintain the agent nodes. As a managed Kubernetes service, AKS is free you only pay for the agent nodes within your clusters, not for the masters.

A Kubernetes cluster is divided into two components:

  • Cluster master nodes provide the core Kubernetes services and orchestration of application workloads. This cluster master is provided as a managed Azure resource abstracted from the user.
  • Nodes run your application workloads. An AKS cluster has one or more nodes, which is an Azure virtual machine (VM) that runs the Kubernetes node components and container runtime.

Azure AKS features:

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

Azure Container Registry  Simplify container development by easily storing and managing container images for Azure deployments in a central registry with the additional features:

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

Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices and containers. Service Fabric also addresses the significant challenges in developing and managing cloud native applications. Developers and administrators can avoid complex infrastructure problems and focus on implementing mission-critical, demanding workloads that are scalable, reliable, and manageable.

Service Fabric is Microsoft’s container orchestrator deploying microservices across a cluster of machines. Microservices can be developed in many ways from using the Service Fabric programming models, ASP.NET Core, to deploying any code of your choice.

Azure Container Instances offers the fastest and simplest way to run a container in Azure, without having to manage any virtual machines and without having to adopt a higher-level service.

In any case, for scenarios where you need full container orchestration, including service discovery across multiple containers, automatic scaling, and coordinated application upgrades, the best option is Azure Kubernetes Service (AKS).

Azure Kubernetes Service (AKS) is a free container service. You pay only for the virtual machines, and associated storage and networking resources consumed.

Azure Apps Service, Azure Cloud Services and Azure Batch

Azure App Service enables you to build and host web apps, mobile back ends, and RESTful APIs in the programming language of your choice without managing infrastructure with four components:

  • Web Apps; Build and deploy web apps faster at scale
  • Web App for Containers; Deploy and run containerized web apps
  • Mobile Apps; Build mobile apps for any device
  • API Apps
  • Easily build and consume APIs

Features:

  • Wide Selection of Application Platforms; Java, .NET, Node.js, PHP, Python  and Docker to deploy your web and mobile applications.
  • Auto-scaling
  • High availability
  • Supports both Windows and Linux
  • Enables automated deployments from GitHub, Azure DevOps, or any Git repository
  • Monitoring, Logging, and Tracing
  • Management and Updates

Azure Cloud Services is an example of a platform as a service (PaaS). Like Azure App Service, this technology is designed to support applications that are scalable, reliable, and inexpensive to operate. In the same way that App Service is hosted on virtual machines (VMs), so too is Azure Cloud Services. However, you have more control over the VMs. You can install your own software on VMs that use Azure Cloud Services, and you can access them remotely.

There are two types of Azure Cloud Services roles. The only difference between the two is how your role is hosted on the VMs:

  • Web role: Automatically deploys and hosts your app through IIS.
  • Worker role: Does not use IIS, and runs your app standalone.

Both App Services and Cloud Services provide a lot of good features and are a simple way to deploy your applications to the Microsoft Azure cloud. The primary differentiating factor is Cloud Services offers access to the underlying Azure VMs, and App Services do not.

However App Services is more convenient for these specific reasons:

  • Combine multiple applications together to save money
  • Free deployment slots
  • Faster deployments

Azure Batch allows run large-scale parallel and high-performance computing (HPC) batch jobs efficiently in Azure. Azure Batch creates and manages a pool of compute nodes (virtual machines), installs the applications you want to run, and schedules jobs to run on the nodes. There is no cluster or job scheduler software to install, manage, or scale. Instead, you use Batch APIs and tools, command-line scripts, or the Azure portal to configure, manage, and monitor your jobs.

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
  • Integrated monitoring and logging
  • Fine-grained access control

Azure App Service pricing is per hour with a cost depending on the plan; Shared (free), Basic, Standard, Premium and Isolated.

Azure Cloud Services pricing is per hour with a cost depending on the VM chosen

Azure batch pricing is per hour with a cost depending on the VM chosen. You  can also select low priority VM for higher discounts.

Azure Spring Cloud (preview)

Azure Spring Cloud makes it easy to deploy Spring Boot-based microservice applications to Azure with zero code changes. Spring Cloud provides lifecycle management using comprehensive monitoring and diagnostics, configuration management, service discovery, CI/CD integration, blue-green deployments, and more.

Azure Functions

Language Runtimes

Azure Functions natively supports C#-F# (.NET Framework 4.7 &.NET Core 2.2 &3.1), JavaScript (Node 6,8,10 & 12) Java 8 , Python 3.6, 3.7 & 3.8 and PowerShell

Events and Triggers

  • HTTP & Webhooks
  • Blob Storage
  • Cosmos DB
  • Event Grid
  • Event Hubs
  • Microsoft Graph Events
  • Queue storage
  • Service Bus
  • Timer

Timeout

Function execution time is limited by the timeout duration, which you can specify at function deployment time. A function times out after 5 minutes by default, but you can extend this period up to 10 minutes. When function execution exceeds the timeout, an error status is immediately returned. However with Premium and App Service plan you can have up to 60 minutes of timeout.

SLA

Monthly Uptime Percentage <= 99.95%

Billing Model

Azure Functions consumption plan is billed based on per-second resource consumption and executions. Consumption plan pricing includes a monthly free grant of 1 million requests and 400,000 GB-s of resource consumption per month per subscription in pay-as-you-go pricing across all function apps in that subscription. Azure Functions Premium plan provides enhanced performance and is billed on a per second basis based on the number of vCPU-s and GB-s your Premium Functions consume. Customers can also run Functions within their App Service plan at regular App Service plan rates.