Cloud Providers

Microsoft Azure

Microsoft Azure is Microsoft's comprehensive cloud computing platform that offers a vast array of services for building,
deploying, and managing applications and services.
Think of it as a global network of data centers managed by Microsoft, from which individuals,
companies, and governments can access computing resources over the internet.
Azure is used for a multitude of purposes, from hosting websites and mobile apps to running complex data analytics,
machine learning workloads, and Internet of Things (IoT) solutions.

Azure App Service:

Enables you to build and host web apps, background jobs, mobile back-ends,
and RESTful APIs in the programming language of your choice without managing infrastructure.
It offers automatic scaling and high availability. App Service supports Windows and Linux.
It enables automated deployments from GitHub, Azure DevOps, or any Git repo to support a continuous deployment model.
Azure App Service is a robust hosting option that you can use to host your apps in Azure.
Azure App Service lets you focus on building and maintaining your app, and Azure focuses on keeping the environment up and running.
Azure App Service is an HTTP-based service for hosting web applications, REST APIs, and mobile back ends.
It supports multiple languages, including .NET, .NET Core, Java, Ruby, Node.js, PHP, or Python.

Types of app services:

Web apps, API apps, WebJobs, Mobile apps.

App Service handles most of the infrastructure decisions you deal with in hosting web-accessible apps:

The built-in load balancing and traffic manager provide high availability.
Deployment and management are integrated into the platform.
Sites can be scaled quickly to handle high traffic loads.
Endpoints can be secured.

Web Apps:

App Service includes full support for hosting web apps by using ASP.NET, ASP.NET Core, Java, Ruby, Node.js, PHP, or Python.
You can choose either Windows or Linux as the host operating system.

API Apps:

Much like hosting a website, you can build REST-based web APIs by using your choice of language and framework.
You get full Swagger support and the ability to package and publish your API in Azure Marketplace.
The produced apps can be consumed from any HTTP- or HTTPS-based client.

WebJobs:

Feature to run a program [.exe, Java, PHP, Python, or Node.js] or script [.cmd, .bat, PowerShell, or Bash]
in the same context as a web app, API app, or mobile app.
They can be scheduled or run by a trigger.
WebJobs are often used to run background tasks as part of your application logic.

Mobile Apps:

Feature of App Service to quickly build a back end for iOS and Android apps. With just a few actions in the Azure portal, you can:
Authenticate customers against common social providers, such as MSA, Google, Twitter, and Facebook.
Store mobile app data in a cloud-based SQL database.
Execute custom back-end logic in C# or Node.js.
Send push notifications.
On the mobile app side, there's SDK support for native iOS and Android, Xamarin, and React native apps.

Azure Containers:

Containers are a virtualization environment. Much like running multiple virtual machines on a single physical host,
you can run multiple containers on a single physical or virtual host.
Unlike virtual machines, you don't manage the operating system for a container.
Virtual machines appear to be an instance of an operating system that you can connect to and manage.
Containers are lightweight and designed to be created, scaled out, and stopped dynamically.
It's possible to create and deploy virtual machines as application demand increases, but containers are a lighter weight, more agile method.
Containers are designed to allow you to respond to changes on demand.
With containers, you can quickly restart if there's a crash or hardware interruption. One of the most popular container engines is Docker.
Containers are often used to create solutions by using a microservice architecture.
This architecture is where you break solutions into smaller, independent pieces.
For example, you might split a website into a container hosting your front end, another hosting your back end, and a third for storage.
This split allows you to separate portions of your app into logical sections that can be maintained, scaled, or updated independently.

Azure Container Instances:

Offer the fastest and simplest way to run a container in Azure, without having to manage any virtual machines or adopt any additional services.
Azure Container Instances are a platform as a service [PaaS] offering.
Azure Container Instances allow you to upload your containers and then the service will run the containers for you.

Azure Container Apps:

Similar in many ways to a container instance. They allow you to get up and running right away, they remove the container management piece, and they're a PaaS offering.
Container Apps have extra benefits such as the ability to incorporate load balancing and scaling. These other functions allow you to be more elastic in your design.

Azure Kubernetes Service:

Container orchestration service. An orchestration service manages the lifecycle of containers.
When you're deploying a fleet of containers, AKS can make fleet management simpler and more efficient.

Azure Virtual Machines:

VMs provide infrastructure as a service [IaaS] in the form of a virtualized server and can be used in many ways.
Just like a physical computer, you can customize all of the software running on your VM. VMs are an ideal choice when you need:
Total control over the operating system [OS].
To use custom hosting configurations.
The ability to run custom software.

