As SPK’s Vice President of Sales and Marketing, our customers always have the same question for me. Technology leaders and executives repeatedly ask me, “Michael, what are the best tools for DevOps?” or “I want to use xyz tool. Is it the best?”
These are hard questions to answer without a lot of further context. All executives want a seamless collaboration during the entire software development lifecycle. Undoubtedly, this allows teams to complete projects successfully and achieve higher customer satisfaction. It’s a no brainer. What executive wouldn’t want that? But there’s a problem. Many executives lack the foundational knowledge to make purchasing or implementation decisions. Consequently, this causes more harm than good. So, let’s explore how organizations should look at DevOps tools from the top down.
The Benefits of DevOps
I hate to admit it, but the word “DevOps” in many organizations is just a buzzword. Sadly, it’s not the state of their technology and software implementations. Yet many IT and software leaders know that DevOps can provide value for their organizations. This results in faster deployment and delivery. Furthermore, it also reduces friction among IT and software team members. What could be better? Reduced departmental friction, quicker time to market, less waiting, better products, more satisfied customers. DevOps is an executives dream!
Atlassian, a globally renowned leader in the space, published DevOps guidance for Software Teams. Significantly, it states “teams who fully embrace DevOps practices work smarter and faster, and deliver better quality to their customers. The increased use of automation and cross-functional collaboration reduces complexity and errors, which in turn improves the Mean Time to Recovery (MTTR) when incidents and outages occur.”
So we all agree? DevOps is a good thing. But with a myriad of tools for DevOps to choose from, which one is right for your business?
The Tools For DevOps Landscape
In presentations I show to other companies about DevOps, I display this graphic from Digital.ai.It’s titled as “The Periodic Table of DevOps Tools”. As you can see, the graphic shows plenty of tools for DevOps and categorizes each of them. In my opinion, the categorization is the most important.Why? Because we have to understand the business value of each of the categories. As a result of understanding this, we can determine why I would look at one tool vs. another.
To navigate the large mass of tools in this graphic, I prefer to have non-technical staff, or leadership assist. They review the categories to understand the business value first. Below, you will find the categories in an easily digestible format.
AIOps/Analytics
This is a relatively new category for this graphic, but is important. Firstly,at a high level, tools for DevOps within this category are monitoring and analytics toolsets for information technology (IT) and DevOps teams. Secondly, they can be used to determine performance metrics. Lastly they work well as event monitoring for infrastructure and cloud services. Because many of these tools can monitor application performance, not just infrastructure, they are very valuable to developers. They enable feedback on application performance. These tools help solve the “well it worked on my machine” responses from developers to IT groups.
Artifact/Package Management
Artifacts Management (or artifact repositories) are used to store, organize and distribute the compiled software (binaries plus their metadata) in a single centralized location. These tools for DevOps are valuable. This system reduces the amount of time spent downloading dependencies from a public place. Moreover, it saves developers (and security staff) from being overwhelmed with extra work that can be centralized. Finally, they also provide a valuable audit trail to track changes over time. This is due to the artifact management process storing the artifacts built over time.
Cloud
This category includes major internet infrastructure services. They replace your internal infrastructure with external services. Cloud services deliver a framework for developers that they can build upon and use to create customized applications. For example, all servers, storage, and networking can be managed by the enterprise or a third-party provider. This is whilst the developers still maintain management of the applications. The benefit of utilizing Cloud services is that IT infrastructure costs can be minimized. Additionally,management of IT infrastructure can be decoupled from the IT organization’s data center. Now, developers can access new tools without waiting for IT or Security to authorize its utilization. Tools for DevOps within this category include AWS, Azure and other options.
Collaboration
The Collaboration category in DevOps includes the common methods. These allow IT operations, developers, and other stakeholders to come together. They work as a single team to address and solve any problem in the program hindering the goalkeeping and customer focus. They own the problem themselves and eliminate the blame game. Tools for DevOps in this category vary largely. In particular, this is because each enterprise is different and has different needs. Some are considered ‘chat programs’. Others are used for documentation to read later. Ultimately, all of them offer some level of collaboration between distinctly different parts of the organization. Tools for DevOps in this category include Atlassian Confluence, amongst others.
Configuration Automation
This category was formerly called “Configuration Management”. The Configuration Automation category has a range of helpful tools. Tools for DevOps in this category help track and control changes made to the environment where code is deployed to. Furthermore, it also helps track hardware and software inventories utilized to create an environment or platform for their client’s use. And that applies for both internal and external use. Being able to monitor, add, track, and update assets in their environment builds several benefits. For example, better quality systems, quicker troubleshooting, and better auditability.
Containers
Containers are extremely powerful technologies. They expand the software limitations beyond the previous limits. A container is a standard unit of software that packages up code and all its dependencies. This enables the application to run quickly and reliably from one computing environment to another. Containers are lightweight. They’re also standalone, executable packages of software that includes everything needed to run an application including:
- code,
- runtime,
- system tools,
- system libraries and
- settings.
For example, normally you can only have a single version of an application installed on a workstation. But, with container technology, you can have multiple versions of the application installed and being used.
Continuous Integration
Continuous Integration (CI) is the practice of automating the integration of code changes from multiple contributors/developers into a single software project. Traditionally integration was done in a waterfall methodology. This could take weeks, months, or quarters.
DevOps practices pushed the use of CI enabling developers to frequently merge code changes. Also, they could merge these changes into a single, central repository where builds and tests are run. If integration fails, developers are alerted in a very short cycle. For instance, from the time they originally wrote the code, as opposed to weeks or months later. This practice increases the software product quality. Tools for DevOps in this category include Jenkins / CloudBees CI and more.
Database Management
Tools for DevOps in the database management category enable specification of changes. For example, they allow developers, IT, and stakeholders to specify changes to a database using SQL or different-agnostic formats. These include XML, YAML, or JSON formats which are more developer-friendly languages.
Developers can abstract the database code making it easy to push changes to different database types. Therefore, by allowing non-DBA-type staff to interact with the database, organizations can enhance the creation or software updates quicker and more securely. These tools for DevOps also include rollback procedures. Ultimately, these create a safe environment for developers to make these changes.
Deployment
Once you have great software, you need to deploy it to production. Tools for DevOps in this category help you do that in a smart and safe manner. These tools simplify provisioning, build, and release of multi-tiered applications and microservices. Many of these tools allow administrators to determine what part of the user base gets new deployments. Firstly, should all users get this update or only a certain part of the environment? Secondly, should people in specific geographic areas get the update but not others? These tools provide multiple methods for deployment. At long last, developers can gain new software intel without the potential of catastrophic impact. Tools for DevOps in this category include CloudBees CD/RO and others.
Enterprise Agile Planning
This is another new category for this graphic. The tools for DevOps within this category are normal program or portfolio tools for large organizations. They are intended to:
- Gather information about execution of the organization. Firstly, this ensures initiatives are being met. Secondly, it ensures their goals are tracking to the day-to-day work being completed.
- Provide reporting and analytics. This allows stakeholders to ask questions. It enables areas of inquiry to get real-time, up-to-date information. Ultimately, it means action can be taken at the right level and at the right time.
Many of the tools in this category are built for large organizations, and massive amounts of data. Therefore, artificial intelligence engines are used to monitor patterns. This provides stakeholders with valuable insights. It also enables it to occur in a quick and easy manner. Comparatively to asking stakeholders or report writers to identify anomalies or date trends..
Issue Tracking/ITSM
Tools in this category vary in their capabilities. more than most categories. But they all help track work that needs to be done. Perhaps this work is part of a software development project. Alternatively it could be work required due to issues, bugs, errors, end user needs and more.
Each of the tools for DevOps in this category provide benefits. Utilizing these tools is important. That’s because they have multiple benefits to organizations, including:
- Empowering teams to deliver great service fast.
- Bringing visibility to the work that needs completed.
- Accelerate the work flow between development, IT, and business teams.
Tools for DevOps in this category include Atlassian Jira, Atlassian Jira Service Management amongst others.
Release Management
Release Management tools for DevOps are similar to the Deployment tools. This is because they help you get software to the users. However, Release Management tools also help you move releases through your development cycle’s phases. From pre-production to production. Due to this, it empowers other non-technical stakeholders to have an impact on the release schedule. They become included in the development of new software, new features, and more.
Now, stakeholders can integrate with other planning software. Consequently, they can create and share their release plan and status. Furthermorethey know the schedule, key milestones and can identify issues that might delay releases. Tools for DevOps in this category include CloudBees CD/RO and others.
Security
Tools for DevOps in the Security category are mostly built for continuous inspection of code quality. However, many of them have additional features too. Most of these tools can do static code analysis. This provides a detailed report of bugs, code smells, vulnerabilities and code duplications. The goal of these tools is to reduce complexity and possible vulnerabilities while optimizing the application.
Serverless/PaaS
Tools for DevOps in the Serverless category provide a platform of compute resources. Therefore, they run your code in response to events and automatically manage the underlying compute resources for you. These events may include state or update changes. For example, a user placing an item in a shopping cart on an ecommerce website. Utilizing these Serverless platforms allows organizations to minimize infrastructure spend while still having compute resources available, which makes the solution very scalable. Utilizing Serverless technologies also allows developers to run their code closer to the end user which reduces latency.
Source Control Management
Source control (or version control) is common practice in the DevOps world. It’s the practice of tracking and managing changes to code. Source control has expanded over the years to include infrastructure too (infrastructure-as-code). Now it tracks versions of both software and infrastructure being used to deliver software. Tools for DevOps within the SCM category provide a running history of code development. Consequently they help resolve conflicts when merging contributions from multiple sources (CI).
Testing
Tools for DevOps in the Testing category are automated software testing toolsets. They increase the depth and scope of tests that have been run manually, along with improving software quality. Lengthy tests that are often avoided during manual testing can be run unattended. Automated tests can be run on multiple computers with different configurations. Ultimately, this improves the quality of the end software product. In my experience, automated testing tools are a huge area for improvement in many organizations’ DevOps practices. Tools for DevOps in this category include Selenium and Cucumber to name a few.
Value Stream Management Platforms (VSMP)
Another relatively new category for this graphic, but it is extremely important. For mid-market and large organizations, the amount of data points can be staggering. With so much data, how does an organization:
- increase efficiency,
- improve the quality of their solution, and
- keep employees engaged?
Value Stream Management Platforms address this. According to Gartner, Value stream Management Platforms “enable organizations to optimize end-to-end product delivery and improve business outcomes. VSMPs are tool-agnostic; they connect to existing tools and ingest data from all phases of software product delivery all the way from customer need to value delivery. They help software engineering leaders identify and quantify opportunities to improve software product performance by optimizing cost, operating models, technology and processes. VSMPs use AI-/machine learning (ML)-powered analytics and insights to surface constraints, detect bottlenecks and improve flow. This enables stakeholders to take actions that improve throughput and align to business priorities and objectives.”
Your DevOps Journey and Tools For DevOps Plan
This is valuable information. It allows you to lay the foundation and explore the right tools for DevOps in your own organization. Each DevOps journey will be different because there are so many different factors to consider. But, in my opinion, there are some common threads that should be considered. Dell’s recently documented DevOps journey does support a few of the items I’ve included below.
Here are my recommendations to help determine which tools for DevOps are right for you.
Leaders Lead, Experts Expert
One of the main points of the Dell article listed is that your DevOps strategy should be aligned from the top down. That’s with defined goals and allocated budgets. Additionally, I’d like to expand on this because In my opinion a complete “top down” DevOps implementation is 100% wrong. However, you need top down support. To this I say, leaders should lead.
Meaning, leaders should support and sponsor the transformation but should not be involved in tool selection beyond budgeting. The internal experts in your organization know what is needed to accomplish the objectives. Therefore, allow them to provide the information needed to make valuable decisions. If they don’t like the tool, they will find ways around it. Ultimately it will create a culture problem.
CI/CD Is A Must
Whatever you decide to do, you must be doing CI/CD. Therefore, if you’re not integrating your code on a short cycle (daily), or deploying frequently (weekly or bi-weekly), you can’t be doing DevOps. And there are tools that help you do this safely and securely. Invest in CI/CD. The rest of the tool stack will follow.
Communication As A Tool For DevOps
While tools are important, the most important part of a DevOps journey is the culture. It’s a well deployed DevOps culture that teams build which make it sustainable. A lot of that comes from collaboration and communication. So again, invest in that.
Don’t Do It Yourself
As a consulting company that focuses on helping companies accelerate their product development process, we know that internal voices resonate differently compared to external ones. Our experts at SPK have experience with many different companies and industries. These experiences allow us to bring something to the discussion that many other internal staff members don’t have.
Hiring external experts is not an expensive undertaking, especially considering the licensing costs of some of these tools. We can help you select the best in tools for DevOps, including selection in order to and match the needs of your unique organization to the right software tools and practices.
If you would like to discuss any of your DevOps needs, you can contact our expert team for a no-obligation discussion.