In Part-1 of the DevOps Tools Comparison series, we have covered Jenkins, Saltstack, Ansible and Puppet. In part-2, we shall cover the following tools: Chef, GitHub, Spinnaker and Terraform. 

Chef

Chef is an open source configuration management technology developed by Opscode. It is optimal for DevOps provisioning, orchestration and configuration management and hence is a strong choice for experienced DevOps teams trying to automate their development and deployment infrastructure.

This continuous automation leader has grown to include more than a thousand companies to its customer base in the last 4 years. It has been ranked 298 in Deloitte’s 2018 Technology Fast 500™.

Dev

  • Cross-platform management that supports AIX, FreeBSD, Linux, Windows, Mac OS, and more
  • It allows developers to manage nodes from a single server
  • Chef’s infrastructure automation can reduce risk and improve compliance at all stages of development
  • There is an active open source and a number of community cookbooks for common tasks
  • A Web-based management console allows to access nodes, cookbooks and so on for common tasks.

OPS

  • With its web-based management console, we can control the access of objects such as nodes, cookbooks and so on
  • Chef also provides real-time visibility into metrics and messages
  • Integrates with major cloud providers with ease
  • Eliminates Redundancy: IT infrastructure can be optimized and reused as required to save time and cost
  • Excellent integration with cloud: Chef is the best tool for organizations that wish to work in a multi-cloud environment. Thanks to the Knife, a multi-purpose command line tool which makes integrations easy.

Disadvantages:

  • Challenging for developers, especially if they are not from a Ruby background
  • User Guides aren’t maintained in a proper repository or knowledge base and need constant inspection

GitHub

GitHub is a development platform suitable to host and review code, manage projects, and build software. This tool offers a repository service, which is web-based. It also allows you to use Git’s source-code management functionality.

According to Datanyze research, over 17% of the companies use GitHub for Source code management practice.

Dev

  • Ability to track changes across versions
  • Integration options with platforms such as Amazon, Google cloud, etc.
  • Distributed model: In this model, you can let other users see only what is relevant to them. Not everything has to be public. Other advantages of this model are speed and ability to work offline
  • It can create automatically create backup of your work rather than saving it as a file on your desktop

OPS

  • Assured Data Integrity: Git uses SHA1 trees which makes it easy to detect data corruption that are caused due to external reasons
  • Fast Branching and Merging: Due to this property, features and ideas can be sandboxed until they are ready to be deployed into the mainstream

Disadvantages:

  • Since its concepts, commands, and workflows are huge, more time and resources need to be invested to master them
  • Git is good for tracking code but not to track design. It is not great for recording ideas unlike LayerVault
  • Problem with Binary files: If a project has non-text files such as images or MS docs which are frequently updated, then Git becomes slow and unreliable

Spinnaker

Spinnaker is a multi-cloud continuous delivery platform. It combines a powerful and flexible pipeline management system with integrations to cloud providers. Netflix has released Spinnaker 4 years ago to enhance predictable deployments.

Today, more and more Global 2,000 companies use it to automate deployments across multiple cloud targets.

Dev

  • Supports multiple cloud deployments
  • Spinnaker is powerful in its ability to baking AMI and code deployments for Linux based ec2/AMI

OPS

  • A wide range of deployment strategies available such as Blue-Green, Highlanders, etc.
  • Pipelines can be scripted
  • It has a great search feature to search LBs, clusters, etc. from the UI
  • Software cannot survive very long without a strong community behind it. Spinnaker has a strong community which can be approached for any queries

Disadvantages:

  • It is difficult to onboard Windows-based systems onto Spinnaker
  • Attaching or detaching EBS volumes during deployments is quite difficult
  • It does NOT support CFN based deployments

Terraform

Terraform is a next-gen configuration orchestration tool which can work on both private on-premises and public systems on cloud. It allows a safe and convenient design to manage the Infrastructure services.

According to Datanyze, over 21% of the companies use Terraform for Configuration Management practice.

Dev

  • Declarative coding style: Unlike Chef or Ansible where we need to write step-by-step procedural instructions, with Terraform, we can describe the desired end state for the tool to deal with and reach the goals
  • Ease of full-stack deployment: Amazon instances can run Kubernetes containers with workloads and manage the whole system from one tool
  • Speed and operation: Terraform’s plan command lets you see the changes you’re about to apply before you apply them. Code reuse feature tries to make most changes faster than many other similar tools like CloudFormation
  • Terraform allows developers to implement a variety of coding principles like having the code in source control, the ability to write automated tests, etc

OPS

  • Terraform provides a high-level description of infrastructure. It lets you define infrastructure in code which allows you to edit and track changes to infrastructure easily
  • Resource Graph: Terraform creates a graph of all the features and shows dependency on one another
  • It has a great community and open source support

Disadvantages:

  • As it is a relatively new tool, it was developed with cloud-only deployment making it a very specific tool
  • Being a very new tool, the product is changing constantly which may require significant management efforts to have a check on maintenance overhead
  • Needs a steep learning curve for initial deployment

In part-3 of the blog series, we shall discuss a templated approach to infrastructure management and automation along with few scenarios that help you choose tools based on your development and infrastructure needs.