# AWS App Runner

AWS App Runner is a fully managed container application service offered by Amazon Web Services (AWS). Launched in May 2021, it is designed to simplify the process of building, deploying, and scaling containerized applications for developers. The service enables users to focus on writing code and developing features, without needing to manage the underlying infrastructure. It provides automatic scaling, load balancing, and security features, making it a suitable choice for deploying web applications and APIs. The service also simplifies MLOps.

## Features

AWS App Runner offers several features that are designed to simplify the deployment and management of containerized applications, including:
* Fully managed: AWS App Runner takes care of the underlying infrastructure and operational tasks, allowing developers to focus on their applications.
* Automatic scaling: AWS App Runner automatically scales applications based on incoming traffic and resource utilization, ensuring optimal performance and cost-efficiency.
* CI/CD integration: AWS App Runner integrates with popular CI/CD services, streamlining the build, deployment, and release processes.
* Custom domains and TLS support: AWS App Runner supports custom domains and TLS certificates, providing secure access to applications.
* Monitoring and logging: AWS App Runner integrates with Amazon CloudWatch, enabling developers to monitor application performance and access logs.
* Health checks and automatic recovery: AWS App Runner periodically checks the health of running instances and automatically replaces any unhealthy instances.
* Flexible pricing: AWS App Runner offers pay-as-you-go pricing, with charges based on compute and memory usage.
* Continuous deployment from code repositories or container registries

## Customers

AWS App Runner has been used by various companies to streamline the deployment of their web applications and APIs. Some notable customers include Classmethod, Hubble, and Velo by Wix. These companies have leveraged App Runner to achieve faster time-to-market, improved developer productivity, and simplified application development processes.

## AWS CDK Support

The AWS Cloud Development Kit (AWS CDK) introduced support for AWS App Runner in August 2021, enabling developers to define and deploy App Runner services using the AWS CDK. This streamlines the application development and deployment process by automating the creation of App Runner services, managing them through Infrastructure as Code (IaC), and using familiar programming languages to define their infrastructure. The AWS CDK offers L1 support for AWS App Runner, corresponding to the low-level constructs. Additionally, an experimental L2 construct library, @aws-cdk/aws-apprunner-alpha, is available in preview, offering a more abstracted and developer-friendly approach.

## Limitations

Although AWS App Runner can simplify the deployment of containerized applications, certain limitations should be considered when evaluating its suitability for specific use cases. These limitations include limited hardware configuration options, no GPU support, limited regional availability, limited customization options, scaling limitations, limited support for stateful applications, cost considerations, container image size limitations, and the lack of support for multi-container deployments. It currently only support linux containers. Furthermore, App Runner does not offer a "scale to zero" option like Google Cloud Run, lacks support for AWS CodeCommit as a code-based service repository, and does not provide a way for App Runner apps to access resources in a VPC.

## Comparison with other AWS and cloud services

AWS App Runner offers deployment and management for containerized applications. It can be compared to other AWS services and similar offerings from other cloud providers, such as AWS Elastic Beanstalk, AWS Copilot, and Google Cloud Run.

### App Runner vs AWS Elastic Beanstalk

AWS Elastic Beanstalk is another service that automates the deployment of applications. However, it provides more control over the infrastructure once deployed, which can be a necessity in some cases but also introduces the potential for unmanaged changes. In contrast, App Runner is entirely managed, minimizing administrative overhead.

### App Runner vs AWS Copilot

AWS Copilot, released as a command-line tool to simplify ECS deployments, offers a compelling niche but initially lacked the ability to scale. AWS Copilot has since released version 1.7.0, which natively supports App Runner and bridges the gap between the two services.

### App Runner vs Google Cloud Run

Google Cloud Run is a similar service offered by Google Cloud Platform (GCP) that allows developers to deploy and manage containerized applications. One significant difference between App Runner and Google Cloud Run is that the latter offers the option to "scale to zero," reducing costs for infrequently accessed applications. App Runner currently lacks this feature, resulting in higher costs for such applications. Microsoft released a similar product called Azure Container Apps.