A SaaS business platform that helps companies with their hiring challenged and candidates filtering.
The customer is a SaaS platform that helps companies automate their hiring process, source qualified candidates, and run screening workflows.
Their Infrastructure
The customer had Java applications that were packaged as wars and were running on Tomcat servers on AWS Beanstalk. This solution had several challenges with the deployment and resilience. They were running on deprecated Elastic Beanstalk platform versions that were no longer actively supported.
The software had several microservices and all of them were deployed on Elastic Beanstalk.
On the database side, the system relied on an Amazon RDS for MySQL instance. Single RDS database shared among software apps.
They also had several frontend applications, all of which used Amazon S3 buckets to host static websites.
They also relied on Bitbucket Pipelines for deploying their projects to Amazon S3 and Elastic Beanstalk environments.
Unfortunately, they didn't have any infrastructure as code tools such as CloudFormation or Terraform.
The Chllenge
Because the applications relied on WAR-based deployments, it became increasingly difficult to maintain them as modern frameworks deprecated or removed critical features.
The customer was running on outdated and deprecated versions of Tomcat and AWS Elastic Beanstalk, which were no longer actively supported.
The customer also experienced frequent service restarts, which caused interruptions to user flows and impacted service availability.
They also had problems with scaling horizontally when application had unexpected load.
Another challenge was failing pipelines that weren't stable and were taking a longer time for releases, around 25 mins.
We decided to use Amazon Web Services (AWS) Managed Elastic Container Service (ECS) for deploying and running Docker containers. Amazon Elastic Container Registry (ECR) was used to store Docker container images, which were then pulled by ECS to run the services.
To streamline the deployment process, CI/CD pipelines were implemented using GitHub Actions, enabling automated deployment of the application to ECS.
To address these challenges and modernize the infrastructure, we decided to containerize the applications to improve scalability and deploy them on Amazon ECS.
Other solutions, such as AWS Elastic Kubernetes Service (EKS), were considered. However, ECS was preferred because the use case did not require the complexity of running multiple services in an isolated Kubernetes environment. Additionally, ECS offered an affordable solution with minimal maintenance, aligning with the customer’s requirements.
We also migrated the existing pipelines from Bitbucket to GitHub Actions and stabilized them, as the customer was planning to adopt the GitHub Enterprise plan, which includes free build minutes that could be fully utilized for deployments.
The new architecture looked liked this:

We implemented Infrastructure as Code (IaC) using Terraform, making the infrastructure fully documented, reproducible, and auditable eventually allowing the team to clearly understand why each change was made.
Results and Benefits
The scalability and maintainability of the service have significantly improved after containerization and migration to ECS. The customer experienced faster deployments to the production environment, which enhanced developer productivity and reduced manual intervention.
They also had 99.99% uptime and no more continuous service restarts that interrupted end customers.
Deployments time also reduced dramatically from 25 mins to 6-7 mins.
Final Results
- 99.99% uptime
- 4x faster deployments
- Documented infrastructure
We successfully addressed the customer’s deployment challenges and enhanced their cloud infrastructure. We significantly sped up deployments, eliminated frequent user flow interruptions, and fully retired deprecated AWS Elastic Beanstalk environments.