--
Original article posted at https://botsplash.com/blog/how-we-evolved-ci-and-cd-1f9136e53559.html
How we evolved CI and CD
At Botsplash, we follow lean development model using agile methodology. One of the key component of Agile model is the ability to build and deliver improvements fast, iteratively with compliance standards such as ISO 90001 or SOC 2.
In order to facilitate this, we have always implemented some form of “Continuous Integration” (CI) and “Continuous Delivery” or “Continuous Deployment” (CD) in our development process.
- Continuous Integration: Create builds from developer changes, merging the source code and compiling them to distributable code.
- Continuous Delivery: Quickly deploy and delivery changes to servers and make it available to stakeholders or customers.
- Continuous Deployment: Delivering solutions across different environments.
Learn more about these stages in detail at Atlassian blog. Now to explore how our CI/CI strategy evolved over time.
First Pass:
Based on your service level agreements (SLAs), you may start off with simple shell scripts and/or ansible. While each stage is important, for a small team as botsplash, it is not required to be implement all stages perfectly and sometimes could be overwhelming.
Key benefits:
- Automated deployment with minimal effort
- Quick to implement and update changes
- No new tools to learn or yaml scripts to master
Cons:
- Builds on the server and manual invoking
- Could result in environment discrepancies and increased deployment down times.
Second Pass with Circle CI
Due to the manual intervention required with first pass, we have eventually adopted Circle CI to build, and to publish the builds on deployment servers.
Key benefits:
- Instantly build and publish code changes to integration and staging servers
- Dashboard and notifications to indicate build or deployment failures
- Repeatable build generation process
Cons:
- While Circle CI yaml is elegant and well defined, it still is time consuming to build and validate
- Code deployment can be tricky and would require SSH access to servers or other custom/manual form of delivery. Circle CI does not provide a range of IP addresses to access
Evolution Pass:
Due to ssh access concerns and manual deployment requirements, we abandoned Circle CI. After quick review of multiple other tools, we have successfully developed and deployed AWS Code Suite to execute CI and CD strategies.
Key benefits:
- Secure deployment with audit history and approval process to meet ISO 90001 and SOC 2 standards.
- Reproducible environments from the scratch providing a greater confidence in the solution and scalability.
- CI and CD contained in AWS environment within the same infrastructure as rest of the environment with limited exposure to external threats.
- Clear separation of tools for CI and CD that works across Dev, Staging and Productions AWS accounts and servers.
- AWS Code Commit for secrets further limits the exposure of secrets.
- Isolated build and deployment scripts to independently manage developer and server environments.
Cons:
- Changes need to be planned and executed over weeks (if not months) depending on the size and scope of your applications.
- Configuration is complex and time consuming with long test cycles. Require good understanding of AWS IAM, S3 and EC* products.
- Many ambiguous design limitations and bugs that will consume a lot of time troubleshooting or restarting the process.
- The tool suite is still evolving (consider to use Jenkins for large complex projects with multiple dependencies)
Summary:
Whether team size is small or large , always use CI/CD strategies to improve application delivery. For small teams, it can be started at ease with shell scripts that can be eventually scaled to application integration and deployments across multiple environments.
If you have feedback or suggestions for alternate passes, leave comment below.
Do you want to read more of Botsplash team contributions? Check out articles here.