What is AWS App Runner?
AWS App Runner is a fully managed service for deploying container images and source code directly to a scalable and secure web application in AWS, with no prior infrastructure experience required. In other words, with App Runner, you can produce a container and run it automatically without thinking about it. Or, provide the source code and App Runner will build the necessary container and then deploy your app. It’s that simple. Knowing how to build a container is no longer necessary because App Runner will build it for you. This is what makes AWS App Runner a fast, simple, and cost-effective fully managed service for developers and operations teams.
Because it is a fully managed container-native service, there are no orchestrators to configure, build pipelines to set up, load balancers to optimize, or Transport Layer Security (TLS) certificates to rotate. A developer can use App Runner to simplify deploying a new version of the code or image repository. For operations teams, it enables automatic deployments each time a commit is pushed to the code repository or a new container image version is pushed to the image repository.
AWS App Runner eliminates the need to learn new technologies or evaluate which compute service to use because it connects directly to the code or image repository. It provides an automatic CI/CD pipeline with fully managed operations and enhanced performance, scalability, and security.
Here’s an illustration of how AWS App Runner works:
Here’s a step-by-step tutorial on how to use AWS App Runner:
When should you use AWS App Runner?
You can use AWS App Runner to build and run API services, microservices, backend web services, and websites at scale. It brings existing containers or integrated container build services directly from the code repository to deployed application readiness. The build service connects to a GitHub repository and provides a git push workflow that deploys changes automatically. Also, App Runner works with the latest release of AWS Copilot to containerize applications and automate other AWS services, allowing each container to share requests. Because App Runner is integrated with Amazon CloudWatch (CloudWatch), logging is automatic and worry-free.
App Runner automatically builds and deploys your application, scales the number of containers up or down to meet your needs, and load balances traffic to provide high levels of reliability and availability. Developers can push their changes, and the changes will be automatically deployed into a new container. Then the developer can go and hit the URL and see the changes. In other words, App Runner obviates the need for the developer to create a Dev environment or a Test environment.
The obvious benefits of AWS App Runner are ease of use, fully managed operations, budget-scaling with traffic, built-in CloudWatch, and time savings. With App Runner, you only pay for the time it takes to build and deploy, and that time can be modulated with built-in controls that can be set according to a company’s budget constraints. However, scalability is limited by traffic requests. For example, at the moment, neither CPU nor memory utilization can be increased, and that is a big limitation for some customers.
Keep in mind that, as of this writing, AWS App Runner is a relatively new program (launched in May 2021) that is still evolving, and it is not for all use cases.
- Suppose you are running an enterprise app, apps that will evolve in scale, require higher-level security control, or require control of traffic flow. In those cases, you should use Amazon Elastic Container Service for Kubernetes (Amazon EKS) or Amazon Elastic Container Service (Amazon ECS) instead. Those services, however, require a much steeper learning curve than AWS App Runner.
- App Runner cannot connect to private resources deployed in an Amazon Virtual Private Cloud (Amazon VPC). So all communication with databases has to be over the public internet.
- If an application starts growing in complexity, such as having more microservices that need to be connected, there are limitations because App Runner does not have those capabilities. AWS App Runner is best suited for simple use cases in its current state of development, like a web page that consumes an API.
- Scalability is limited by traffic requests. For example, you cannot increase scalability by CPU utilization or memory utilization as of this writing, which may be a significant limitation for some users.