Hosting applications on Azure

Azure provides a variety of different ways to host your application depending on your needs. This article suggests services to match requirements. It isn't proscriptive. You can mix and match services to meet your needs. Most production environments use a combination of services to meet their business and organizational needs.

Simplicity and control

Azure hosting services are provided with two considerations:

  • Simplicity versus control
    • Simple hosting platforms require less configuration and management but provide less control over the underlying infrastructure.
    • More complex hosting platforms require more configuration and management but provide more control over the underlying infrastructure.
  • Cloud-native versus Azure-native
    • Cloud-native can be thought of as cloud-portable using open-source workloads such as containers and open-source technologies such as Dapr. The applications you build can be deployed to any cloud provider.
    • Azure-native is specific to Azure with an investment in Azure-specific tools and technologies to manage that infrastructure. While these services include container workloads, they also include code-first, low-code, and infrastructure tooling specific to Azure with an emphasis on connecting and integration between Azure services.

Simplified hosting

Simplified hosting solutions are fully managed by Azure. You're responsible for the functionality such as code and environment configuration. Azure manages the underlying runtime and infrastructure including updates and patches. Simplified hosting is the Azure-native approach.

Balanced hosting

Balanced hosting solutions balance the need for simplicity with the need for control. You're responsible for the functionality such as code and environment configuration. Azure manages the underlying runtime and infrastructure including updates and patches. You can also bring your own container to the service. Balanced hosting is both Azure-native and Cloud-native.

Controlled hosting

Controlled hosting solutions give you full control over the underlying infrastructure. You're responsible for updates and patches as well as your code, assets, and environment configuration. Controlled hosting is the cloud-native approach.

Source-code hosting

For developers new to Azure who want to start new development, use the following chart to find the suggested hosting solution.

Diagram showing no code, low code in the first box, code in the second box and container in the third box with recommended services for each box.

No code or low code

Azure supports no-code solutions are part of its Azure-Cloud approach.

  • Logic Apps: Use a visual designer with prebuilt operations to develop a workflow for your enterprise and business-to-business scenarios.
  • Power Automate such as Power apps: Use when you need to automate business processes and workflows within the Microsoft 365 organization.

Code vs container

Low-code hosting solutions are designed to allow you to bring your code functionality without having to manage the application infrastructure.

Code-first hosting solutions are designed to host code. You can deploy your code directly to the hosting solution.

Container-first hosting solutions are designed to host containers. The service provides container-specific configuration options and features. You're responsible for the compute used inside the container. The services which host containers move from managed control to full responsibility so you only take on the amount of container management you want.

Kubernetes-centric orchestration hosting includes:

Service Focus Use
Azure Kubernetes Service Cloud-native Use for Kubernetes clusters with a declarative approach using configuration files and external artifacts.
Azure Service Fabric Azure-native Use an imperative approach to deploying microservices across clusters of machines. It provides a programming model that allows developers to write code that describes the desired state of the system, and the Service Fabric runtime takes care of making the system match that state.

Preconfigured container hosting means the orchestration options are preconfigured for you. Your ability to communicate between containers or container clusters might require an additional service such as Dapr.

Service Use
Azure App Service full-service web hosting
Azure Spring Apps Spring Boot applications
Azure Container Apps serverless container hosting
Azure Container Instances simple, single container hosting

Azure provides a container registry to store and manage your container images or you can use a third-party container registry.

Service Use
Azure Container Registry Use when you build and host your own container images, which can be triggered with source code commits and base image updates.

Serverless

Serverless hosting solutions are designed to run stateless code, which includes a consumption-based pricing tier that scales to zero when not used.

Service Use
Azure Container Apps Container hosting.
Azure Functions Code or container hosting.

Microservices

Microservices hosting solutions are designed to run small, independent services that work together to make up a larger application. Microservices are typically deployed as containers.

Service Use
Azure Container Apps Use for serverless containerized microservices.
Azure Functions Use for serverless code or containerized microservices.

Cloud edge

Cloud edge is a term to indicate if the Cloud service is located to benefit the user (client) or the application (server).

Client compute

Client compute is compute that runs on the client away from the Azure cloud. Client compute is typically used for client-side rendering and client-side processing such as browser-based or mobile applications.

Service Use
Azure Static Web Apps Use for static web apps that use client-side rendering such as React, Angular, Svelte, Vue, and Blazor.

Client availability

Service Use
Azure Front Door Use for all internet-facing applications to provide a global cached and secure network to your static and dynamic assets including DDoS protection, end-to-end TLS encryption, application firewalls, and geo-filtering.

