A couple of days ago a pretty interesting AWS service related to application containerization was released, called AWS App Runner. From the first point of view, it looks like Heroku.
There are so many stories of startups going with Heroku at the beginning of their journey, as they lack AWS infrastructure experience, and then moving to AWS when it hit scalability problems. Very good approach from AWS to make some impact in this area, so people could increase the usage with AWS, starting from the AWS App Runner, and then use different AWS services in an evolutionary way and gradually transfer architecture to AWS.
There is also a similar service in AWS, called Elastic Beanstalk. The Elastic Beanstalk provides automation that helps simplify deploying, scaling, and monitoring web applications, and gives customers deep control and visibility over the AWS resources powering the application.
The biggest difference is a fact, that with the EB you have complete resource control, which means there is a freedom to select the AWS resources, such as Amazon EC2 instance type, you can also "open the hood" and retain full control over the AWS resources powering your application. If you decide you want to take over some (or all) of the elements of your infrastructure, you can do so seamlessly by using Elastic Beanstalk's management capabilities.
So if you have some applications on EB you should continue to benefit from controlling the configuration of the AWS services and infrastructure for your applications as needed.
Why to even bother to use AWS App Runner for your app? You can benefit from AWS handling as much of the infrastructure configuration and operations as possible. This will help to focus on your code and application and take advantage of AWS operational and configuration best practices that are built into App Runner.
Features (for now):
- Autoscaling (scales the number of containers up or down).
- Secure by design (fully managed TLS).
- Automatic deployments (both for connected code repository or container image registry).
- Load balancing (automatically).
- Logs and metrics (via CloudWatch).
You can use AWS App Runner to create and manage services based on two fundamentally different types of service sources: source code and source image. Regardless of the source type, App Runner takes care of starting, running, scaling, and load balancing your service.
At this time, App Runner can retrieve your source code from a GitHub repository, or retrieve your source image from Amazon Elastic Container Registry (Amazon ECR) in your AWS account.
You can use the CI/CD capability of App Runner to track changes to your source image or code. When App Runner discovers a change, it automatically builds (for source code) and deploys the new version to your App Runner service.
As I write this article, AWS App Runner provides only Node.js and Python managed runtimes. For the rest of the languages, you need to use container images.
Moreover, no all regions are supported right now:
You are charged for the computing and memory resources used by your application. You can also pay for additional App Runner features like building your deployment from source code or automating your deployments. The below picture shows the pricing:
More pricing example could be found here.
At first glance, the service looks amazing. The most important things are automated, it only takes a moment to launch an application and AWS does the rest for us. This allows you to focus fully on application development rather than infrastructure. In the future the service will probably be extended, it's only been a few days since the first version came out.
Definitely it worth watching roadmap for upcoming changes to this service, for now, the #1 is VPC connectivity.
I would recommend this service for people who are starting with a new application in the AWS cloud, and for people who are just beginning their adventure with AWS and would like to have the problem of infrastructure in mind.
In the next blog post, we will focus on deploying HapiJS application (from the source code located on Github) to App Runner.