Defining DevOps has been difficult even for industry experts but most agree that it offers a new operating model to accelerate software delivery which in turn leads to competitive advantage. For example, the `2016 State of DevOps Report’ says that high performing organizations spend 50 percent less time on unplanned work and rework, and as a result, they are able to spend 66 percent more time on new work, such as new features or code. They are able to do this because they build quality into each stage of the development process through the use of continuous delivery practices, instead of retrofitting it at the end of a development cycle.
Since the process of DevOps requires automation, we need to come to the subject of tools which allow automation to happen in a DevOps environment. In this 2-part blog series, I will briefly discuss five DevOps tools that you simply cannot ignore. They are – Docker, Chef, Puppet, Salt Stack and Kubernetes. In this first part of the blog series, I will be discussing, Docker, Chef and Puppet.
Today, nearly 44 percent of enterprises are looking to adopt a DevOps initiative within their organizations. This is obviously bringing down traditional barriers that exist between developer teams and the IT operations. The Docker platform enables DevOps by providing key tools to improve application development process.
Developers can use Docker to create a Docker environment on their laptops to locally develop and test applications in containers. They can test a stack service made up of multiple Docker containers at an average of around 500 milliseconds. Multiple Docker containers converged as a single service stack, like a LAMP stack, can take seconds to instantiate. Convergence is the interconnection information that needs to be configured between the instances, for example a database connection info or load balancer IP’s. An alternative non-containerized environment can take anywhere from 2 to 10 minutes to spin up and converge depending on the complexity. The end result with Docker is that developers experience less context switch time for testing and retesting and resulting in significantly increased velocity.
While the DevOps movement is a mind-set at first, the major principles all point to business outcomes like faster innovation, higher quality and a feedback loop of continual learning. The Docker platform uniquely allows organizations to apply tools into their application environment to accelerate the rate of change, reduce friction and improve efficiencies.
“The tools we use reinforce the behavior; the behavior reinforces the tool. Thus, if you want to change your behavior, change your tools.” says Adam Jacob, CTO, Chef. He means that merely labeling a tool as a DevOps solution does not necessarily make it so. It has to address today’s IT challenges, i.e. of building agile, organizations while facilitating improvement through collaboration. Tools are agents of change and instrumental in making this change happen.
Chef is a tool for automation, provisioning and configuration management. It has several components including Chef Server, Chef Client, Chef Workstation, Chef Analytics and Chef Supermarket.
Chef offers a full-stack continuous deployment pipeline, automated testing for compliance and security and visibility into everything. To elaborate, whether one has five or several thousands of servers, Chef, helps to manage them by turning infrastructure into code. As a result, rigid infrastructure becomes flexible, versionable, readable and testable. Placing this code in the cloud, on-premises or in a hybrid environment helps an enterprise to quickly adapt the business to changing requirements. With more and more organizations migrating their infrastructure to the cloud, Chef simplifies this path enabling the migration process to happen faster, in a consistent and smooth manner.
Chef Automate helps to test for compliance and security, assess and remediate continuously. Chef’s full-stack pipeline enables enterprises to deploy infrastructure and apps the DevOps way, by testing before deploying, automating workflow and eliminating silos. It automates for effective cross-team testing and release coordination by removing complex dependencies all the way from development to production.
Puppet is an operations and sysadmin-oriented solution and DevOps practitioners—both developers and operations staff alike—strive to achieve optimal conditions for continuous integration/delivery. Tooling is therefore increasingly evaluated based on its ability to achieve these ends effectively and efficiently in the context of an enterprise’s unique needs., Puppet has enjoyed significant first-mover advantages over the years, and since the early days of IT automation, Puppet boasts a longer commercial track record and larger install base.
Puppet, in several ways similar to Chef, manages `infrastructure as code’, and provides the foundation for DevOps practices such as versioning, automated testing and continuous delivery. Enterprises can deploy changes with confidence and recover more quickly from failures, freeing teams to be more agile and responsive to business needs.
Puppet Enterprise lets enterprises deliver technology changes faster, release better software and do all this more frequently with confidence. It helps to increase reliability even as cycle times are decreased. Puppet Enterprise ensures consistency across dev, test and production environments so when changes are promoted, one is confident that this is consistent and systems are stable.
Currently on version 4.3, Puppet is commonly deployed in a client/server configuration with managed nodes periodically synchronizing their configurations with the server. Reporting (e.g., results from automation runs, errors/exceptions) and other information is sent by the clients back to the server for aggregate analysis and processing.
Puppet automation works by enforcing the desired state of an environment as defined in Puppet Manifests—files containing pre-defined information (i.e., resources) describing the state of a system.
SDN is a new paradigm for networking that decouples network control and forwarding from physical infrastructure, enabling agile management of network resources in rapidly changing environments. Just as cloud computing enables IT to quickly spin up compute and storage instances on-demand, SDN replaces rigid (and sometimes manual) network operations with dynamically provisioned network services and resources.
This new model for networking is right in line with Puppet’s advocacy of “infrastructure as code.” As such, the company has made significant strategic initiatives and partnerships in support of SDN. For example, Puppet Labs recently announced a partnership with Arista Networks—a leading developer of SDN switches—to provide automation support to the vendor’s SDN equipment line. This and other similar partnerships (e.g, Cumulus Networks, Dell, Cisco) will position Puppet favorably over competing vendors once SDN technologies gains widespread adoption.
Don’t miss the next blog of this series where I will discuss Salt Stack and Kubernetes.