Best Practices for Continuous Integration and Continuous Development
Apr 13, 2020
With the advent of the cloud, and a push by organizations around the world to off-load their IT infrastructures from data centers into the cloud, the evolution of software development paradigms shifted. Organizations are looking for solutions for higher availability, increased redundancy, and shorter development pipelines for their software products. This is being driven by their own customer bases demanding continuously updated software.
In the past, this type of challenge would be complex for even the most nimble development group to overcome. But with solutions from Amazon Web Services (AWS), the issue can be diffused by adopting a robust Continuous Integration (CI) and Continuous Development (CD) model. CI/CD can streamline your organization’s development pipeline while integrating with other services designed to increase up-time, scale on-demand, and provide redundancy.
The CI/CD Advantage
With CI/CD, the idea is to enable a development team to rapidly deploy changes from a lower environment to another one for additional testing, or to a production environment where it’s ready to be consumed by the end-user. Throughout the CI/CD lifecycle, certain methodologies are used consistently from one build to the next, thus allowing for automation to be ingrained into a previously manual process.
Not only does this provide a development team time to focus on essential tasks of developing solutions and fixing problems, but it also lets the team be more engaged should an issue come up during the automated deployment or testing that takes place after each build.
It also requires that, ideally, each developer is regularly checking changes to the code repository. Once the code is merged to the main branch, a fully configured CI/CD environment can automatically execute processes that update databases, point indexes to the new build, and execute a standard suite of tests against the newly released code to make certain that no regressions occurred in the latest build.
ClearScale has taken this basic model and adapted it numerous times for our clients, with modifications to the approach that recognize the unique development lifecycle that each client has.
A Common Approach to Deploying CI/CD Solutions
A common approach that ClearScale adheres to when deploying a CI/CD solution for a customer typically involves the following:
Code Repository — This repository, such as GitHub, stores the latest version of ready-to-be-shipped code. It allows for numerous versions of code to be organized in multiple branches. This is important in case the system needs to roll back to a previous version because of an issue that is encountered after it is deployed.
CI Tools — The Continuous Integration engine, like AWS CodePipeline, is informed that the latest code in the repository is ready for deployment, and executes the build scripts through AWS CodeBuild. The purpose of the build process is to create an application installation bundle or, for example, a Docker image.
Automated Deployments — A separate tool, such as AWS CodeDeploy, grabs the code from the repository and deploys it, followed by the execution of an update script.
Update Scripts – These custom scripts run after the application code is deployed, making various post-deployment changes such as updating the database schema.
AWS Elastic Beanstalk — An API call, such as one initiated by AWS Lambda, is made to AWS Elastic Beanstalk, a service that assists in the deployment and scaling of an environment based on need. Elastic Beanstalk then updates the instances and containers in the cluster. Once done, the new version of the application is deployed into the new environment and all database connections are re-routed to the new database.
Automated Testing — The automated build engine, such as AWS CodeBuild, once again enters the picture and kicks off automated regression tests designed to validate not only that the correct code was deployed, but to verify that no regressions of previous functionality have occurred. Should any issues be found, the system notifies developers. Once fixes are found, they can either be deployed via the same process as before or manually.
Throughout the entire process, ClearScale insists on redundancy in every environment affected by the new CI/CD paradigm. Mirroring the environment and CI/CD implementations in other zones worldwide ensures that should the primary site go offline, a duplicate solution is immediately available to be automatically utilized, thus reducing risk.
This approach not only streamlines the development and deployment process for the clients we work with, but also provides a repeatable process that consistently proves effective. Further, migrating our customers from older infrastructure into an AWS-centric infrastructure allows our clients to reduce their IT maintenance footprint and decommission data centers that are no longer meeting their needs.
The ClearScale Approach
At ClearScale, we have successfully implemented CI/CD solutions for many clients. With a detailed review of your existing implementation and development practices and a clear understanding of your requirements, our knowledgeable teams can deliver a CI/CD solution that provides a consistently reliable development cycle.
Learn more by contacting a ClearScale cloud expert today.