{{announcement.body}}
{{announcement.title}}
refcard cover
Refcard #351

Continuous Configuration Essentials

Automating Infrastructure and Software Development

Continuous configuration occurs when a configuration platform is used to automate, monitor, design, and manage otherwise manual processes, which are essential components of improving the overall efficiency and success of your team's SDLC. There are several areas to prioritize in a continuous configuration methodology — the right tools for building a continuous deployment pipeline, effective pipeline maintenance and management, and, of course, widespread automation.

In addition to covering key benefits of continuous configuration, our Refcard details specific concepts and foundations of this modern approach to DevOps, including build automation, infrastructure as code, configuration monitoring and management, enforcement in CI/CD processes, and more!

Published: May. 13, 2021
549
Free PDF for Easy Reference

Brought to You By

Buildkite
refcard cover

Written By

author avatar Larry Gordon
Co-Founder, xOps
Section 1

Introduction

Most important for building a continuous configuration architecture is first deciding on the methodology and process you will use and then picking the most appropriate tools. The idea of having a data architecture dedicated to configuration management is a principle of the IT Infrastructure Library (ITIL) service management framework and of DevOps.

A configuration management architecture spans multiple systems and applications, including services, servers, applications, and databases. It is helpful for change management — users can audit the relationships between integrated systems before configuration changes are made. It’s also a useful tool for provisioning, as you can glean all identifying information for objects like servers. When a system is properly configured, automated, and managed, you can expect certain outcomes, such as delivering continuous infrastructure as a code and configuration as a code.

In hybrid cloud environments, organizations are looking for more modern continuous integration solutions. On one side there are tools like Jenkins that are fully open source — you deploy it in your own environment, soup to nuts. And then you either own the architecture or pay someone like CloudBees to own the architecture for you. Conversely, tools like Travis or CircleCI are fully cloud SaaS. Then the tradeoff becomes how much your job environments will resemble your production environments, as well as how to bridge those gaps and assure their security.

Newer tools provide all of your orchestration, visualization, reporting, and access control functions. Also available are open-source self-hosting agents for running workloads. The ideal outcome is to get the best of both worlds, where you're able to work completely behind your firewall. You can run code on your choice of infrastructure that you want to run your production systems on, so you retain that parity, and your test environments, without also having to eat the management expense of the platform itself.

Try to give developers and engineers the tools they need to more easily build the orchestration, so they can focus on building their apps and functionality. Teams are outgrowing other solutions, either having a hard time keeping up with technical debt or just hitting limitations of the more vendor-managed solutions.

They need some next-generation tooling.

Section 2

What is Continuous Configuration?

Continuous configuration occurs when a configuration platform is used to automate, monitor, design, and manage otherwise manual configuration processes. System-wide changes take place across servers and networks, storage, applications, and other managed systems. An important function of continuous configuration is defining the state of each system. By orchestrating these processes with a platform, organizations can ensure consistency across integrated systems and increase efficiency.

The result is that businesses can scale more readily without hiring additional IT management staff. And companies that otherwise wouldn’t have the resources can grow by deploying a DevOps approach. The diagram below shows how a configuration-as-code process helps optimize developer effort, using Buildkite as an example:

Figure 1


This is a preview of the Continuous Configuration Essentials Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 3

Key Concepts of Continuous Configuration

Infrastructure as Code

Infrastructure as code (IaC) is the process of provisioning and configuring an environment through code instead of manually setting up the required devices and systems. Once code parameters are defined, developers run scripts, and the IaC platform builds the cloud infrastructure automatically. Such automatic IT setups enable teams to quickly create the desired cloud setting to test and run their software. IaC allows developers to generate any infrastructure component they need, including networks, load balancers, databases, virtual machines, and connection types.

A developer defines the configuration parameters in a domain-specific language (DSL):

  1. The instruction files are sent to a master server, a management API, or a code repository.
  2. The IaC platform follows the developer’s instructions to create and configure the infrastructure.

