Architecting for Software Feature Development, Testing, and Deployment
May 17, 2019
In the world of software development, the use of a feature branch workflow is a good thing. The idea is that all feature development takes place in a dedicated branch instead of the master branch. One of the benefits is that multiple developers can work on a particular feature without disturbing the main codebase.
That was how a ClearScale customer was handling new feature development for the software underlying one of its key products. However, the process required dynamically and automatically launching an isolated environment on AWS for each feature branch. Each had to meet specific compliance requirements, and no services could be employed that weren’t hosted in AWS.
To optimize the feature development process and ensure all of its specific requirements were met, the customer requested the assistance of ClearScale.
The project would entail automating the infrastructure deployment process, employing only AWS services and using self-hosted GitHub Enterprise webhooks to build or set up integrations — all expertise that ClearScale, an AWS Premier Consulting Partner, possessed.
The customer uses GitHub Enterprise for collaborative coding, running it on a private Amazon Web Services network. The way its development process works is that its system recognizes when there’s a new feature branch in its GitHub Enterprise repository. It then builds the required environment for it, including subnets, security groups, databases, load balancers, DNS records, and Amazon Elastic Container Registry (ECR) Docker images.
The software feature is tested and deployed in this environment. A notification is then sent to the client’s Slack channel with the complete status and a DNS endpoint to view the deployed feature. Upon completion of testing the feature branch, it is merged into the main branch via a pull request. The pipeline recognizes this and destroys resources in the environment.
The ClearScale Approach
Following the customer’s mandate to use only AWS services, ClearScale chose AWS CodePipeline to manage the pipeline and AWS CodeBuild to run tests and build. AWS Lambda was also employed to execute code in response to triggers and Amazon S3 for storage.
When a new branch is created in GitHub, a webhook triggers a CodePipeline that has a Lambda function. The Lambda function pulls the commit from GitHub Enterprise, copies the data into an Amazon S3, and passes it to the build project. This allows the customer to have full control of data passed from GitHub to the other pieces of the pipeline.
The same webhook simultaneously hits the API Gateway and triggers a Lambda function, launching a set of nested stacks using AWS CloudFormation. This automatically deploys the necessary AWS foundation. It also triggers the application build using CodeBuild and notifies the developer when the environment is ready.
In addition, identity and access management (IAM) and network security best practices, encryption, and other technical features were built into the solution to meet a variety of compliance requirements. Documentation, in the form of a runbook, helps the customer use the ClearScale solution.
There’s a lot more detail involved in ClearScale’s work for this customer. The end result, however, is that the customer can now test any feature with its end users using compliant AWS environments built to AWS best practices. As the company grows, it will also be able to test new features simultaneously with beta users without affecting its current development workflow.
These benefits, and many more, are all possible because the customer chose to work with ClearScale, a company with extensive experience in using AWS services to meet business needs and overcome the most complex process challenges.
What Can We Do for You?
Tell us what you need to accomplish and what your pain points are. We’ll tell you how we can help.
Get in touch today to speak with a cloud application development expert and discuss how we can help:
Call us at 1-800-591-0442
Send us an email at firstname.lastname@example.org
Fill out a Contact Form
Read our Customer Case Studies