Server compute

Server compute assets are files that are processed by the server before being served to the client. Dynamic assets are developed using back-end server compute, optionally integrated with other Azure services.

Service Use
Azure App Service Use this service for typical web hosting. This supports a wide set of functionality API endpoints, full-stack applications, and background tasks. This service comes with many programming language runtimes as well as the ability to provide your own stack, language, or workload from a container.
Azure Functions Use this service to provide your own code in the supported languages for either HTTP endpoints or event-based triggers from Azure services.
Azure Spring Apps Use to deploy Spring Boot applications without code changes.
Azure Container Apps Use to host managed microservices and containerized applications on a serverless platform.
Azure Container Instances Use this for simple container scenarios that don't need container orchestration.
Azure Kubernetes Service Use this service when you need a Kubernetes cluster. The control plane to manage the cluster is created and provided for you at no extra cost.

Server Endpoint Management

Server Endpoint Management is the ability to manage your server endpoint and its compute through a gateway. This gateway provides functionality such as versioning, caching, transformation, API policies, and monitoring.

Service Use
Azure API Management Use this service when you productize your REST, OpenAPI, and GraphQL APIs with an API gateway including quotas and rate limits, authentication and authorization, transformation, and cached responses.
Azure Application Gateway Use for regional load balancing (OSI layer 7). It can be used to route traffic based on URL path or host headers, and it supports SSL offloading, cookie-based session affinity, and Web Application Firewall (WAF) capabilities.
Azure Front Door Use for global load balancing (OSI layer 7) to provide a global cached and secure network to your static and dynamic assets including DDoS protection, end-to-end TLS encryption, application firewalls, and geo-filtering.
Azure Traffic Manager Use for distributing traffic by DNS (OSI layer 7) to your public facing applications across the global Azure regions. Traffic Manager uses DNS to direct client requests to the appropriate service endpoint based on a traffic-routing method. It supports various traffic-routing methods such as priority, performance, and geographic routing. It is ideal for managing traffic across multiple regions or data centers.

Automated compute

Automated compute is automated by an event such as a timed schedule or another Azure service and is typically used for background processing, batch processing, or long-running processes.

Service Use
Power Automate Use when you need to automate business processes and workflows.
Azure Functions Use when you need to run code based on a timed schedule or in response to events in other Azure services.
Container services (Azure Container Instances, Azure Kubernetes Service, Azure Container Apps) Use for standard automatable workloads
Azure Batch Use when you need high-performance automation.

Hybrid cloud

Hybrid cloud is a computing environment that connects a company’s on-premises private cloud services and third-party public cloud into a single, flexible infrastructure for running the organization’s applications and workloads.

Service Use
Azure Arc Use when need to manage your entire environment, both cloud and on-premises resources including security, governance, inventory, and management.

If you don't need to maintain your own infrastructure, you can use Azure Stack HCI to run virtual machines on-premises.

High performance computing

High-performance computing (HPC) is the use of parallel processing for running advanced application programs efficiently, reliably and quickly. The term applies especially to systems that function above a teraflop or 10^12 floating-point operations per second.

Service Use
Azure Batch 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. Developers can use Batch as a platform service to build SaaS applications or client apps where large-scale execution is required.
Azure BareMetal Instances Use when you need to run in a nonvirtualized environment with root-level access to the operating system, storage and network.
Azure Quantum workspace Use when you need to develop and experiment with quantum algorithms.
Microsoft Genomics Use for ISO-certified, HIPAA-compliant genomic processing.

Learn more about High-performance computing on Azure.

Event-based compute

Event-based compute is compute that is triggered by an event such as a timed schedule or another Azure service. Event-based compute is typically used for background processing, batch processing, or long-running processes.

Service Use
Power Virtual Agents Use when you need to create chatbots with a no-code interface.
Azure Functions Use when you need to run code based on a timed schedule or in response to events in other Azure services.
Azure Service Bus Messaging Use when you need to decouple applications and services.

CI/CD compute

CI/CD compute is compute that is used to build and deploy your application.

Service Description
Azure DevOps Use Azure DevOps for tight integration with the Azure cloud including authentication and authorization to the hosted agents, which build and deploy your application.
GitHub Actions Use GitHub Actions to build and deploy your GitHub repository applications. Use the Azure CLI to securely access Azure within the action.
Azure Virtual Machines If you use another CI/CD system, you can use Azure Virtual Machines to host your CI/CD system.

Java resources

Additional resources