With IaC, users don’t need to configure an environment every time they want to develop, test, or deploy software. All infrastructure parameters are saved in the form of files called manifests. Like all code files, manifests are easy to reuse, edit, copy, and share. Manifests make building, testing, staging, and deploying infrastructure quicker and consistent.

Developers codify configuration files and store them in version control. If someone edits a file, pull requests and code review workflows can check the correctness of the changes. As architectures scale and become more complex, visibility into the health and performance of these infrastructures and services increases in difficulty too. This is where observability becomes essential.

Configuration Monitoring

Your IT team is most likely relying on an array of disjointed monitoring, tracing, and log tools that don’t integrate with one another, adding an additional layer of complexity and confusion to your daily workload. But in today’s fast-paced landscape, your business needs end-to-end observability to gain an efficient and accurate pulse on the health of your infrastructure, applications, and business systems. For monitoring metrics and applications to log data, you must be able to contextualize all of this information to see the full picture in real time.


This is a preview of the Continuous Configuration Essentials Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 4

Essentials of a Continuous Configuration Methodology

As infrastructure changes, IT teams must manage more endpoints, both new and legacy, yet too many automated patching solutions do not provide a seamless, single view of all systems to manage patching. This leaves the process error-prone, repetitive, time-consuming, and unable to scale easily, which puts systems at risk of being outdated and non-compliant.

To mitigate such risks, here’s a list of tips:

  • Use one, simplified automated patching workflow direct from a console to eliminate multiple tools and manual, error-prone processes.
  • Gain full visibility across all managed infrastructure and reduce the risk of updating/patching without knowing how it impacts workloads.
  • Confidently find/update systems and quickly patch Windows and Linux servers at once or in batches.
  • Enable self-service deployments for cross-functional teams with RBAC, built-in scheduling, and blackout windows.

Tools for Building a Continuous Deployment Pipeline

Establishing continuous deployment requires substantial engineering investment. The following is a list of tools that are needed to build a continuous deployment pipeline:

Automated testing

The most critical dependency for continuous deployment is automated testing. In fact, the entire chain of continuous integration, delivery, and deployment depends on it.

Automated tests are used to prevent any regressions when new code is introduced and can replace manual reviews of new code changes. 

Rolling deployments

The distinguishing feature between continuous deployment and delivery is the automated step of activating new code within a live environment.

A continuous deployment pipeline must be able to undo a deployment in the event that bugs or breaking changes are deployed.

Automated rolling deployment tools like green-blue deploys are required for proper continuous deployment.

Monitoring and alerts

A robust continuous deployment pipeline will have real-time monitoring and alerts.

These tools provide visibility into the health of the overall system and into the before and after state of new code deployments.

Additionally, alerts can be used to trigger a rolling deployment "undo" to revert a failed deploy.

Pipeline Maintenance and Management

Once a continuous deployment pipeline is established, ongoing maintenance and participation from the engineering team are required to ensure its success. The following methods and behaviors will ensure an engineering team gets the most value out of a continuous deployment pipeline.


This is a preview of the Continuous Configuration Essentials Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 5

Conclusion

Continuous configuration is an essential component of streamlining and automating your enterprise's agile software development foundation successfully. Agile software development efforts that have deployment surfaces to an infrastructure of any considerable magnitude, be it cloud or on-premises data center(s), will benefit immeasurably from removing manual configuration in complex environments.

Your dev team’s ability to decrease deployment downtime will serve to increase continuous release capabilities, which has tangible metrics for customer service. Bug fixes and new features are deployed to production faster and are free of the configuration management issues that plagued these processes prior to the invaluable automation provided by continuous configuration.

The benefits offered by continuous configuration could be readily and inexpensively explored first in lower environments with open-source software for integration with your existing CI/CD pipelines. Should the ongoing management thereof prove to be a substantial effort in today’s corporate landscape of human resource optimization, a vendor-offered continuous configuration automation tool may prove to be the best investment for your organization toward meeting and exceeding your agile software delivery goals.


This is a preview of the Continuous Configuration Essentials Refcard. To read the entire Refcard, please download the PDF from the link above.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}