I wrote this based on a presentation I gave that reviewed the many ways to host web sites and services in Azure. This is not all-inclusive by any means, there are a lot of ways to host web sites in Azure. It does cover a few of the most common ways to host web sites along with a description. Who knows, maybe this will help someone studying for the AZ-300 or AZ-301 exam?
Web Services provide the ability for clients to access internet-based sites and services. Hosting web services in Azure provides an advantage over hosting on premises, including reliable internet connectivity, some degree of scalability and usage-based billing. There are several options in Azure to host web services. Each option has different characteristics that provide flexibility to fit almost any circumstance. Listed below are several of the more popular options for hosting web services in Azure with an overview of each.
Web services hosted on Infrastructure as a Service (IaaS) servers on Azure is the first option. This provides an experience similar to hosting web services on-premises and provides a path of least resistance for moving to Azure. IaaS servers in Azure is the most basic method of moving a web service to Azure, and has advantages as well as disadvantages.
Running an IaaS server in Azure offers the advantage of running the full OS and network connectivity to servers such as Active Directory. This is beneficial in “lift and shift” scenarios where services move to Azure without rewriting code. Once in Azure, IaaS servers leverage the highly available internet connection. Servers running in Azure can also use Azure Load Balancers. Both options are helpful for organizations that don’t have reliable internet connections or load balancers on premises.
There are downsides to running IaaS servers in Azure. This option does not scale well. Scaling would require manual intervention or some type of custom scripting. Another important factor is the price. This option incurs costs at a full VM, but only leverages the web servers. There are more economical options available for running web services in Azure.
Azure Scale Sets solve the problem of scalability seen with IaaS servers. It does this by creating a pool of servers based on a single server image. This pool is on its own subnet with built-in load balancing. An inbound connection rule is established, along with rules dictating when to increase or decrease the number of VM’s running.
Azure Scale Sets shuts down and deallocates servers during points of low usage. This prevents charges until the usage increases and servers power on again. The disadvantage is that the source image requires maintenance and updates just like an IaaS server. Also, the Scale Set instances incur costs the same as an IaaS server.
Static Website in Azure Storage
Azure Storage is Microsoft’s storage solution for hosting large amounts of unstructured data. Microsoft recently added a feature to host static web sites directly from blob storage. This option is limited to static, read-only content, but certainly an option to be aware of. Public web sites on Azure Storage are a great option for hosting simple web pages or even more complex web sites with the use of client-side scripting.
Use Static Websites to host simple web sites or to offload static content for a more complex web site. Azure Static Websites can also integrate with Azure Content Delivery Network (CDN) to enable CDN content by custom domain names and HTTPS. There is no extra charge to enable Azure Storage Static Web Sites on a Storage Account, standard data transfer rates will apply.
Although not a way to host a web site directly, Azure Functions are incredibly useful for supporting web services. Azure Functions are a serverless compute service that runs on-demand without the need to deploy dedicated infrastructure. This allows for the quick creation of code or scripts that support a web environment.
Azure App Service is a Microsoft’s Platform as a Service (PaaS) offering for hosting web-based applications. Available to host both Windows and Linux web environments, App Service is a fully managed web hosting solution. App Service supports the development platforms listed below.
Azure App Service is a full-featured offering, providing features such as the ability to scale on demand with auto-scaling. App Service supports deployment slots, a feature that allows code to easily move through a development, testing and production cycle without setting up multiple environments for each stage. Testing in production is also possible by splitting a percentage of traffic between slots.
App Service also provides the ability to deploy containerized applications with Web App for Containers. This is a Linux based environment that provides the ability to quickly deploy and scale containerized applications in Azure App Services.
Azure Cloud Services take a hybrid web hosting approach that fits a gap between App Services and IaaS servers. Cloud Services is similar to App Services in that it allows for scalable and reliable application deployment. This option provides more control and access to the underlying virtual machines. This is beneficial for multi-tiered applications that require more control to the OS. This comes at the cost of increased complexity in deployment.
Cloud Services support two roles: A Web role that hosts apps with an IIS front end, and a Worker role that runs standalone apps not using IIS. The requests between the two use a messaging service such as Azure Storage Queue or Azure Service Bus.
Service Fabric is a Microsoft solution for building and deploying microservices and container-based application. Many Azure services run on Service Fabric including Azure SQL, Cosmos DB, Cortana and Skype for Business.
Service fabric is a container and process orchestrator focused on building stateful services. Blending the advantages of containers and traditional application code, Service Fabric allows an organization to move from traditional monolithic applications to microservices.
Azure offers two complimenting container offerings. Azure Kubernetes Service and Azure Container Instances. Kubernetes is a container orchestration service used for deploying, managing and scaling groups of containers that form one instance of an application. Azure Kubernetes Service (AKS) is Microsoft’s implementation of Kubernetes. Microsoft currently offers AKS as a free service for managing clusters. There is a cost for Azure nodes that run the containers however.
Azure Container Instance (ACI) is Microsoft’s offering for running containers in Azure. With ACI, there is no need to deploy VM’s and manage the underlying container services. Linux and Windows containers are supported in ACI, although there is not yet full parity between the two offerings.
AKS can leverage ACI to quickly scale out, treating the ACI environment as an extension of AKS. This provides a massively scalable container solution provided in a PaaS offering.
There are many ways to deploy web-based services and applications on Azure. This includes options to stand up IaaS servers in Azure, PaaS options such as App Services and Service Fabric along with container-based offerings. Each option has its own deployment considerations and price structure. All these options are sure to fit just about any situation.