Migrating a Django Application from AWS Elastic Beanstalk to AWS App Runner
At Innablr, we started a Startup Outreach Program where the objective is to bring our cloud / infrastructure expertise and help startups with migration and app modernisation. As AWS Advanced Partners, we ensure that startups are adopting the Well Architected Framework from the onset of cloud journey and are well positioned for growth, scale and mass adoption.
As part of this program, we recently worked with the folks at Soundsmith - a rapidly growing company that empowers content creators and musicians. Soundsmith’s flagship solutions, Rosters and Creator Marketplace, have been instrumental in helping the next generation of artists grow and monetise their work.
Much like every startup they were able to iterate and move quickly with product development using Django and AWS Elastic Beanstalk. But soon realised that they need to adopt a more robust and scalable solution in order to meet the growing demands. To overcome these obstacle, Innablr assisted Soundsmith with the migration of their application stack from AWS Elastic Beanstalk to a fully containerised AWS App Runner solution.
In this article we will discuss the challenges Soundsmith experienced with their core service, a powerful Django application deployed on Elastic Beanstalk and their migration to AWS App Runner to address these issues. We will also touch on some of the benefits we were able to deliver as part of the migration including high availability, security, scalability, efficient resource allocation, and compatibility with microservices architecture.
Soundsmith initially deployed their Django application on Elastic Beanstalk, a managed environment for web applications. However, as their business grew, they faced some limitations with the service. While Beanstalk can be a great choice for rapid deployment and easy management, it has some drawbacks like limited customisation options, slow deployment times, and scaling challenges. Therefore, the team sought alternative hosting solutions that could meet the needs of their growing business
Solution - Migrating to AWS App Runner
Soundsmith chose to migrate their Django application to App Runner, an AWS service that offers automatic scaling, effortless deployment, and cost-effective pricing. By containerising their application and leveraging App Runner’s scalable infrastructure, Soundsmith could reduce the operational burden of maintaining their infrastructure. They also appreciated that App Runner was more customisable, efficient, and economical than their previous configuration. With App Runner, they could speed up the build and deployment process and conserve time and resources.
The solution leverages several AWS resources to deploy and run an application with high availability, security, and scalability. The architecture is as follows:
The Django application is containerised and stored in an ECR repository.
AWS App Runner Service is used as the primary service to deploy and manage the application. App Runner provides an easy way to build, deploy, and run containerised applications without managing the underlying infrastructure.
The application relies on a PostgreSQL database hosted in Amazon RDS for persistent storage of data. The RDS database is highly available, scalable, and provides automated backups and maintenance.
App Runner uses a VPC Connector to securely connect to the RDS database from the application. The VPC Connector is an essential component that allows the application to securely access resources within a VPC without exposing them to the public internet.
The application’s sensitive data, such as API keys and passwords, are stored in AWS Secrets Manager. The App Runner service is granted access to these secrets via IAM roles and policies, ensuring secure access to the secrets.
IAM policies and roles specific to the App Runner service are created to manage access to the application and resources. These policies and roles define the necessary permissions to access and manage resources required by the application.
Together, these resources form a highly available, secure, and scalable solution that enables the application to be deployed and run with ease and minimal management overhead.
User’s device sends a request to the App Runner application over the internet. If the user accesses the App Runner application using a DNS name that routes via Route 53 (e.g. app.example.com), the request is also routed to the domain’s DNS record in Route 53.
The request is routed to the VPC connector.
The VPC connector is configured to connect to the Amazon RDS database using a private IP address within the same VPC.
The VPC connector forwards the request to the RDS database.
The RDS database processes the request and sends the response back through the VPC connector.
The VPC connector forwards the response to the App Runner application.
The App Runner application returns the response to the user’s device.
All traffic between the App Runner application and the Amazon RDS database remains within the Amazon VPC and is not exposed to the public internet, ensuring secure and reliable communication between the two.
The adoption of App Runner from Elastic Beanstalk has provided Soundsmith with a number of key benefits and value.
App Runner offers a managed service that delivers automatic scaling, effortless deployment, and cost-effective pricing, addressing the current challenges faced by the existing infrastructure.
Containerisation brings several advantages, such as efficient resource allocation, streamlined configuration management, and compatibility with microservices architecture.
Reduced complexity and time-consuming nature of server configuration, resulting in faster time-to-market.
Improved resource utilisation by offering an optimised environment for application deployment with automatic scaling and built-in security features.
More flexibility, complete control over the application environment, and consistent running of essential tasks.
Establishes a robust foundation for future development, allowing for streamlined workflows, enhanced DevOps practices, and better resource utilisation.
Faster time-to-market, meaning the application can be deployed and ready to use by customers more quickly.
Improved resource utilisation, resulting in cost savings for Soundsmith.
More efficient workflows, which will save time and resources in the long run.
Enhanced DevOps practices, which will allow for better collaboration and increased productivity among development teams.
More flexibility and control over the application environment, making it easier to make changes and updates in the future.
Innablr has successfully assisted many enterprises build a solid foundation to extend their IT infrastructure to their first public cloud, integrate 3rd party cloud deploy applications, as well as expanding to multiple regions and providers as they mature. Our proven and repeatable process is based upon industry and vendor patterns and processes that provides a reliable, flexible, and extensible landing zone for your first cloud hosted applications.
The Innablr partnership approach is built upon collaboration and knowledge transfer that accelerates skills development for your existing cloud teams as you continue to adopt cloud technologies. And as part of this migration to AWS App Runner and containerisation we have established a solid foundation for future development, allowing for streamlined workflows, enhanced DevOps practices, and better resource utilisation.
So, If you are interested in achieving similar benefits for your business, whether you are a startup or a major organisation, don’t hesitate to reach out to Innablr for assistance.