Agile Blog Sponsored By  Agile Sponsor    Agile Sponsor   

 

 



6 Types Of DevOps Tooling You Should Know About


Written by  Tools Journal | 29 May 2014
E-mail PDF

devopsDevOps is a complicated mix of processes, people, and tools. For DevOps to succeed, people must work in harmony with their processes and tools. Many people are looking to introduce new tools as part of their DevOps initiatives. Yet many are not sure which tools they need, since they all claim to do pretty much everything. We sat down with several veteran practitioners to try to navigate through the tools jungle. The result was the following “DevOps Cheat Sheet”.

Task Execution

What These Tools Do

They allow you to run arbitrary commands or scripts on one or more target systems. Some tools can perform these functions on a regular basis -- while others can perform them ad-hoc.

What They Are Good At

  • Performing one-off or regular maintenance -- cleanup or management activity (such as clearing caches and killing stale processes)

What They Are Not So Good At

  • Coordinating processes across multiple machines
  • Targeting hybrid environments. Windows support varies widely between tools.
  • Providing out-of-the-box logic

Cloud and Container Management

What These Tools Do

They allow you to manage virtual machines, networks, storage, routing, load balancing, and so on -- basically enabling you to manage virtual data centers. Plus, they can help you to define and manage runtime containers or runtime environments.

What They Are Good At

  • Offering on-demand environments and resources for your delivery pipelines and production setting
  • Providing a definition model for environments or containers that can be used on a developer’s laptop as well as in the production environment

What They Are Not So Good At

  • Depending on the tool, providing flexible, portable definition models
  • Adapting to existing applications
  • Delivering role-based definition control, i.e. control over who can define which part of the container or environment
  • Enabling the management of persistent data
  • Offering automated solutions, as opposed to building blocks of a solution

System Provisioning and Configuration

What These Tools Do

They allow you to define the desired state of a system, often in a declarative manner.

What They Are Good At

  • Ensuring many machines are in a known state and kept in that state
  • Providing a lot of out-of-the-box content for system configuration and service installation tasks
  • Reporting on differences between the intended and actual states of a machine

What They Are Not So Good At

  • Coordinating an action sequence across multiple machines
  • Providing out-of-the-box content for application tier tasks, such as deployments

(Continuous) Application Integration

What These Tools Do

They take source code and other development artifacts and turn them into a deliverable ready for release. These tools can run extensive code-level and integration tests, as well as code analysis. Some tools can perform validation on candidate code changes before those changes are integrated into a release.

What They Are Good At

  • Providing a lot of out-of-the-box integrations with build and code-level testing and analysis tools
  • Chaining and distributing build and testing tasks for efficiency
  • Maintaining the "releasability" of your main branch

What They Are Not So Good At

  • Coordinating an action sequence across multiple machines
  • Providing out-of-the-box logic for tasks beyond the construction and archiving of the deliverable
  • Depending on the tool, providing a domain model that represents the end-to-end delivery process

Application Deployment

What These Tools Do

They enable you to take a new version of a deliverable (typically, an application) and get it running in a target environment. Some tools can create target environments for the new version on demand.

What They Are Good At

  • Coordinating actions across multiple target systems
  • Ensuring deliverables are environment-independent and handling any required environment-specific configuration
  • Providing a lot of out-of-the-box content for application-tier tasks

What They Are Not So Good At

  • Providing out-of-the-box logic for system configuration, service installation tasks, and application-tier tasks
  • Supporting build, validation and packaging of deliverables
  • Creating a domain model to support the entire delivery process, notably including team-based tasks
  • Providing a domain model that aligns with application delivery concepts, such as a “pipeline” or “release”

Pipeline Orchestration

What These Tools Do

They allow you to define the sequence of tasks that make up your delivery/release process, aka your delivery pipeline. Some tools support processes that combine manual and automated tasks, and show each stage of the process.

What They Are Good At

  • Providing visibility into the end-to-end delivery process
  • Enabling drill-down into not just which applications are where, but which features applications use; which code versions were used to build the applications; and so on
  • Delivering an end-to-end audit trail for each application running in production

What They Are Not So Good At

  • Providing out-of-the-box logic for tasks carried out in the pipeline
  • Supporting team-based tasks and variable processes
  • Enabling process improvement

The following diagram places these tools in relation to which part of the system stack they address and where in the end-to-end, "code-to-cache" spectrum they fall in:


devops lifecycle


Finding the right mix of tools to meet your DevOps challenges is a difficult challenge. You may decide to start with only some of the above types of tools, and may choose one tools per category, or multiple, or indeed none at all. We hope this categorization -- with their strengths and weaknesses -- will at least serve as a handy reference that will help you in your choices. And we’re of course very interested to hear your thoughts and comments, and learn which combinations of tools work best for you.

 


About the Author

 

Andrew Phillips heads up product management at XebiaLabs. Andrew is an evangelist and thought leader in the DevOps, Cloud and Application Release Automation space. He sits on the management team and drives product direction, positioning and planning. Reach him at This e-mail address is being protected from spambots. You need JavaScript enabled to view it .

blog comments powered by Disqus