Microsoft Delivers Azure Container Apps, Developer CLI
At its annual Build developer conference last week, Microsoft announced the general availability of Azure Container Apps, the company’s serverless service for building and deploying containerized apps without managing complex infrastructure.
In addition to Azure Container Apps, Microsoft also announced a new Azure Developer CLI that enables cloud native developers to tap into the broad Microsoft developer tools ecosystem, from Visual Studio to VS Code to GitHub and Azure.
“Azure Container Apps is an app-centric service, empowering developers to focus on the differentiating business logic of their apps rather than on cloud infrastructure management,” wrote Daria Grigoriu, Principal PM Manager, Azure Functions and Azure Static Web Apps, in a blog post. “Azure Container Apps executes app code packaged in any Linux-based container without enforcing opinionated runtimes or programming models.”
Simpler Way to Go Cloud Native
Overall, Azure Container Apps is a simpler way for enterprises to begin to go cloud native and modernize their code and build apps using the programming language of their choice, said Scott Guthrie, Microsoft’s Executive Vice President, Cloud + AI, during his keynote at Build.
“Azure Container Apps is a serverless, container-based hosting service that allows you to stay focused on your apps, instead of having to worry about managing the underlying cloud infrastructure,” he said. “It supports event-driven scale. In fact, you can even scale down to zero instances. If you’re not using it, you’re not paying anything for your apps running on it. And if you then suddenly get a lot of incoming requests, you can quickly and dynamically scale up to many thousands of instances to handle that load.”
Based on Open Source
The generally available service is based on open source technology. Including Cloud Native Computing Foundation (CNCF) projects like Kubernetes Event Driven Autoscaling (KEDA), Distributed Application Runtime (Dapr), and Envoy running on the Azure Kubernetes Service (AKS).
“Developers can leverage Dapr to encapsulate best practices for microservices and KEDA to achieve event-driven scale without managing complex manifests or Kubernetes operators,” Grigoriu said.
Microsoft saw a huge opportunity to enable enterprises to run on Kubernetes, but still give their developers the ease of not having to focus on all the infrastructure behind Kubernetes, said Scott Hunter, VP Director of Product, Azure Developer Experience, Microsoft.
“The benefit of Azure Container Apps is you get the benefits of Kubernetes, but we do all the management for you. And it’s much cheaper than Kubernetes in many cases,” Hunter told The New Stack. “How we got here was just basically trying to take something like Kubernetes and make it available for the masses. There are those huge, huge companies in the world that will definitely want to run their [own] Kubernetes, but there’s plenty of companies that do not want to run their Kubernetes.”
Meanwhile, Azure Container Apps enables users to secure their apps by deploying to a virtual network, using managed identities to access other Azure Active Directory (Azure AD) protected resources, and configure integrated Authentication and Authorization for their external ingress-enabled apps.
Moreover, “your apps can be personalized with custom domains and certificates,” Grigoriu said. “Health probes are available for heartbeat, readiness, and startup. The health and performance of your apps can be observed with real-time log streaming for stdout and stderr log messages, connecting to container consoles, viewing metrics, and setting alerts.”
Some scenarios where Azure Container Apps could be useful include building microservices, event-driven processing and managing web apps and public web API endpoints.
The Azure Container Apps and Dapr integration offers developers an optional set of APIs that simplify the authoring of apps and microservices, Grigoriu said. Also, Azure Container Apps serverless apps can process events from many KEDA-supported event sources and can scale based on custom insights for each event type.
Microsoft is working on enabling Azure Container Apps users to move a container app to AKS and also move a container from AKS into Container Apps.
“We don’t want to make this an ‘I chose Door A and I can never go back and choose Door B’ scenario,” Hunter said.
Also, Microsoft’s Azure Arc, which is the future of Azure, will support Azure Container Apps. Azure Arc enables users to take any of our Kubernetes-based workloads and run them anywhere.
“You’ll see support in the future for Container Apps to run on Arc, and just think of that flexibility,” Hunter said. “I can have a Container App running on my local hardware. I can have a Container App running in Azure and I can even have a Container App running in a third-party cloud if I had to.”
Microsoft also introduced what Hunter refers to as a new Azure Developer CLI to simplify the developer experience on the platform.
“Azure Container Apps enable developers to minimize the time worrying about researching and writing the YAML code necessary to define deployment instructions to get application environments running within a specific Kubernetes cluster. Instead, they request app services via CLI without having to worry about ingress, load balancing, secrets management, or any other Kubernetes-specific considerations,” said Torsten Volk, an analyst at Enterprise Management Associates.
Volk further noted that “enabling developers to define application environments through CLI commands comes with the advantages of GitOps, where entire application stacks can be deployed or rolled back by the touch of a button. While all of this newfound freedom sounds fantastic, the organization needs to include Azure Container Apps into their overall governance strategy to ensure operational consistency and compliance.”
Azure Container Apps and the Azure Developer CLI help Microsoft streamline the ways its customers approach containers and Kubernetes, whereas competitors like Amazon have at least 17 ways to run containers on AWS — and probably even more.
Hunter said Azure Container Apps and the Azure Developer CLI stood out to him among the technology introduced or showcased at Build.
“Let me give you the quick rundown on why this is important,” he said. “We already have a CLI for Azure. Why are there two CLIs? The CLI we have for Azure today is primarily a tool for creating resources in the cloud,” he explained. “It’s great to give to an ops person that’s trying to make SQL databases, and virtual machines, and Container Apps and stuff like that. But as a developer, that’s not really what I do. As a developer, yeah, it’s a piece of it. I need to go and be able to make something, but I also really care about how do I get my app running up there, and how do I configure my app to get up there.”
During a customer visit, Hunter said he witnessed developers who required 30 minutes to configure all the tools they needed to start using the Azure cloud.
“To me, it’s embarrassing,” he said. “So, the idea behind Developer CLI is it’s a single .exe you can copy on your machine in about five seconds. Zero to ready-to-go should be under a minute.”
The next thing that the Azure Developer CLI does for developers is it understands conventions, Hunter said.
“Imagine we have a sample in GitHub. You want that sample to run Container Apps. There’ll be a folder where we’ll put all the files that will be used to create the application. There’s a folder in the app where we put all the environment variables that need to be changed from running on local to running in the cloud,” he said. “And the Developer CLI knows how to take all of those things and make the app runnable in the local machine and then make the app runnable in the cloud for you.”
Tooling has been a strength for Microsoft since its inception. “That’s the magic of Microsoft, is it’s not just about the services. It’s also about the developer and the developer tools,” Hunter said.
Indeed, that’s what good tooling can do for a development organization.
“With Azure Container Apps, we’ve made cloud native and microservices-based development streamlined and productive for any developer with any experience or skillset,” Guthrie said.