Jungo Case Study
Jungo is a fintech company offering a novel crowdsourced mortgage product
Jungo Case Study
Company Description Jungo is a fintech company offering an online product brokerage platform.
Problem Jungo were already using AWS but were experiencing manageability and scalability issues with their Terraform based CI/CD implementation.
Solution: After the initial scope assessment between Jungo and 9apps technical teams it was mutually agreed that the best way forward was to build a completely new AWS platform, based on current best practices, that would provide horizontal scalability and improve security. The new platform was required to integrate seamlessly with the client’s GitHub code storage system and also implement a unit test system to ensure beforehand any new release updates work correctly in the production environment.
The solution consisted, amongst others, using the CodeBuild and CodePipeline components from the AWS CodeStar suite. The EC2 instances were replaced with the AWS Fargate compute engine which only charges for actual CPU usage rather than instance run time. This product provides a fully managed environment for running Jungo’s Docker containers.
The original Terraform implementation provided a MySQL database. AWS Aurora was chosen in order to provide a Highly Available solution as this has the ability to failover in the event of an Availability Zone failure. Aurora is binary compatible with specific versions of MySQL, which guarantees correct operation of the new implementation. Aurora offers continuous backup so that Point in Time restores are available should the need arise.
CI/CD was implemented using components from CodeStar which integrates seamlessly with GitHub. The stages of software development may be summarised as follows:
- Source code updated at GitHub
- Validate and Build new Docker Container
- Deploy to Development
- Deploy to Acceptance. Note here the presence of the Manual Approval button, which may only be accessed by suitably authorized engineers
- Deploy to Production. The Manual Approval button is also present to ensure only formally approved updates are deployed to production.
All code commits are subjected to Unit testing before being released into the Development environment. Unit tests are executed when a Developer executes a Pull Request. The Unit test result is made available to the developer as soon as the test is completed.
The new code is merged into the master branch by a senior engineer after it has been reviewed. GitHub notifies CodePipeline as soon as the commit is made via a webhook at which point it is released into the Development environment.
After further testing the new version is deployed to the Acceptance environment for Quality Assurance.
Finally the new code is deployed to Production.
The new environment was completed and successfully put into service in four weeks time, where the target of scalability was surpassed by the added business agility and security of a much better protected Cloud Infra.
The following AWS Services were used in the design:
- Discovery Service
- Parameter Store
- Route 53