Deploying Development Environments With A Single Click

Giving each developer access to on-demand isolated environments to improve code quality.

Working with an electronic payment processor, whose mission is to simplify the Accounts Payable process for anyone needing to collect. We alleviated their development and QA bottlenecks by deploying replicas of their entire development environment with a single click.

Giving every developer access to an on-demand isolated environment to run and test their code changes.

The Client Challenge

Our clients’ application is a collection of independent services. These services are responsible for implementing different parts of the system. Like user authorization, a Payments API, and a separate Customer API.

Due to the distributed nature of these services, it became difficult for each team member to have an isolated development environment to run and test their code changes.

The inflexibility of this environment required large efforts to set up and support testing and validation. Drastically slowing down testing, and furthermore deployment.

Additionally, our client did not have any Continuous Integration (part of CI/CD) pipelines in place to automatically build and merge developer code.

Without a CI pipeline, there was no mechanism to run automated test cases and inspection routines before the team merged their code changes to development/master branches.

Lacking automated code inspection and testing in their development process, broken builds were pushed through to QA that required rework.

SourceFuse AWS Partner
The SourceFuse Solution

Using the Infrastructure as Code (IaC) tool Terraform, we moved this online payment provider away from their manually deployed single instance AWS infrastructure. Into an easily deployed multi-instance environment able to keep pace with their developers.

Giving them the ability to roll out a complete replica of their infrastructure with the click of a button and WITHOUT any error-prone human intervention.

The Details

We built custom data source providers in Terraform which extended its’ native ability to roll out the application with a single command.

Integrated the Serverless Application Framework with Terraform, so that shared resources are agnostic and can be provisioned for different technology platforms.

SourceFuse also implemented a highly available immutable Jenkins server by making use of:

  • Docker images
  • Groovy scripts
  • AWS Parameter Store
  • AWS CloudWatch
Docker images for IaC
Groovy scripts for IaC
AWS CloudWatch for IaC

This gives our client the ability to roll out the Jenkins server purely from code without any manual process in place.

We also added auto scalability utilizing a dynamic slave approach. The Jenkins server provides a robust way to integrate an entire sequence of build, test, and deployment tools as part of the development process.

Lastly, we integrated SonarQube into the CI pipeline to bring various forms of automated code analysis into the process to remove the manual efforts generally required by the development team

SourceFuse AWS Partner
The Technical Details

  • Used Terraform to institute Infrastructure as Code as part of the infrastructure process.
  • Deployed and used Jenkins to manage the rollout of temporary development environments using IaC (Terraform).
  • Increased Terraform coverage by integrating additional APIs for AWS services like Lambda, S3, and CloudFront.
  • Further extended Terraform to automate DNS pointing by utilizing CloudFlare.
  • Utilized Terraform Provisioners to create and seed databases during the rollout of new development environments.
  • Added a step in the CI Pipeline to run integration tests when a new Pull Request is generated by the development team. Based on the result of the automated tests, developers are permitted to merge their respective changes into the main code branch.
Terraform is an open-source infrastructure as code software tool
Jenkins is an open source automation server
Amazon Web Services Logo (AWS)
Cloudflare - content delivery network services
The Results

By moving our client’s application to an AWS Cloud, we implemented an Infrastructure as Code model. Providing their development team the ability to deploy new instances of their application and environment at any point in time.

This every developer access to an isolated environment where they are free to make changes without impacting the application code base. While continuing to have a centralized and stable QA environment.

  • Automation enabled them to quickly roll out development environments within 15 minutes, compared to previously taking hours to stand them up manually.
  • By integrating QA automation into the Pull Request/Merge workflow, developers are now notified of any breaking changes to existing functionality. Allowing them to fix them before merging the changes into the main code branch.
  • Real-time visibility into code quality is now possible as a result of integrating SonarQube into the CI Pipeline.
  • Time to market has been reduced by decreasing the time it takes to develop, test, review, merge, and deploy code change.
  • The quality of the product and output from the development team has increased, leading to fewer production issues and rework needed.
Talk To An Expert


Infrastructure-as-Code (IaC) on AWS

Auto-scaling infrastructure for a growing start-up with a single text file.

0 Comments42 Minutes

Read More