Edit

Share via


Hosting applications on Azure

This article is part three in a series of seven articles that help developers get started with Azure.

Azure offers several ways to host your application. This article suggests services that match your requirements. It isn't prescriptive. Mix and match services to meet your needs. Most production environments combine services to meet business and organizational needs.

The services you choose often come down to two considerations:

  • Do you prefer simplicity or control?
  • Do you prefer cloud-native (containers) or Azure-native (tailored tools and integrations)?

The following video explains the first consideration: simplicity versus control.

Simplicity and control

Azure hosting services involve two key considerations:

  • Simplicity versus control
    • Simple hosting platforms need less configuration and management but give you less control over the underlying infrastructure.
    • Complex hosting platforms need more configuration and management but give you more control over the underlying infrastructure.
  • Cloud-native versus Azure-native
    • Cloud-native can be thought of as cloud-portable. Use open-source workloads like containers and technologies like Dapr so you can deploy the applications you build to any cloud provider.
    • Azure-native focuses on Azure-specific tools and technologies to manage infrastructure. These services include containers, code-first, low-code, and infrastructure tooling that emphasizes integration across Azure services.

Simplified hosting

Simplified hosting solutions are fully managed by Azure. You're responsible for 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 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, patches, 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 as part of its 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 host code so you deploy directly to the service.

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 run small, independent services that work together to form 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 runs on the client outside Azure. 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 and 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 lets you manage server endpoints through a gateway that adds 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's 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, 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.

To learn more, see 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
Microsoft Copilot Studio 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