Welcome back to Optis Tech Talks, our series of blogs where our experts get the chance to explain a topic or technology they find interesting. Today, we'll be discussing Amazon’s AWS App Runner and how it can help you manage your containers. We will take a look at the benefits and drawbacks of using App Runner, how it compares to the internal and external competition, and some of its use cases. Joining us today to give his opinion on this exciting technology is Lukas De Graef, one of our developers.
AWS App Runner is a fully managed container service by Amazon that was introduced in December 2019. This relatively new offering allows you to deploy and run containerized web applications on Amazon Web Services (AWS). It takes care of all the heavy lifting required to set up and manage your application, from provisioning infrastructure to scaling your application based on demand. All you need to do is provide your application code, and App Runner will handle the rest.
There are several benefits to using App Runner over self-managed options like Amazon Elastic Container Service (ECS) or Amazon Elastic Kubernetes Service (EKS). The main benefit is that App Runner handles all the infrastructure management tasks associated with running containers. It includes a scaler, load balancer, health checks, and much more. You won't have to worry about provisioning or configuring servers, installing dependencies, logging and monitoring performance, and patching operating systems. This frees up your time so that you can focus on developing and deploying your application.
In addition, App Runner automatically scales your application up or down based on demand. If your application starts receiving more traffic than it can handle, App Runner will automatically launch additional instances to meet the demand. Similarly, if traffic drops below a certain threshold, App Runner will terminate unused tasks to save resources. This horizontal scaling is transparent to users and happens without any downtime.
Of course, we can’t forget about security. App Runner maintains your application inside a secure Docker container by default, so you don't have to worry about security vulnerabilities in your code. It also enables SSL by default, so you will get an HTTPS URL right away. You will not have to request and maintain certificates to make sure that both your users and application are properly protected.
As part of Amazon’s ecosystem, App Runner allows you to leverage the full suite of AWS products and services when building your application. For example, CloudWatch functions as App Runner’s default logging functionality by actively monitoring your applications for certain triggers like too many logins in a short period of time. Optional extras include using Amazon Simple Storage Service (Amazon S3) and Amazon DynamoDB for storage, or authentication through Amazon Cognito.
Finally, App Runner provides built-in support for common web application features like SSL/TLS termination, content caching, access logging, and request routing. These features are all configured using simple JSON files that are included in your application's code repository.
As with any managed service, there are some trade-offs between configurability and ease of use to consider when using App Runner. Since it is managed, you will lose some control over how your application is deployed and configured. On the deployment side, you won’t be able to select which instance types or regions you want to use, except for on a global level. During configuration, you will also have a limited amount of CPU and RAM options to choose from, all of which are on the lower end of AWS’ offering.
Because Amazon manages the underlying infrastructure for you, you're locked into using AWS; if you want to move your application off AWS later on, you'll need to rewrite part of your code to connect with another platform's services. There is also an idle cost associated with App Runner, which means that you will have to pay a provisioned amount, even if your app is idle.
Since it is a relatively new platform, App Runner also does not support all technologies and platforms yet. For now, you can use Amazon’s Elastic Container Registry (ECR) or a GitHub repository to provide container images. If you want to use GitHub to build an image, App Runner currently only supports Java, Python and NodeJS code, but more languages will be added in the future. This and other upcoming features can be consulted on the roadmap for App Runner.
Amazon currently offers more than 17 different ways of hosting and deploying an application, across a wide range from guaranteed hardware to reserve computing. App Runner is more on the managed than configurable side of this range. Compared to Azure Container Apps or the more traditional Amazon Elastic Compute Cloud (EC2), for example, App Runner takes a lot more off your shoulders and is generally cheaper to run, but offers significantly less configurability.
Compared to alternatives by other providers like Microsoft’s Azure Container Apps and Google’s Cloud Run, App Runner holds up the same. Azure Container Apps is especially more complex, which means less ease of use but more configurability. Cloud Run is more similar to App Runner, and mainly offers the same functionalities, but with a smaller range of integration possibilities.
App Runner is well-suited for hosting web applications that use secure communications through HTTPS. It can also be used to host web applications that are composed of multiple containers. For example, you could use App Runner to deploy a three-tier web application that consists of a front-end container for the user interface, a back-end container for the application logic, and a database container. Each container would run in its own separate task, and could be scaled independently of the others to meet the needs of your application.
On the other hand, App Runner is less suitable for batch processing and other stateful applications like messaging systems. These often need to be deployed in a specific order and scaled vertically to maintain performance. Its idle cost means that there are better alternatives out there for applications that only run from time to time.
At Optis, we’ve done a few projects with App Runner already, but it’s clearly still relatively unknown and new. Lukas has already used it for an elaborate API backend project with limited users and no peak loads. He was especially impressed by its ease of use. Despite the project’s complexity, he was able to set up the environment in a few hours with no previous knowledge. If he’d have to do it again, he estimates that he would only need about 15 minutes from start to finish.
Overall, AWS App Runner is a good option for developers who want to focus on building their applications rather than worrying about operational tasks. Thanks to its ease of use and relatively low cost, it can significantly cut down on implementation and configuration costs. It also offers an impressive range of integration possibilities in the AWS ecosystem, including advanced monitoring, storage and authentication capabilities. However, there are some potential drawbacks to using this service that should be considered before choosing it as your go-to solution, such as limited configurationand code input options.