Virtual Machine Scale Sets:

Allow you to centrally manage, configure, and update a large number of VMs in minutes.
The number of VM instances can automatically increase or decrease in response to demand, or you can set it to scale based on a defined schedule.
Virtual machine scale sets also automatically deploy a load balancer to make sure that your resources are being used efficiently.
With virtual machine scale sets, you can build large-scale services for areas such as compute, big data, and container workloads.

Virtual Machine Availability Sets:

Another tool to help you build a more resilient, highly available environment.
Availability sets are designed to ensure that VMs stagger updates and have varied power and network connectivity, preventing you from losing all your VMs with a single network or power failure.
Availability sets do this by grouping VMs in two ways: update domain and fault domain.

Update Domain:
The update domain groups VMs that can be rebooted at the same time.
This allows you to apply updates while knowing that only one update domain grouping will be offline at a time.
All of the machines in one update domain will be updated.
An update group going through the update process is given a 30-minute time to recover before maintenance on the next update domain starts.

Fault Domain:
The fault domain groups your VMs by common power source and network switch.
By default, an availability set will split your VMs across up to three fault domains.
This helps protect against a physical power or networking failure by having VMs in different fault domains [thus being connected to different power and networking resources].

Azure Virtual Desktop:

Desktop and application virtualization service that runs on the cloud.
It enables you to use a cloud-hosted version of Windows from any location.
Azure Virtual Desktop works across devices and operating systems,
and works with apps that you can use to access remote desktops or most modern browsers.
Enables multiple concurrent users on a single VM.

Azure Virtual Network:

Azure virtual networks and virtual subnets enable Azure resources, such as VMs, web apps, and databases,
to communicate with each other, with users on the internet, and with your on-premises client computers.
You can think of an Azure network as an extension of your on-premises network with resources that link other Azure resources.

Azure virtual networks provide the following key networking capabilities:
Communicate with on-premises resources
Communicate between Azure resources
Isolation and segmentation
Connect virtual networks
Internet communications
Filter network traffic
Route network traffic

Azure virtual networking supports both public and private endpoints to enable communication between external or internal resources with other internal resources.
Private endpoints exist within a virtual network and have a private IP address from within the address space of that virtual network.
Public endpoints have a public IP address and can be accessed from anywhere in the world.

Isolation and segmentation:

Azure virtual network allows you to create multiple isolated virtual networks.
When you set up a virtual network, you define a private IP address space by using either public or private IP address ranges.
The IP range only exists within the virtual network and isn't internet routable.
You can divide that IP address space into subnets and allocate part of the defined address space to each named subnet.

Communicate with on-premises resources:

Azure virtual networks enable you to link resources together in your on-premises environment and within your Azure subscription.
In effect, you can create a network that spans both your local and cloud environments.
There are three mechanisms for you to achieve this connectivity:
Point-to-site virtual private network connections are from a computer outside your organization back into your corporate network.
In this case, the client computer initiates an encrypted VPN connection to connect to the Azure virtual network.
Site-to-site virtual private networks link your on-premises VPN device or gateway to the Azure VPN gateway in a virtual network.
In effect, the devices in Azure can appear as being on the local network.
The connection is encrypted and works over the internet.
Azure ExpressRoute provides a dedicated private connectivity to Azure that doesn't travel over the internet.
ExpressRoute is useful for environments where you need greater bandwidth and even higher levels of security.

Azure Tools

Azure Portal

Web-based, unified console that provides an alternative to command-line tools.
With the Azure portal, you can manage your Azure subscription by using a graphical user interface. You can:
Build, manage, and monitor everything from simple web apps to complex cloud deployments.
Create custom dashboards for an organized view of resources.
Configure accessibility options for an optimal experience.

Azure Cloud Shell

Browser-based shell tool that allows you to create, configure, and manage Azure resources using a shell.
Azure Cloud Shell support both Azure PowerShell and the Azure Command Line Interface (CLI), which is a Bash shell.
Has several features that make it a unique offering to support you in managing Azure. Some of those features are:
You choose the shell you’re most familiar with, Azure Cloud Shell supports both Azure PowerShell and the Azure CLI [which uses Bash].
It is authenticated to your Azure credentials, so when you log in it inherently knows who you are and what permissions you have.
It is a browser-based shell experience, with no local installation or configuration required.