Case Study: Moving from Heroku to AWS without adding infrastructure operations.
About Waterco - Poolware
Waterco pioneers reliable solutions for healthy, safe water environments, which are used in residential, commercial and industrial applications in over 40 countries. Established in 1981 with a single pool pump store in Sydney, Australia, it has since become a global brand recognised for designing and manufacturing filtration and sanitisation innovations for the swimming pool, spa, aquaculture, and water purification sectors.
One of Waterco application is Poolware which is a water analysis software. It calculates chemical interactions and diagnoses the condition of the water.
The Business Challenge
After more than 25 years operating the Poolware in a desktop format, Waterco has identified the need to improve the user experience of the solution enabling users to access the Poolware from the phone, tablet, computer or any other device. However, rather than purchasing or licensing existing cloud-based software, was decided to redevelop the solution and launch it into the cloud in 2018. This decision enabled Waterco to own intellectual property and give them a unique point of difference in the industry.
Heroku was the choice to start due to the developer experience also for not having to worry about infrastructure operations. After using this solution for a few years, Waterco started seeing the necessity to improve the effective use of the resource which was limited by Heroku.
To solve this challenge, DNX Solutions was engaged by Waterco to support these main business objectives. Together was decided to move from Heroku to AWS. As is well known, in AWS, they could reach out this main objective also provides an elastic and cost-effective architecture in the cloud.
Before start running the project, DNX’s team evaluated the organisation’s requirements also plunged into the processes through DNX’s DevOps approach which drives the team over the DevOps journey while building a perfect foundation, standardising and automating processes, and use the technologies to deliver applications quickly and reliably.
DNX One already handles most of the infrastructure operations leveraging the well-architected AWS framework and Docker containers. As solution first, DNX implements our DNX One Terraform modules. With multi availability zones and multiple subnets, the platform incorporates a robust and extremely secure cloud environment. Also, the Application modernisation was proposed moving the applications to ECS cluster in EC2 instances with better resource usage than the previous operations model in Heroku called Dynos.
We start deploying our AWS platform known as DNX One, and then we modernised Poolware that already has a modern application stack and we easily moved it to Docker containers, bringing together the existing automated tests and database migrations scripts to its CI/CD pipeline. It is worthy of mentioning that every DNX project comes with a Cloud Project Manager that applies agile methodologies and provide regular reports to the customer and a close interaction during each iteration over the entire project lifecycle.
Building the new home for Waterco applications is always the first step before to start the modernisation phase. Our AWS Foundation covers the AWS Well-Architected Framework and provides a secure and scalable home to your application in the AWS cloud. Using a multi-AZ strategy with ECS nodes running on spot instances, Waterco can run a Cluster of Docker containers across availability zones and EC2 instances.
Here’s a compute price comparison* of more or less similar instances and the cost per month:
- AWS: t3.micro (1GiB) — $0.004 per hour ($2.88 per month)
- Heroku (Dyno): standard-2x (1024MB) ($50.00 per month)
- AWS: c5.2xlarge (16GiB) — $0.1382 per hour ($99.5 per month)
- Dyno: performance-l (14GB) ($500.00 per month)
Poolware adopted already a few of the 12-factor principles, and we applied cloud-native concepts to it during the modernisation phase. With better usage of the AWS resources, the application can benefit from operational excellence in AWS along with elasticity in the cloud.
Each environment in AWS is identical, differing only in EC2 instances types in each environment such as development, QA/Staging and finally production the same application image is tested across environments. Adopting this strategy, Waterco gets Operational Resilience and reduces incidents improving this way staff productivity.
Also running in AWS, we use powerful EC2 instances to run complex CI/CD pipelines using spot instances as well, where we can optimise steps like the database migration and automated tests running parallel steps om Gitlab.
The benefits of running pipelines in AWS are clear, as we leverage a secure and cost-effective platform for these workers. Hundreds of pipelines are triggered daily without additional operational costs and at the minimum cost.
Some of the AWS Services provisioned:
- AWS ECS
- AWS Elastic File System (EFS)
- System Manager
- Aurora Cluster
- Cloud Watch
- Code Deploy
From conception to completion, the project from Heroku to AWS took about two months. The new Docker+AWS environment enabled Waterco to achieve an over 2x performance gain compared to its Heroku environment, which means Waterco’ business has increased the work rate by individual developer productivity also high-quality code, as the development team can test and release code faster.
Reducing resource constraints in AWS, Waterco, with more computing power, needed to run half the number of servers, cutting the hosting bill by around 25%. The extra degree of control over Poolware software stack also improves the resource usage efficiency and reduces refactoring during the development stage. Therefore, a happier and more productive team.
At DNX Solutions, we work to bring a better cloud and application experience for digital-native companies in Australia.
Our current focus areas are AWS, Well-Architected Solutions, Containers, ECS, Kubernetes, Continuous Integration/Continuous Delivery and Service Mesh and Data Solutions (movement, transformation, lakes, warehouses and analytics).
We are constantly hiring cloud engineers for our Sydney office, focusing on cloud-native concepts.