While there are many aspects to consider when looking to implement DevOps practices, this article focuses on Continuous Integration/Continuous Delivery (CI/CD) pipelines and Everything as Code (EaC) as they are integral to getting started with DevOps and serve as building blocks for lowering the Total Cost of Ownership in a product delivery organization.
According to GitLab, CI/CD is used to describe a process where multiple changes are made to a codebase simultaneously. Everything as Code allows developers to spin up infrastructure that meets business and security requirements in a predictable, repeatable way that eliminates the opportunity for human error that can occur when the process is done manually.
Using CI/CD pipelines and EaC together is a strategic decision that requires organizational alignment. When paired together, it creates repeatable consistency that saves the company time and money every time change is needed – lowering the cost of ownership.
By not leveraging DevOps practices, companies risk reduced confidence in technology’s ability to maintain and support the current and future infrastructure and applications as the company grows due to:
Essentially, companies can’t make strategic decisions due to a higher cost of operations and uncertainty in developer time when adding new features and functionality.
When using a delivery framework that embraces the DevOps approach, CI/CD pipelines enable higher frequency in predictable, repeatable deployments by providing teams with immediate feedback loops. These feedback loops ensure teams deliver the correct and complete software. The consistent feedback loops can also enable developers to more quickly roll out new or updated features and functionality.
Features and functionality, whether it’s for an internal process or app or external product with subscribers, means more opportunity for revenue.
A team starting out might only deploy to production every month, but once it gains traction, new features and functionality are rolled out weekly, daily, and eventually on demand.
In the software engineering book, “Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations,” the authors identify four key metrics and one of them is a higher deployment frequency.
Now we have to layer in the next building block: Everything as Code.
For each application or product, a team has to set up the infrastructure, permissions, access, APIs, and integrations. Teams not writing pipelines with EaC aren’t typically documenting the configurations which makes it difficult to repeat or scale services.
With CI/CD pipelines that are written as code, instead of manually configuring each application for each environment, teams can more easily reproduce pipelines using EaC, and then test out new ways to optimize, automate, or fine tune parts of the CI/CD pipeline.
Teams who don’t use EaC with CI/CD pipelines are building and deploying environments and applications with no traceability and are manually building and rebuilding steps to achieve the END STATE. Current and future team members have no insight when defects or issues are discovered – which might be days, weeks, or months later. As shown in the diagram below, even the team who did the work will have questions about how the END STATE was achieved.
CI/CD pipelines that are built with EaC, means teams can see how each step is configured and have clarity on how the END STATE was achieved. So if a test fails, the team can easily find the issues and refactor immediately vs. waiting weeks or months later based on their deployment schedule.
Imagine working on something a month or two weeks prior and when it’s finally deployed, there are bugs. Without CI/CI pipelines written in EaC, you have to go through each manual configuration to find the issue and then determine how to fix it.
As shown below, the HOW and the WHY is built into the pipeline for current and future team members to see the full process.
CI/CD pipelines and EaC also means teams can easily reproduce tearing down and building up the steps in the pipeline over and over (with the push of a button vs. manually configuring every time)– giving them a flexible formula to accelerate, optimize, and consolidate processes and workflows.
Teams who have to manually rebuild steps to achieve the END STATE never have time to optimize or enhance. Using CI/CD pipelines means the END STATE is a moving goalpost and every day it can be optimized, refined, or improved as shown in the figure below.
Adopting CI/CD pipelines with EaC also means nothing can be modified outside the pipeline without appropriate permissions. And when modified, it is traceable.
Proof Point: For one client, Trility helped automate how developers stand up local environments for testing and validating company-wide cloud-based initiatives to help reduce the cost of operating cloud environments. Previously, developers were taking 2-5 days to configure their local environments using a manual process that led to inconsistencies between individual developer environments. After Trility automated this process, new laptop setup now takes 1.5 hours with updates to the local developer environment consistently applied for the entire team from a single source of truth.
Taking this approach can also save a significant amount of money on long-running cloud-based environments. Every developer has a laptop, they do not need their own cloud environment or access to one. Investing time and resources in what is often called "dev_local" is just one way to save money in the cloud.
This approach also empowers teams to find and address big and small issues that both bring about impactful cost savings. In this example, an engineer identifies a database change that automates a workflow and reduces manual inputs. Sometimes a change may only require adjusting three lines of code. With a DevOps approach, an engineer is empowered to make suggestions in the code for the team to review, approve, and deploy to production.
Learn how Trility has helped other clients with DevOps practices, such as implementing a Custom Security & Auto Remediation Tool, a Data Storage CI/CD Pipeline Solution, or a Policy as Code Assessment and Implementation.
These two building blocks of DevOps allow teams to do more with less by simplifying and automating work, managing change, and creating reproducible patterns. If you are using CI/CD pipelines and EaC or some other combination of DevOps practices and aren’t realizing the benefits, one common pitfall is what I like to call, “Siloed DevOps.” The company creates a special team focused on DevOps or Platform Engineering, yet what they create is not aligned with the company’s strategic plan. Or it doesn’t have buy-in from development teams. If this is how you are doing DevOps, then you won’t reap the benefits.
If you are interested in learning how we help teams to successfully enable a DevOps approach, schedule time with us.