AWS recently announced App Runner for General Availability. App Runner is a higher abstraction for building and deploying container based applications -- the platform handles distributed systems development challenges such as load balancing, scaling on demand and monitoring application health. It also incorporates AWS operational, security and configuration best practices for customers without prior containers and infrastructure experience.
Rather than think about infrastucture, servers or scaling, users can focus on the application instead.
InfoQ caught up with Deepak Singh, VP of compute services at AWS, regarding the philosophy and design of App Runner.
InfoQ: What was the primary motivation for App Runner?
Deepak Singh: AWS container orchestration services Amazon ECS and Amazon EKS are used by hundreds of thousands of customers that really like the control they provide and how powerful the services are.
Increasingly customers, especially those using Amazon ECS, are choosing to run their containers on AWS Fargate, our serverless compute engine for containers. AWS Fargate simplifies how customers run their applications by removing the need to manage clusters of instances, provides hard isolation, and customers do not have to patch the host infrastructure.
However, some customers asked us to go even further; they just wanted to run web apps without having to learn about load balancers, VMs, certificate management for encryption, etc. They simply want to focus on building their business, and they also don’t want to worry about re-platforming and re-architecting as their business grows.
That’s why we built AWS App Runner—a fully-managed service that provides customers a way to build, deploy, and run scalable web apps without needing infrastructure or containers expertise. With AWS App Runner, customers can deploy a scalable web app in minutes, without being container experts or having prior infrastructure experience.
InfoQ: Opinionated platforms like Cloud Foundry are great for simple or standard use cases. Does App Runner go beyond these use cases and if so, how?
Singh: AWS App Runner has a developer-focused experience where you can run apps really easily, but you also benefit from AWS security and operational best practices.
There are a lot of built-in elements—for example, scaling, encryption, and container isolation. With App Runner, you don’t just get simplicity—you also get scale so you won’t need to re-platform as you grow. Not only does App Runner scale up to meet your traffic requirements, it automatically scales down to your configured number of provisioned container instances to eliminate cold starts and ensure consistently low latency, which was a key requirement for many of our customers.
InfoQ: Who is the primary audience for App Runner? SMB or enterprise?
Singh: We built AWS App Runner for customers who want to move fast and manage as little infrastructure as possible.
When you look back at Amazon ECS/AWS Fargate, which gives customers a serverless container operational model, we saw early adoption from SMBs, and because the infrastructure is fully-managed, large enterprises like Vanguard are also adopting it in a meaningful way. With AWS Fargate, Vanguard increased speed to market of microservices from 3 months to 24 hours and reduced unit costs by 50%. We expect similar adoption patterns with App Runner as customers continue to look for that simple operational model across more of the stack.
InfoQ: How about language support beyond Node.js 12 and Python 3? What are the challenges with integrating more languages?
Singh: Node.js 12 and Python 3 are supported today in the full AWS App Runner build process for customers who want to start from their code repository, but AWS App Runner also supports a nearly endless combination of languages and frameworks for customers who want to package them in a container and bring that to AWS App Runner. Our roadmap is public and published on GitHub like most of our other container services, and we’ll prioritize additional languages for build support based on customer requests.
InfoQ: Can you provide more implementation/technical details for App Runner?
Singh: AWS App Runner is built on Amazon ECS/AWS Fargate, and the magic is that we’ve abstracted the heavy lifting.
Everything is fully-managed with AWS App Runner, so customers just need to plug in their code, and we take care of configuring, optimizing, and operating the entire stack, end to end. Customers using App Runner automatically benefit from AWS container innovations like VM-isolation by default with technology like Firecracker, fully automated autoscaling, and even safe deployments by default where we deploy in a blue-green fashion and scale your applications in response to traffic — without having to configure, manage, or even understand how those technologies work.
And for customers who still need or want to configure those services and components themselves, that option is always available to them because of the breadth and depth of our container portfolio — AWS App Runner is for customers who want to make fewer decisions about the infrastructure, manage less, and spend more time on their apps.
InfoQ: Finally, what is the plan/roadmap for App Runner in general and other developer tools in particular?
Singh: Our roadmap for AWS App Runner is available on GitHub (Editor note: No information available on the GitHub repo at the time of interview) and we invite customers to leave feedback and vote on features they want to see.
Some areas we’ve seen strong interest from customers in App Runner include adding support for private VPC, buildpack support, additional region availability, and adding AWS X-Ray and AWS Secrets Manager support. We also have an out-of-the box support for AWS App Runner with AWS Copilot. AWS Copilot helps customers easily deploy across Amazon ECS/AWS Fargate and AWS App Runner. It also supports a streamlined storage unit workflow where you can add a data tier (e.g. Amazon DynamoDB, Amazon S3) to your web applications.
The documentation for getting started with AWS App Runner outlines the steps to build and deploy an application.