VMs are an ideal choice when you need:
Total control over the OS
The ability to run custom software
To use custom hosting configurations
When to use virtual machines:
During testing and development
When running applications in the cloud
When extending your datacenter to the cloud
During disaster recovery
When the VM is part of an availability set, updates are sequenced so that not all the associated VMs are rebooted at the same time. They are put into different update domains
With an availability set you get:
Up to three fault domains that have a server rack with dedicated power and network resources
Five logical update domains which then can be increased to 10
There is no cost for an availability set, just for the VMs in the set
Virtual machine scale sets let you create and manage a group of identical, load balanced VMs.
This allows you to centrally manage, configure and update many VMs to provide highly available applications.
Azure batch enables large scale job scheduling and compute management
Batch:
Starts a pool of compute VMs for you
Installs applications and staging data
Runs jobs with as many tasks as you have
Identifies failures
Requeues work
Scales down the pool as work completes
PaaS to upload containers and execute them directly with automatic elastic scale
A complete orchestration service for containers with multiple architectures with multiple containers
Breaking solutions into smaller, independent pieces. This allows the separate components of the app to be maintained, scaled or updated independently.
The process is as follows:
Convert the application to containers and publish to Azure Container Registry
Deploy the containers to an AKS cluster
Azure AD controls access to AKS resources
You access Azure services
Optionally, AKS is deployed with a virtual network
You pay for the compute resources your app uses. The app service plan determines how much hardware is devoted to the host. There’s even a free tier for low traffic sites
Web apps - Host web apps
API apps - Build REST-based Web APIs
Web Jobs - Run a program or script in the same context as a web app. They can be scheduled or run by a trigger
Mobile app back ends
Store mobile app data in a cloud based SQL database
Authenticate customers
Send push notifications
Execute custom back end logic
Serverless encompasses three ideas:
Abstraction of servers - Don’t need to manage them
Event-driven scale - Code runs when events come in
Micro billing - Only pay for the time code runs
Azure functions are ideal for when you’re only concerned about the code running your service. They commonly perform work in response to an event.
Azure functions scale automatically based on demand.
Azure functions can be either:
Stateless - Behave as if they’ve been restarted every time they respond to an event
Stateful - A context is passed through the function to track prior activity
Logic apps execute workflows designed to automate business scenarios and built from predefined logic blocks.
Every logic app workflow starts with a trigger. Azure Logic apps can be designed without code.
Functions | Logic apps | |
---|---|---|
Development | Code First | Designer First |
Connectivity | Few built in bindings, write code for all else | large collection of connectors, write code for others |
Actions | Each activity is an Azure function; write code for activity functions | Large collection of ready made functions |
Monitoring | Azure application insights | Azure portal, Log Analytics |
Management | REST API, Visual Studio | Azure portal, REST API, PowerShell, Visual Studio |
Execution context | Locally and in cloud | Only in cloud |