DevOps and the Relationship to Tools
According to The DevOps Handbook, DevOps (development and operations) is the convergence of several trusted principles from a variety of management movements into a software development methodology. The foundation of DevOps is combines principles from the Lean movement, Theory of Constraints, and the Toyota Production System (Toyota Kata) with Agile development principles. For more on the history of DevOps and a primer on the essentials of this methodology, read The Way of DevOps: A Primer on DevOps Principles and Practices.
DevOps leverages its relationship to approaches like Agile development and seeks to create a culture of collaboration and an “IT value stream” by combining trusted principles and practices from physical manufacturing to software development. The goal is to turn software development, quality assurance (QA), information security (InfoSec), and IT operations processes into a strategic business asset.
To do so, DevOps requires an organization to adopt cultural changes and implement technical practices like infrastructure automation, version control, and continuous integration and delivery (CI/CD). Similar to physical manufacturing, integrating the right tools is essential to realizing the benefits of DevOps technical practices. However, DevOps is not simply about using tools to manage the work involved in the software development lifecycle (SDLC). DevOps is also the combination of cultural change, management principles, and leveraging technology to enhance technical practices.
What Is the DevOps Toolchain?
The list of technology, services, and software available to implement DevOps technical practices is growing. How organizations choose to implement these technical practices varies. DevOps-as-a-Service (DaaS) or DevOps-as-a-Platform refers to a development and operations pipeline modeled with a specific set of integrated tools that facilitates the workflow and collaboration. Tools used to design, build, test, manage, measure, and operate software and systems connect as one integrated unit.
The alternative to using a DaaS approach is to combine the best tool for the job and form a DevOps “toolchain.” (The DevOps Handbook uses the term toolchain interchangeably with platform and shared service.) By selecting a set of technologies and “tooling” the work involved in software development and operations, DevOps practitioners seek flexibility to scale, configure, test, and release in accordance with DevOps principles and practices. Teams use a collection of tools to accomplish the task based on their weapons of choice. True to the principles of DevOps, innovative teams encourage learning and experimenting with different software tools to create a standardized toolchain. The authors recommend standardizing toolchains (so teams remain productive regardless of turnover) and focusing on global project goals, and encourage wide adoption of internal toolchains to be made available to everyone so teams don’t have to start from scratch.
Planning Tools
Collaboration and communication are essential tenets of the DevOps culture. In accordance with Agile software development practices, the DevOps environment requires tools that empower sprint planning for iterations, release management features, and issue tracking.
DevOps planning tool to consider: JIRA
JIRA by Atlassian is an Agile-friendly planning tool. JIRA supports sprint planning with out-of-the-box or customizable Kanban and Scrum workflows. JIRA software integrates with complex enterprise platforms and is well-suited for planning DevOps workflows that require continuous feedback loops, collaboration with multiple project teams, and open communication.
Other DevOps planning tools: Redmine, Trac, Rally.
Building Tools
A “build” is a version of software code (code build). It can also be used as a verb to describe the process of writing source code for a specific stage of development before the next step in the cycle. Developers use build tools to manage this work.
DevOps build tool to consider: Apache Maven
Apache Maven is a tool for Java-based development. It provides a uniform system and a set of plugins for code builds, with project dependencies and development guidelines that support DevOps technical practices such as build automation.
Integration Tools
The practice of automating code builds and tests, merging them, and checking them into shared repositories in real time for continuous integration and delivery is a core DevOps convention. Integration tools in the DevOps toolchain that optimize code builds, empower automation, and help keep systems working are the key to high-velocity deployment.
DevOps CI/CD tool to consider: Jenkins
Jenkins is an open source automation server that provides a plugin architecture to support continuous integration and delivery. It integrates with a variety of software tools in the CI/CD toolchain and distributes work across multiple platforms.
The 2017 State of DevOps Report from Puppet and DORA found that high-performing DevOps teams do significantly less manual work than do low performers. According to the report, top performers automated significantly higher percentages of the following work:
- Configuration management
- Testing
- Deployments
- Change approval processes
Manual work in progress hinders continuous integration and delivery, a core DevOps technical practice. Using tools to automate functional and nonfunctional software tests and configuration management frees up the resources required to achieve high-velocity deployments. Version control is another core DevOps technical practice. These systems manage and track the changes to software code as revisions are released. Also known as source control management (SCM), version control keeps track of code modifications in a database and helps teams manage continuous integration.
Deployment Tools
Another core DevOps technical practice is rapid, continuous deployment of every CI build. Enabling this practice requires managing change, automating builds and tests, and keeping everything in one stable environment for release. There is a variety of tools to help DevOps practitioners orchestrate continuous deployment and automate release processes in standardized environments.
DevOps deployment tool to consider: Capistrano
Capistrano is a remote server automation and deployment tool primarily used for deploying web applications. It is written in Ruby and can extend to support other coding languages or frameworks with special requirements.
Monitoring Tools
Monitoring and logging change and reporting incidents in real time is a crucial DevOps practice. The collaboration between development and IT operations that defines DevOps culture is dependent on tracking and fixing problems as they occur during the Agile development lifecycle. The emphasis on monitoring the performance of systems, applications, networks, and infrastructure throughout the SDLC differentiates DevOps from other development methods.
DevOps monitoring tool to consider: New Relic
New Relic is SaaS web and mobile application performance monitoring tool that provides analytics from the customer experience perspective. It monitors availability, alerting, and notifications in real time for applications running in cloud, on-premise, or hybrid environments.
Feedback Tools
Open and honest communication drives DevOps culture and empowers the technical practices required to achieve the speed and efficiency it promotes. This feedback comes from multiple sources, including product team stakeholders, internal data, and customers, and in the form of surveys, bug reports, support tickets, and reviews (including social media). Continuous, automated feedback is ideal for DevOps to address problems in real time, promote learning in spite of failure, and reduce inefficiency.
DevOps feedback tool to consider: Pendo
Pendos captures user behavior and gathers feedback on the use of specific features and web page data without using software code. This data is available across various customizable segments. It monitors satisfaction with Net Promoter scores and uses in-application surveys to improve customer response rates.
Tools for Different Stages of DevOps Adoption
Adopting the DevOps methodology involves a culture shift and the use of the right tools. The State of DevOps Report (2017) measured the impact that organizational culture has on DevOps. The report highlights the importance of collaboration across all organizational levels by measuring the impact of leadership characteristics like vision and inspirational communication to high-performance DevOps teams. That said, understanding the importance of collaboration and open communication to DevOps is only part of the equation: Implementing the right tools for DevOps technical practices at different stages in the software development lifecycle is just as critical. Streamlining workflow and increasing efficiency with the right software tools is a key requirement for successful DevOps transformation.
DevOps is a shared movement of supporting knowledge from influencers with a variety of expertise from various fields of practice. Developers and system administrators adopt tools and technical practices for a range of tasks involved with developing applications and systems — for example, using tools to capture requests, gather data and report on performance metrics, implement test automation tooling, monitor acceptance tests, and support real-time continuous feedback loops from all directions in the product lifecycle (such as incorporating left-to-right feedback loops in the Kanban workflow for Agile project management).
The availability of software tools used for DevOps technical practices is a reflection of the different stages of DevOps adoption in the marketplace.
There are tools to help at every stage of adoption in the journey to a DevOps environment. These tools vary by service model and licensing terms — from freemium tools to paid enterprise models. Commercial off-the-shelf (COTS) software makes integration a challenge at different stages of DevOps adoption, but the open source model is well represented in the DevOps toolset. Furthermore, core technical practices of DevOps (like automation and continuous delivery) are still available to teams in COTS enterprise software environments. Integrating different types of tools designed for these technical practices empowers DevOps adoption and promotes collaboration.
Adopting DevOps Architecture
The trend in DevOps architectural requirements is the use of continuous deployable microservices. Microservices architecture, in combination with DevOps practices, shortens the time it takes to deploy changes in code or configuration. The small, reusable building blocks of code in microservices ensures that the application under development is not affected by the increase in the velocity of deployments. Cloud-based microservice architecture uses containers to isolate, package, and deploy code at scale.
Containers are a form of virtualization technology. Virtualization refers to the act of using a virtual resource (for example, a server, desktop, operating system, or network) to make computing processes scalable. Virtual machines use software to supplant hardware and leverage data, along with a file management system to make changes more efficiently and run multiple applications at the same.
Virtualized, cloud computing infrastructure empowers the adoption of microservice architecture for continuous deployment. Critical DevOps practices (like monitoring and logging code changes in high-velocity virtual production environments) require scalable, secure, and stable cloud-hosting platforms. Information-as-a-Service (IaaS) or DevOps Platform-as-a-Service (PaaS) tools exist to serve this stage of DevOps adoption and best practices.
Adopting DevOps Information Security to Protect Deployments
High-velocity code deployment, scaling development and IT operations with cloud-based infrastructure, and promoting visibility and collaboration makes security a top priority of DevOps methodology. The authors of The DevOps Handbook point out that in previous software development and operations eras, security reviews started after development was complete. The resulting PDF — with hundreds of pages of vulnerabilities — put stress on the pending project deadlines and the next step of the SDLC. According to the authors, one of the top objections to implementing DevOps comes from old organization models, where information security and compliance teams (InfoSec) are siloed away from development and IT operations.
DevOps integrates security into development iterations to increase developer and operational productivity, safety, and security. According to The DevOps Handbook, InfoSec is everyone’s job, every day. The core technical practices of test automation, version control, and monitoring, logging, and addressing problems as they arise makes DevOps effective at integrating InfoSec into the daily work of everyone involved in the SDLC. Tools exist to empower DevOps security processes, but adopting the culture of collaboration is as important as integrating tools for DevOps technical practices.
The authors recommend engaging with InfoSec teams early and often in the workflow, with product demonstrations at the end of each development interval. The guidance and continuous feedback from InfoSec will prevent security problems and inefficiencies from blocking high-velocity deployments and service interruptions that impact the customer. Track security issues using the same systems and tools that development and operations use for visibility and prioritize the data. Automate security tests on applications, dependencies, and environments alongside the other automated tests for continuous integration, and use feedback tools to notify DevOps teams of potential issues as part of daily work.
Adopting DevOps for Data Analytics
Managing, securing, and leveraging data is at the center of software development and the business processes that support it. Organizations that view software development as a strategic asset use data analytics to create a competitive advantage, promote operational efficiency, and deliver customer-driven products and services.
DataOps (data operations) is an approach to managing data analytics. DataOps is a process-oriented method that borrows from Agile development, Lean management, statistical process controls (SPC), and DevOps. It seeks to merge these methods with statistical processes of monitoring and controlling to improve the throughput velocity, quality, security, and reliability of data analytics at scale. The emphasis on communication and collaboration to improve database management and data analysis aligns with DevOps values.
Applying DataOps methods does not require scrapping your existing data tools. However, there is a marketplace of tools that accelerate the work of data analytics teams and embrace DevOps practices like automation, version control, and Agile development frameworks. Tools exist to help unwind the complexity of managing data — from acquisition to analysis to visualizing business intelligence insights.
The Benefits of the Right DevOps Tool
The State of DevOps report (2017) notes that “the ability to develop and deliver software efficiently and accurately is a key differentiator and value driver for all organizations [...] independent of industry or sector.” The authors of the report believe that DevOps is the best way to deliver software as a strategic asset. The report found that high-performing DevOps teams were more than twice as likely to achieve or exceed the following objectives:
- Quantity of products or services
- Operating efficiency
- Customer satisfaction
- Quality of products or services provided
- Fulfill organizational and mission goals
- Establish measures that demonstrate to external parties whether or not the organization is achieving intended results
Using these objectives as a benchmark for success, the benefits of integrating the right tools to apply DevOps technical practices include the following:
- Increase code throughput metrics
- Increase code and change deployment velocity
- Reduce time to market for new products, services, and features
- Decrease failure rate of new releases
- Quicken mean time to recovery (MTTR)
- Improve reliability metrics
- Enhance collaboration and productivity
- Eliminate work in progress and technical debt
- Enhance the overall platform or toolchain
The authors of The DevOps Handbook believe that organizations that don’t resolve the “chronic conflict” between development and IT operations are at a significant disadvantage. DevOps seeks to deliver value by using software development, QA, InfoSec, and IT operations as a strategic business process and asset. Therefore, the overall goal of integrating the right tool to leverage DevOps technical practices (like continuous delivery) is enhancing competitive advantages like time to market and reliable service. Improving organizational performance and the “human condition” (work-life balance, engagement, and job satisfaction) are by-products of achieving these goals. DevOps promotes experimentation and a culture of learning from failures. The DevOps culture encourages teams to find the right tools and continuously improve internal toolchains in order to optimize DevOps technical practices.
Resources for DevOps Professionals-in-Training
The popularity of DevOps and the reported benefits, along with its use by high-profile companies like Netflix, Etsy, Capital One, and Twitter, stokes the demand for knowledge and the skills to apply DevOps technical practices. New job titles and updated job descriptions now reflect the demand for DevOps experience, knowledge, and skills.
Job opportunities for DevOps engineers with continuous integration experience or system administrators with experience managing and operating cloud-based infrastructure will continue to rise in popularity if the copycat trends of the technology industry holds true. As more high-profile companies realize competitive advantages with DevOps, the demand for DevOps-related skills and knowledge will rise.
Learn more about DevOps and continue your professional development with the following online resources:
- Lynda: Lynda from LinkedIn offers online video-based courses for DevOps professionals-in-training, including DevOps Foundations, Cloud Architecture, and courses related to DevOps technical practices like AWS for DevOps, Elasticsearch Essential Training, Learning Puppet, and more.
- Udemy: Udemy offers video-based courses in Development and IT & Software for DevOps professionals, including DevOps Fundamentals, Learn DevOps: CI/CD with Jenkins using Pipelines and Docker, and Learning Path: Modern Devops, as well as a career preparation course titled DevOps Interview Questions.
- DevOps Bookmarks: This online resource compiles a sortable list of bookmarks for DevOps-related topics by function (for example CI/CD, virtualization and containers, etc.), platform, software license model, and programming language.
Improve DevOps with Smartsheet
Empower your people to go above and beyond with a flexible platform designed to match the needs of your team — and adapt as those needs change.
The Smartsheet platform makes it easy to plan, capture, manage, and report on work from anywhere, helping your team be more effective and get more done. Report on key metrics and get real-time visibility into work as it happens with roll-up reports, dashboards, and automated workflows built to keep your team connected and informed.
When teams have clarity into the work getting done, there’s no telling how much more they can accomplish in the same amount of time. Try Smartsheet for free, today.