With the advent of the cloud, and a push by organizations the world over to off-load their infrastructure from data centers into the cloud, the natural evolution of software development paradigms has also shifted. Companies are looking for solutions for higher quality, greater up-time, increased redundancy, and shorter development pipelines for their software products. This in turn is being driven by their own customer base demanding constantly updated and defect-free software.
In the past, this type of challenge would be difficult for even the nimblest development group at an organization. With Amazon’s AWS Cloud Services, however, this issue can be diffused by adopting a robust Continuous Development (CD) and Continuous Integration (CI) paradigm that will streamline your organization’s development pipeline while integrating with other services designed to increase up-time, scale up on demand, and provide robust redundancy.
At ClearScale, an AWS Premier Consulting Partner, we have successfully implemented this type of solution for many of our clients. With a detailed review of your existing implementation, development practices, and a clear understanding of where you want to go and what your requirements are, our knowledgeable teams can deliver a CD/CI solution that provides a consistently reliable development cycle.
The idea of Continuous Development and Continuous Integration is a relatively straight-forward concept, although execution of its implementation can provide its own set of challenges depending on the needs of the client. With CD/CI, the idea is to allow a development team to rapidly deploy changes from a lower environment to another one for either additional testing and validation, or to a production environment where its ready to be consumed by the end-user.
Throughout the CD/CI lifecycle, certain methodologies and processes are implemented to be used consistently from one build to the next, thus allowing for automation to be engrained within a previously manual process.
Not only does this allow a development team time to focus on their true tasks of developing solutions and fixing issues, but the team also only needs to be 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 checking in their code changes to the main branch of code several times a day. Once this is accomplished, a fully implemented and configured CD/CI environment will automatically execute processes that will 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 have 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 and respect the development lifecycle or business requirements and concerns that each client has. In each case, we leverage existing toolsets and services in AWS design to execute specific paths or actions based on how they interact with other components.
A common approach that ClearScale adheres to when deploying a solution for a customer in AWS 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. This is important in case the system needs to roll-back to a previous version because of an issue that is encountered after it was deployed and tested.
Automated Deployments — A separate tool, such as CodeDeploy or OpsWorks, is informed that the latest code in the repository is ready for deployment. It grabs the code from the repository and deploys it, followed by execution of an update script.
Update Scripts – These scripts create a copy of code that is currently active in the environment that is being deployed to and then updates the database with the requested changes to the new endpoint.
CI Tools — The Continuous Integration engine like CodePipeline or Jenkins executes the build scripts. These are designed to upload the image to the registry, such as a Docker environment, and then initiates a request to AWS Elastic Beanstalk to create a new package.
AWS Elastic Beanstalk — An API call, such as one initiated by AWS Lambda, is made to Elastic Beanstalk, a service that assists in the deployment and scaling of an environment based on need. This AWS service then upgrades the various instances and containers in the cluster. Once done, the registered image or source code is deployed into the new environment and all database connections are re-routed to the new database.
Automated Testing — The automated build engine once again enters the picture and kicks off automated smoke or 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, and once fixes or solutions are found they can either be deployed via the same process as before or manually deployed.
Throughout the entire process, ClearScale has insisted on redundancy in every environment affected by the newly minted Continuous Development and Continuous Integration paradigm. Mirroring the environment and CD/CI implementations in other zones throughout the world ensures that should the primary site go off-line, a duplicate solution is immediately available to be automatically utilized, thus reducing risk.
ClearScale has proven that this approach not only streamlines the development and deployment process for the clients we have worked with, but it provides a reliable and repeatable process that consistently proves to be effective and reputable. Further, migrating our customers from their older infrastructure solutions into an AWS-centric infrastructure solution allows our clients to reduce their IT maintenance footprint and decommission data centers that are no longer meeting the needs of their business in an ever-changing world.
ClearScale prides itself on a complete discovery of how your organization operates, how it impacts your development needs, and how you would like your organization to evolve. All of this is taken into account when we create a customized solution that not only meets your current needs but the needs of your organization in the future. Our successes in implementing Continuous Development and Continuous Integration solutions prove that our knowledge of AWS services can be leveraged to help transform your organization.
Get in touch today to speak with a cloud expert and discuss how we can help: