Compute, It's a term that covers any service in Azure that enables a computation in the cloud. It provides computing resources like multi-core processors and supercomputers via virtual machines and containers.
Following are the list of Services that enable Compute in Azure.
- Virtual Machines (VMs)
- Scale Sets
- App Services
- Containers Instances
- Azure Kubernetes Service
- Windows Virtual Desktop
- Azure Functions
Each of these Compute Services fall under respective Cloud Service Models
- Virtual Machines (VMs) and Scale Sets fall under IaaS (Infrastructure as a Service) Offerings
- App Services and Azure Kubernetes Service fall under PaaS (Platform as a Service) Offerings
- Windows Virtual Desktop fall under SaaS (Software as a Service) Offerings
- Azure Functions, Containers Instances fall under Serverless Offerings
1. Virtual Machines
- Virtual Machines (VMs): A VM is a computer or server that you have exclusive access to. It’s virtual because it doesn’t have its own exclusive hardware. Multiple servers or machines might be running on the same physical hardware.
Role of Azure in Virtual Machines
- Azure’s Infrastructure as a Service (IaaS) Offering: Virtual machines are part of the IaaS offering on Azure. You manage everything except the hardware.
- Operating System and Application Control: You have complete control of what operating system to run, which applications to install, and how you maintain it all.
- Networking: Microsoft Azure provides the networking for the VM.
Benefits of Using Azure for Virtual Machines
- Additional Tooling: With Azure, you get additional tooling to manage up to thousands of VMs.
- Hybrid Cloud Control: Use the Azure portal to control your hybrid cloud that could include virtual machines on Azure and on-premises.
- Compliance with Company Guidelines: You can ensure virtual machine compliance with your company guidelines by using blueprints, which are templates for how VMs should be created.
Azure’s Recommendations and Templates for VMs
- Improvements and Changes: Azure will recommend improvements and changes to ensure high availability, security, performance, and lower costs.
Configurations and Setups for VMs
- Operating Systems: Virtual machines can run Windows or Linux in a large range of configurations and setups.
Pricing Considerations for VMs
- Pricing Calculation: Pricing for VMs is calculated hourly and depends on how much ground you need. The more CPUs and amount of RAM you want, the more you pay per hour.
Specialized Virtual Machines
- Dedicated GPUs: Recently, new types of virtual machines have been released that have dedicated graphical processing units (GPUs). These are great for artificial intelligence and deep learning scenarios.
When to Use Virtual Machines
- Creating a New VM Instance: Generally, you choose to spin up a new instance when you need to control all aspects of the machine, when you want to install a specific application on Windows or Linux and want to control its environment, or because you have some existing infrastructure you want to move to the cloud and a VM makes it straightforward.
- Alternatives to Using VMs on Azure: If you use a different service on Azure (for example, hosting a website with an app service), then you don’t need a VM.
Maintenance Responsibilities for VMs
- Maintenance: Having your own virtual machine means you also have to maintain it.
- Role of VMs in Azure’s Compute Offering: Virtual machines are an integral part of the compute offering on Azure and they are widely used.
2. Scale Sets
- Definition and Purpose: Scale sets allow you to create and manage a group of identical, load-balanced virtual machines (VMs) in Azure. These VMs serve as a pool of resources that can be dynamically scaled up or down based on demand.
- Baseline VM and Clones: Start with a baseline VM, which defines the configuration you want for your scale set. From this baseline, you can instantly create clones of VMs to form your scale set.
- Resource Management: Imagine each VM as a glass of water. When a VM’s resources (CPU, memory) are near capacity (like a glass filling up), Azure automatically adds another VM from the scale set. Conversely, when resource usage decreases, VMs are removed automatically.
- High Availability and Resiliency: Scale sets ensure high availability for your application. If one VM fails, others continue serving traffic. They enhance application resiliency by distributing load across multiple VMs.
- Auto Scaling: Demand on your application fluctuates. Scale sets automatically add or remove VMs to match demand. No unnecessary VMs run, saving costs.
- Large Scale: Scale sets can accommodate up to a thousand VMs in a single set. No additional cost beyond what you pay for VMs, storage, and load balancers.
Use Case Example: Imagine running an online store. As traffic varies throughout the day and during sales, scale sets handle VM provisioning and removal efficiently. Manual scaling would be inaccurate and time-consuming, but a scale set optimizes resource usage.
3. App Services
What are App Services?
Azure App Service is an HTTP-based service designed for hosting web applications, REST APIs, and mobile back ends. It provides a fully managed platform, meaning that Azure handles the underlying infrastructure (servers, network, storage) so you can focus on your business logic. App Services support multiple languages and frameworks, including .NET, .NET Core, Java, Node.js, PHP, and Python. Applications can run and scale seamlessly on both Windows and Linux environments.
Categories of App Services:
- Web Apps: These are typical websites and online applications hosted on Azure. Web apps can run on both Windows and Linux machines. They integrate well with other Azure services and tools. Developers find them easy to deploy to. Features include auto scaling and load balancing for resilience and high availability.
- Web Apps for Containers: Allows you to deploy and run containerized applications in Azure. Containers are self-contained units of software that package all dependencies (code, programs, and applications). You can deploy your applications anywhere using container images.
- API Apps: Efficiently connect and expose any data backend. APIs are software interfaces without graphical components (no user interface). Commonly used to sell data to clients. Supports various programming languages like C#, Python, PHP, and Java. Provides secure access and easy setup.
4. Containers Instances
- Introduction to Containers: Containers are a solution to manage software dependencies and deployment challenges. Imagine shipping various items without proper packaging, it would be slow, error-prone, and custom for each item. Similarly, traditional software deployment often led to the infamous “works on my machine” issue. To address this, we have containers which is a standardized way to package applications along with their dependencies.
- Shipping Containers Analogy: Think of shipping containers used for transporting goods worldwide. Regardless of the cargo (whether it’s a budgie, spanner, or anything else), as long as it fits inside the container, it can be shipped. The container provides necessary interfaces and dependencies for efficient transportation.
- Containers in Computing: Containers in computing work similarly. A container encapsulates an application along with all its dependencies (frameworks, libraries, etc.). Unlike full-blown virtual machines, containers are lightweight and don’t include unnecessary operating system components. You can run multiple containers on the same machine or server.
- Benefits of Containers:
- Dependency Management: Containers bundle all dependencies, ensuring consistency across environments.
- Less Overhead: Containers avoid the excess baggage of full VMs.
- Portability: Applications in containers can run on different OS and hardware platforms.
- Efficiency: Containers simplify development, scaling, and patching.
- Consistency: Applications behave consistently regardless of deployment location.
Using Containers on Azure: Develop your software as usual. Wrap your application in a container image. Deploy or publish the container image to Azure Container Instances (ACI). ACI allows you to run containers without managing virtual machines. You can spin up instances, process data, and shut down containers as needed, saving costs and resources. ACI is accessible through the Azure portal, CLI, or PowerShell.
5. Azure Kubernetes Services (AKS)
It’s a service that simplifies container management and orchestration
- Introduction to AKS: When dealing with many containers, relying solely on the Azure Portal or CLI can become cumbersome. So here comes Azure Kubernetes Services (AKS) which is a powerful solution for managing containerized workloads efficiently.
Understanding Kubernetes:
- Open Source: Kubernetes’ code base is public, allowing community contributions and engagement.
- Orchestration System: It manages various variables and features to achieve desired outcomes.
- Container Setup: Kubernetes ensures correct container configurations, including file systems and objects.
- Automatic Deployment: Kubernetes dynamically scales container instances based on demand.
- Automatic Scaling: It monitors load and adjusts container instances accordingly.
Core Features of Kubernetes:
- Replicating Architectures: Kubernetes allows replicating successful container setups.
- Azure Integration: Kubernetes resides in Azure as Azure Kubernetes Services (AKS).
- Managed Service: AKS provides all Kubernetes features while being managed by Azure.
- Standard Azure Services: AKS integrates with Azure services like Identity, Access Management, and elastic provisioning.
- Global Reach: Supported Azure regions and on-premises installations via Azure Stack.
- Container Images and Azure Container Registry (ACR): Azure Container Registry (ACR) tracks valid container images. ACR manages container images and associated files (artifacts) as a fully managed Azure service. When creating new containers, AKS fetches images from ACR. Azure identity and security ensure safe container images.
- Cluster: AKS manages containers within a cluster—a set of machines (nodes) running containerized applications.
- Pods: Pods group one or more containers with shared storage and network settings. Your order-processing application resides in a pod. When order volume increases, AKS automatically provisions additional pods to handle the load.
6. Azure Virtual Desktop (AVD)
Introduction to Azure Virtual Desktop (AVD):
- AVD provides a Windows environment for remote employees.
- It runs entirely on Azure, not on local machines. You can choose any Azure virtual machine size and configuration to host the Windows 10 instance (except Linux machines).
- Accessible from any device with web access and a modern web client (Windows, Mac, Linux, smartphones, etc.).
Benefits of Azure Virtual Desktop:
- Cost Savings: Reuse existing Windows 10 licenses to reduce expenses.
- Concurrent Sessions: Multiple users can run concurrent sessions on the same instance.
- Anywhere Access: Use it from virtually any device, regardless of location.
- Secure Data Storage: Store company data securely in Azure instead of individual devices.
User Management and Security:
- Seamlessly integrates with Azure security features Such as:
- Multi-Factor Authentication which enhances user authentication
- Role-Based Access Control which controls user permissions.
- Azure Policies which enforces governance and compliance.
7. Azure Functions
- Azure Functions are the smallest and largest compute service on Azure.
- They represent a single function of compute that is a specific action triggered by a unique web address.
- When an application or user invokes an Azure function via its web address, it processes the request and performs its task.
- Functions can interact with other Azure services, call additional functions, or provide replies.
- Once the function completes its task, it remains idle until invoked again.
How Azure Functions Work:
- Functions run on virtual machines (VMs) within Azure.
- However, you don’t need to worry about VM maintenance or processes—it’s a serverless compute service.
- Developers can focus solely on the functionality they want to implement.
- Imagine a business where users upload pictures of their products.
- Azure Functions come into play: When a user uploads an image, an Azure function receives it.
- The function’s sole job is to process the image—compressing it and converting it to the correct file format.
- The processed image is stored in a database for future use.
- The function then terminates.
Advantages of Azure Functions:
- Cost Efficiency: Functions run only when needed (e.g., during image uploads). No idle resources mean cost savings.
- Isolated Failures: If one function fails, it doesn’t impact other image processing tasks.
- Risk Distribution: By using separate functions, risks are spread across the application.
- Serverless Flexibility: Functions allow platform to scale without managing VMs.
Overall Summary
Any Service that enables Computation power in the Cloud is called Compute and the following are the seven services that falls under Compute in Azure.
- A virtual machine, or VM, is a computer you have access to exclusively. You don’t buy, own, or control the hardware. Azure does. VMs are an IaaS offering, where you control and manage everything on the machine. VMs managed by Azure gives you all of the Azure platform tools to manage them. Pricing for VMs goes up as you increase RAM and the number of CPUs. VMs are priced per hour.
- App Services offer an easy way to host web applications. They are part of the PaaS offering in Azure compute. Web apps cater to traditional websites and web applications. Web apps for containers allow hosting existing container images. API apps focus on backend data services without a graphical front-end.
- Containers provide a powerful way to manage dependencies, enhance portability, and streamline application deployment in the cloud. Azure Container Instances (ACI) is your go-to service for hosting and running containerized workloads on Azure.
- Azure Kubernetes Services is essential for efficiently managing container infrastructure on Azure. It combines the power of Kubernetes with Azure’s managed services, making container orchestration a breeze
- Azure Virtual Desktop streamlines remote work by providing a fully virtualized Windows 10 environment hosted on Azure. It’s a powerful solution for fast and secure access to company infrastructure.
- Azure Functions provide a lightweight, efficient way to execute specific tasks without the overhead of maintaining VMs. They’re a key component of serverless architectures