App Service: Adding multi-container capabilities and Linux support for App Service Environment

Posted on May 7, 2018

Nir MashkowskiPartner Director of Program Management, Azure App Service

Last September, we announced the general availability of Azure App Service on Linux, allowing developers to bring their code or Docker-formatted containers to run on this high-productivity platform with Linux. Today, we are pleased to announce public previews for multi-container support, Linux support for App Service Environment (ASE), and simplified diagnostics, debugging, authentication, and authorization.

Over the years, Azure App Service has helped developers quickly build, deploy, and scale applications without having to maintain the underlying web servers or operating systems. With these new investments, we now support more app patterns and deployment choices.

Multi-container support

Web apps do not live in a vacuum. They typically have a frontend, need to talk to APIs, or use a caching service. To increase portability, isolation, and agility, you might choose to containerize each component but manage them as one integral unit. Using multi-container support from App Service, you can now deploy web apps that are composed of multiple Docker-formatted containers into a single virtual machine (VM) host. This VM host can be scaled out horizontally, either dynamically or manually, or scaled up to more powerful hardware if needed. You can then operate this composite as an atomic unit while leveraging App Service’s powerful capabilities such as built-in CI/CD, autoscaling, and intelligent diagnostics without worrying about container orchestration or hosting infrastructure.

Take a shopping cart web app as an example, you can compose a cache service, backend payment API, monitoring service, and the front-end ordering app, each from respective containers. Each container can be managed separately following the “separation of concerns” design pattern and reused by different applications or teams to quicken development. Additionally, hardware usage is optimized by having the composite of multiple containers run on a single host VM. With the backend APIs and cache service in the same unit, you can reduce processing latency and persist state for user information without having to deal with service discovery. We recommend using a database as a service (e.g., Azure Database for MySQL) separately for your data needs to optimize scale and performance.

Here’s an example of the multi-container architecture for the shopping cart web app.

Deploying multi-container web apps to Azure App Service is easy. Simply describe your web app with a Docker Compose file or Kubernetes Pod definition and upload the configuration file, or copy/paste a url pointing to the config file in the Azure portal. App Service takes care of pulling your containers from a registry, instantiating them, and configuring communications between them.

Linux support for App Service Environment in public preview

With Linux on App Service Environment, you can deploy web applications into an Azure virtual network (VNet), by bringing your own container or Linux based code. Both Windows and Linux web applications can be deployed into one ASE, sharing the same VNet. You can choose to have an Internet accessible endpoint by deploying the ASE with an external endpoint, or a private address in a VNet by deploying the web app into an ASE with an internal load balancer. Apps deployed into an ASE are available in the Isolated plan, where you can scale up to 100 Dv2 VMs per ASE and provide network isolation that meets your compliance needs.

Enhanced App Service diagnostics

Last year, we introduced an App Service diagnostics capability, offering a guided intelligent troubleshooting experience that points you to the right direction to diagnose and solve your app issues. You can now leverage this tool not only for your Windows web apps, but also for web apps running on Linux, App Service Environment, and Azure Functions. Besides identifying platform and application issues, you can get code-level insights using Application Insights within the App Service diagnostics experience.

Easier debugging, authentication, and authorization

We are excited to share the following set of innovations that make building and debugging apps on Azure even easier.

Remote debugging, in public preview: You can now choose to remote debug your Node.JS applications running on App Service on Linux using Visual Studio Code or Azure CLI to resolve issues much faster.

Support for the SSH client of your choice, in public preview: In addition to the Kudu web SSH client, you can now use Putty or any other SSH client from your own console or shell program. We also support SFTP protocol and you can use the SFTP client of your choice.

Easier authentication and authorization, in public preview for App Service on Linux: Sites can now authorize users and restrict access to site contents using Azure Active Directory, Facebook, Google, Twitter, and Microsoft Account identities.

As we keep innovating on App Service, we are also making it easier for developers to use it. Today we are announcing that each new Azure subscription will get their first month (722 hours) of B1 Linux consumption for free. This is effective starting June 1, 2018. We encourage you to use this offer to try out our new capabilities and let us know what you think on the forum.