AWS App Runner is an AWS service that simplifies the deployment of web applications and APIs on AWS. App Runner goes a step further than Elastic Beanstalk by offering a software deployment environment fully managed by AWS. It does not just manage the EC2 instances supporting your application but also manages the application language runtimes, the load balancers and auto-scaling capability, and the deployment pipeline. It also provides observability from the get-go without further effort being required from your DevOps teams. The objective of App Runner is to make it easier for developers to get their web application or API deployed on AWS without having to worry about the plumbing. Furthermore, because App Runner abstracts a lot of the underlying infrastructure away, it surfaces a limited set of options to pick from to customize your application environment. For instance, you can let App Runner manage your CI/CD pipeline for you (that’s the automatic deployment option) or you can manage it yourself (that’s the manual deployment option). It is a much more limited choice compared to the multiple deployment options we had with Elastic Beanstalk (all-at-once deployment, rolling deployment, immutable deployment, and a few more).
So, when should you use App Runner and when should you use Elastic Beanstalk?
Well, it mostly boils down to the degree of control you’d like to have over your application resources. Elastic Beanstalk currently supports various types of applications, including not only web applications but also other types of worker applications, while App Runner only supports web applications at the time of writing.
Elastic Beanstalk also lets you customize more of the supporting infrastructure since those resources run in your account and you have full control over them (VMs, load balancers, etc.). App Runner completely hides away the infrastructure resources, which are fully managed by AWS, leveraging serverless technology.
Additionally, with Elastic Beanstalk you pay separately for the various AWS resources your application uses (compute, storage, etc.). With App Runner, you also pay for the resources used by your application, but the billing is integrated within the service. So, you can more easily visualize the exact costs associated with your applications deployed using App Runner.
Another option to deploy applications is to use AWS CodeDeploy. CodeDeploy lets you automate the deployment of your applications, whether they are deployed using EC2 instances, on-premises servers, containers, or AWS Lambda functions. It can collect application artifacts from S3 buckets or directly from your source code repositories. It currently supports code repositories on AWS Code Commit, GitHub, and Bitbucket. CodeDeploy is often used in combination with the other members of the AWS Code family of services (AWS CodeCommit, AWS CodeBuild, and AWS CodePipeline) to form an end-to-end CI/CD solution. It also integrates with configuration management tools such as Ansible, Chef, Puppet, and Salt.