DevOps Tools Everyone Should Learn in 2020

Start using the best DevOps tools today!

DevOps Tools Everyone Should Learn in 2020
The DevOps revolution has finally taken over the world and DevOps tools have become incredibly popular. According to the service Google Trends, the number of requests for "DevOps tools" is constantly growing, and this trend continues.

DevOps methodology covers the entire software development lifecycle (software), so professionals can choose from a variety of tools. But, as you know, no tool can become a universal tool for everyone. However, some solutions offer such a wide range of functions that they can handle almost any task.

Let's break down DevOps tools into categories and compare them with their peers:

  • development and build tools
  • test automation tools
  • deployment tools
  • Runtime Tools
  • collaboration tools.

Successful and thoughtful implementation DevOps Practitioner includes instruments from all five groups listed above. Analyze the current set of tools in your project so you don't miss an important element of the CI/CD pipeline.

Development and build tools

DevOps Tools Everyone Should Learn in 2020
This is the basis of the CI/CD pipeline stack. It all starts right here! The best tools in this category can manage multiple event streams and easily integrate with other products.

At this stage of the development life cycle, there are three groups of tools:

  • version control system (SCM)
  • continuous integration (CI)
  • data management

In 2020, GIT has proven itself only on the positive side, so your SCM tool should have flawless support for GIT. For CI, a prerequisite is the ability to execute and run builds in an isolated containerized environment. As for data management, it requires the ability to make changes to the database schema and maintain the database in accordance with the version of the application.

SCM + CI Tool #1

Winner: GitLab and GitLab-CI

DevOps Tools Everyone Should Learn in 2020
The best tool of the 2020 DevOps cycle is without a doubt GitLab, and it will definitely continue to be a leader in innovation in the near future.

The main function of GitLab is to provide comfortable management of the Git repository. The web interface is intuitive and easy to use. GitLab provides everything you need in a free version and comes as SaaS and on-prem (using your own resources to host software).

No other SCM tool has used continuous integration (CI) directly on your repository, and GitLab has been doing it for a long time. To use GitLab-CI, you must add a .gitlab-ci.yml file to your source code root, and any changes to the project will trigger actions based on what you specify. GitLab and GitLab-CI are deservedly recognized as leaders in continuous integration (CI-as-code).

Key Benefits

  • Reliability β€” The product has been on the market since 2013; stable; well supported.
  • Open source - The free version of GitLab does not limit the core functionality that development teams need. Paid service packages provide additional useful features for companies of various sizes and needs.
  • Engrained CI - No other tool on the market has built continuous integration directly into SCM like GitLab-CI. The use of Docker provides a hassle-free isolated build, and built-in reports make it easier to debug it (debugging). We do not need complex integration and management of multiple tools at the same time.
  • Unlimited integrations - GitLab provides easy integration of all necessary DevOps tools. This allows development and maintenance teams to have a single source of information about their application in any of the environments.

Competitors

Participated in the fight, but did not win

There are other popular tools in this category, but they are not as good as GitLab. And that's why:

GitHub β€œThis is a great SaaS version control system for small businesses and early stages of development. For large companies that need to keep IP addresses on their own network, GitHub's only solution was an .OVA virtual machine without high availability support. This makes it difficult to serve on-prem, moreover, .OVA is only suitable for medium-sized enterprises, otherwise the server will simply crash with a greater load. The lack of GitHub Actions (until recently and not yet on-prem) or CI-as-code means you have to choose a separate CI tool and then manage that integration. Finally, GitHub is much more expensive than any of the GitLab versions.

Jenkins β€œWhile Jenkins is considered the standard among continuous integration tools by default, it has always lacked versioning capabilities. It turns out that you are using Jenkins plus some kind of SCM tool. Too complicated when GitLab can do both. Mediocre UX design is not suitable for a modern web application and leaves much to be desired.

BitBucket/Bamboo - I have to admit it is an automatic loser: why two tools when GitLab does everything completely on its own. BitBucket Cloud supports GitLab-CI / GitHub Action functionality, but no company larger than a startup can easily implement it. The on-prem BitBucket server doesn't even support BitBucket pipelines!

Data Management Tool #1

Winner: FlywayDB

DevOps Tools Everyone Should Learn in 2020
In web application development, database automation is usually overlooked. The idea to roll out database schema changes to new versions of the application comes late. Schema changes often result in the addition and renaming of columns or tables. If the application version does not match the schema version, the application may crash. Also, arranging a database change when an application is updated can be tricky because there are two different systems. FlyWayDB solves all these problems.

Key Benefits

  • Database versioning - Flyway allows you to create database versions, track database migrations, easily migrate or revert schema changes without an additional tool for this.
  • Binary or Embedded - We can choose to run Flyway as part of the application or as a binary executable. Flyway checks version compatibility at startup and runs appropriate migrations, keeping database and application versions in sync. By running cmd line ad-hoc, we provide flexibility for existing databases without rebuilding the entire application.

Competitors

Participated in the fight, but did not win

There are not many tools in this area. Let's look at some of them:

LiquiBase - Liquibase is similar to FlywayDB. I'd like to set it up on top of Flyway if I had someone on my team with more experience with Liquibase.

Flocker - Can only work for containerized applications. To successfully run databases in containers, everything must be perfectly planned. I recommend using RDS (Relational Database Service) for databases and do not recommend storing sensitive information in a container.

Test Automation Tools

DevOps Tools Everyone Should Learn in 2020
Let's start the discussion of test automation tools by classifying them based on the testing pyramid.

The pyramid of testing (tests) has 4 levels:

  • Unit Tests βˆ’ This is the foundation of the whole automated testing process. There should be more unit tests than other types of tests. Developers write and run unit tests to ensure that a piece of an application (known as a "unit") conforms to its design and behaves as expected.
  • Component Tests βˆ’ The main purpose of component testing is to test the input/output behavior of the test object. We have to make sure that the functionality of the test object is implemented correctly according to the specification.
  • Integration tests - A type of testing in which individual software modules are combined and tested as a group.
  • End-to-End Tests - This step is self-explanatory. We oversee the entire application and make sure it functions as planned.

Since unit tests and component testing are done by developers only and often depend on the programming language, we will not rate these tools for DevOps.

#1 Integration Testing Tool

Winner: Cucumber

DevOps Tools Everyone Should Learn in 2020
Cucumber combines specifications and test documentation into a single living document. Specifications are always up to date as they are automatically tested by Cucumber. If you want to build an automated testing framework from scratch and model user behavior in a web application, then Selenium WebDriver with Java and Cucumber BDD is a great way to learn and implement Cucumber in a project.

Key Benefits

  • BDD approach (Behavior Driven Development - "development through behavior" as opposed to the "development through testing" approach) - Cucumber is designed for BDD testing, it was originally created for this task.
  • Living Documentation - Documentation is always a pain! Since your tests are described as code, Cucumber tests the automatically generated documentation to ensure that the tests and documentation are in sync.
  • Support – We have many tools to choose from, but it is Cucumber that has the necessary financial resources and a well-organized support system to help users in any difficult situation.

Competitors

Participated in the fight, but did not win

Among other frameworks and technology-specific tools, only Cucumber can be recognized as a universal solution.

End-to-End Testing Tools

When conducting end-to-end testing, you need to focus on two key points:

  • functional testing
  • Stress Testing.

In functional testing, we check to see if everything we want actually happens. For example, when I click on certain elements of my SPA (Single Page Application), fill out forms and select "Submit", the data appears in the database and the message "Success!" appears on the screen.

It is also important for us to check that a certain number of users running the same scenario can be processed without errors.

The absence of these 2 types of testing will be a significant drawback in your CI/CD pipeline.

End-to-End Testing Tool #1. Functional testing

Winner: SoapUI Pro

DevOps Tools Everyone Should Learn in 2020
SoapUI has been in the realm of API testing for a long time as SOAP based web services were the standard. Although we no longer create new SOAP services, and the name of the tool has not changed, this does not mean that it has not evolved. SoapUI provides an excellent framework for creating automated functional backend tests. Tests can be easily combined with continuous integration tools and used as part of a CI/CD pipeline.

Key Benefits

  • Comprehensive documentation - SoapUI has been on the market for a long time, so there are many online resources that will help you understand how to set up tests.
  • Ease of use - Although the tool supports multiple protocols for testing APIs, having a common interface in SoapUI for multiple services makes writing tests easier.

Competitors

Participated in the fight, but did not win

S is another great tool in this group. I recommend using it if you are building and running a Java based application. However, if you are building a full fledged web application with multiple technologies, it can become unwieldy for non-Java components.

End-to-End Testing Tool #1. Stress Testing

Winner: LoadRunner

DevOps Tools Everyone Should Learn in 2020
Explanation: When it comes time to load test every element of the application, only LoadRunner can do the job. Yes, it's expensive and difficult at first, but LoadRunner is the only tool that gives me, as a technical architect, complete confidence that new code will work under extreme load conditions. Also, I think it's time to move LoadRunner to development teams, not test teams.

Key Benefits

  • Extensive documentation - LoadRunner has been on the market for a long time, so there are many online resources that will help you understand how to set up load tests.
  • Protocol support - Load Runner supports from ODBC to AJAX, HTTPS, and any other non-trivial protocol your application might use. We try not to use multiple tools for load testing, as this only complicates the process.

Competitors

Participated in the fight, but did not win

Again, there are not many universal tools in this area, so the best solution is one that will work in any environment with any technology.

Deployment tools

DevOps Tools Everyone Should Learn in 2020
Deployment tools are probably the least understood aspect of development. For an operation team without a deep understanding of the code and functionality of the application, it is difficult to use such tools. For developers, deployment management is a new responsibility, so they don't have enough experience with these tools yet.

First of all, let's divide all deployment tools into three subcategories:

  • artifact management
  • configuration management
  • deploy.

Artifact Management Tool #1

Winner: Nexus

DevOps Tools Everyone Should Learn in 2020
The Nexus artifact repository supports almost every major technology, from Java to NPM to Docker. We can use this tool to store all used artifacts. Proxying remote package managers also greatly speeds up the CI build process by making packages more available to build. Another advantage is the ability to get a complete view of all the packages used in several software projects, blocking unsafe open source packages (they can act as an attack vector).

Key Benefits

  • Technical support - Reliable product; well supported.
  • Open Source - The free version does not limit the core functionality that development teams need.

#1 Configuration Management Tool

Winner: Ansible

Ansible is the leader for one simple reason: stateless. Previously, these tools focused on managing configuration state. When launched, such a tool, having received the desired configuration, will try to fix the current application configuration. And with the new approach, there are only stateless components. New code versions are artifacts that are deployed to replace existing ones. It can be considered a kind of ephemeral, short-term environment.

Key Benefits

  • Stateless - The playbook is launched from the deployment machine and executed on the target servers. I don't worry about the state of the remote object, thanks to using a tool like Packer to create deployable objects.
  • Open Source - Like CentOS, Ansible is also maintained by RedHat. It helps keep the community alive and provides high quality, easy to use modules.
  • Testing with Molecule (Ansible framework) - Since configuration management is code, like everything else, testing is indispensable here. Molecule's Ansible role testing framework works flawlessly, ensuring that the configuration is of the same quality and follows the same CI/CD pipeline as the application code.
  • YAML - Compared to other tools, YAML is easier to understand. Because configuration management is typically a new challenge for those implementing DevOps practices, simplicity is its trump card.

Competitors

Participated in the fight, but did not win

Ops Code Chef β€” I started my DevOps career as a cookbook developer. Ruby and Chef are, of course, very dear to my heart, but they just don't solve the problems of today's stateless, cloud-based applications. OpsCode Chef is a great tool for more traditional applications, and this article focuses on the future.

Puppet Puppet has never had many fans, especially compared to Chef and Ansible. It's great for provisioning and working with hardware, but it lacks modern configuration management support for a web application.

Deployment Tool #1

Winner: terraform

DevOps Tools Everyone Should Learn in 2020
Terraform solves the problem of describing your infrastructure as code, from network components to complete server images. This product has come a long way since its first release, with a huge number of plugins and a strong community built to help you in any deployment scenario. The ability to support any type of environment (on-premises, in the cloud, or elsewhere) is unmatched. Finally, the latest version provides much of the same logic and classes in HCL as any other traditional programming languageβ€”developers get the hang of it quickly and can easily master Terraform.

Key Benefits

  • Environment Independence - Terraform uses functions that serve as an interface between your Terraform code, all APIs and internal logic to communicate with the infrastructure provider. This means that I will master just one instrument and then I can work anywhere.
  • Open Source - Hard to beat free tools! Top notch community support.

Competitors

Participated in the fight, but did not win

AWS Cloud Training β€œEven if you only work in the AWS Cloud, your next job might use a different tool. Dedicating all your time and energy to just one platform is a short-sighted decision. In addition, many new AWS services are often available as Terraform modules before they become available in CloudFormation.

Runtime Tools

DevOps Tools Everyone Should Learn in 2020

The ultimate goal of any development project is to get the application into production. In the world of DevOps, we want to be fully informed about all possible problems with our environment, and we also want to minimize manual intervention. Choosing the right set of runtime tools is essential to achieve nirvana when developing an application.

Subcategories of runtime tools:

  • X-as-a-service (XaaS)
  • orchestration
  • monitoring
  • logging.

X-as-a-service tool #1

Winner: Amazon Web Services

DevOps Tools Everyone Should Learn in 2020
Amazon has always been a leader in cloud computing, but it doesn't stop there: the variety of new developer services is dizzying. Bring any technology and template to AWS and it will be built and launched. The cost of the tool is quite reasonable: compare it with the assembly, management and maintenance of equipment in your own data center. The free version allows you to experiment and make the right decision before spending money.

Key Benefits

  • Widespread - If you have experience building applications on AWS, you can work anywhere. Businesses love AWS, and startups also appreciate its low cost.
  • The free version is really a big factor that makes AWS stand out from its peers. Allow me to use the service and see how it works before I make a purchase decision, I don't want to spend thousands of dollars on something unnecessary. The free version is always enough for me to test any concept.

Competitors

Participated in the fight, but did not win

Azure β€œAzure has come a long way since its first release, and that's commendable. However, the desire to be different from analogues has led to strange service names, which often complicate the work. What does "blob storage" mean? And while .NET code works better in the Microsoft ecosystem, it's unlikely that you'll use .NET alone for every component of your application.

Heroku β€” I would never launch anything other than a personal project on Heroku due to the low level of reliability and transparency, so companies should not use it as a platform. Heroku is great for demonstrating something on a blog, but for practical use - β€œNo thanks!”.

Orchestration Tool #1

Winner: OpenShift

DevOps Tools Everyone Should Learn in 2020
You are probably using Docker or other containers in your application stack. Serverless applications are great, but they can't fit every architecture. Running containers without an orchestration platform just won't work. The Kubernetes Core (K8s) is unrivaled in terms of security and tooling. OpenShift is the only Kubernetes-based platform that can build Source2Image, automate deployment to pods, and track and monitor. OpenShift can be run on-prem in the cloud, or on-prem and in the cloud at the same time.

Key Benefits

  • Built-in Security - K8s security management may require an advanced degree. Every detail must be carefully considered and taken into account! The security mechanisms built by default with OpenShift take the burden off developers and provide a more secure platform for applications.
  • All-In-One Solution - Unlike the basic K8s, which doesn't include load balancing tools by default, OpenShift has it all. I can use it to create and host containers, run CI/CD tools, manage external processes, manage keys, and more. While the graphical user interface is still far from perfect, the API-based approach means everything can be scripted. Unlike other GUIs for K8s, OpenShift makes learning the basics of Kubernetes much easier. You don't even need to get a degree!

Competitors

Participated in the fight, but did not win

Docker swarm Docker Swarm tried to simplify K8s by getting rid of many things. It's great for small apps, but it just doesn't work for enterprise apps. Also, solutions like AWS ECS take a similar approach but make it easier to work with other services that I can also interact with (Lambda, IAM, etc.).

Monitoring Tool #1

Winner: New Relic

DevOps Tools Everyone Should Learn in 2020
Early releases of New Relic were good at one thing - APM (Application Performance Monitoring). It is now a full-featured monitoring tool that allows you to monitor server, container, database performance, end user experience monitoring and, of course, application performance monitoring.

Key Benefits

  • Ease of Use - When I was a systems engineer, I used a lot of monitoring tools, but never came across one as simple and easy to use as New Relic. It's SaaS, so you don't need to install it yourself.
  • End-to-End Visibility - Other tools try to track one specific element of your application. For example, a metric of processor usage or network traffic, but all this must be monitored in a complex way for the application to work correctly. New Relic provides the ability to bring all the data together to get a complete picture of what's going on.

Competitors

Participated in the fight, but did not win

Zabbix - My first and favorite monitoring system, but it has remained in the past due to the lack of development in cloud technologies and in the field of monitoring the performance of APM applications. Zabbix still does a good job of traditional server infrastructure monitoring, but that's about it.

DataDog - Too much focused on the process of managing the production environment of the application, and not on the code itself. With DevOps teams that include developers, we don't have to rely on hard-to-use tools to provide top-notch support.

Logging tool #1

Winner: Splunk

DevOps Tools Everyone Should Learn in 2020
Splunk is hard to compete with! For a long time, he remains a leader in logging, continuing to do it best of all. With on-prem and SaaS offerings, you can use Splunk anywhere. The big downside is its price: Splunk is still damn expensive!

Key Benefits

  • Prevalence - Businesses love Splunk and companies have the money to buy it.
  • Although startups are trying to recoup the costs, many features can be solved thanks to open source counterparts.
  • Maintainability - Simply put, Splunk works and does it well. It comes with a lot of default settings and features ready to use. No need to waste time reading the documentation and trying to get Splunk to work or decipher something.

Competitors

Participated in the fight, but did not win

ELK Stack (ElasticSearch, LogStash and Kibana) β€œThese tools seem to be favorites because you don’t even have to sell a liver to use them. However, with the growth of the set of logs and with the increase in the number of applications on board, the work becomes more and more difficult. Compared to Splunk, with ELK Stack, I've spent far more time setting up the toolkit before creating any dashboards than ever before.

Collaboration tools

DevOps Tools Everyone Should Learn in 2020
DevOps is primarily about changing the culture within an organization. The purchase of any tool will not change the usual practices in an instant, but, of course, it can contribute to the development of collaboration and the emergence of new ways of interaction.

Collaboration tools subcategories:

  • task tracking
  • ChatOps
  • documentation.

Issue tracking tool #1

Winner: Jira

DevOps Tools Everyone Should Learn in 2020
Jira maintains a leading position, although competition in this area is increasing. The incredible flexibility of Jira allows development and maintenance teams to manage project work and sprint tasks. Built-in standards using Agile terminology make it easy to move from traditional ways of working to more efficient processes.

Key Benefits

  • Popularity - Like many other tools, Jira is used almost everywhere. Small teams use the cheaper, more affordable version and get everything they need, while large companies can afford a more expensive license.
  • Integrations - Jira is a pioneer in its field. This fact and the rapid development of the product leads other companies to choose Jira to create their own integrations, thus increasing the value of the tool. We can integrate Jira with all the tools listed in this article out of the box with a little tweaking.

Competitors

Participated in the fight, but did not win

Trello Trello quickly gained popularity with its free Kanban tool. However, once processes scale and you go from dozens of tasks to thousands, Trello is hard to navigate, search, and report on.

Pivotal Tracker β€” I was a big fan of this tool when I worked for a startup. However, Pivotal Tracker is more focused on product management than technical tasks. Although product management in Jira is a little more complicated, it can still be implemented there without using an additional tool.

ChatOps Tool #1

Winner: MatterMost

DevOps Tools Everyone Should Learn in 2020
Explanation: Perhaps the biggest surprise for you in my selection, and this is good news! MatterMost has gained popularity by taking the best from previous tools but incorporating them into on-prem. For companies, this is very important: MatterMost allows you to control the data, and also helps to integrate it with tools that work locally. We no longer need to go outside the firewall to check work chats.

Key Benefits

  • Open Source - The open source version of MatterMost works great for both medium and large teams. Unlike Slack's free plan, which deletes your message history, running your own server means you keep everything.
  • Integrations - Because the API is almost 100% based on the Slack API, almost all Slack integrations can be used directly with MatterMost.

Competitors

Participated in the fight, but did not win

Slack β€” Slack is cool, but these guys have grown so much that they started looking for profit. The payback period of the business is approaching, which takes away their main value: Slack provided services for free; The most important disadvantage of the free version is the deletion of the chat history.

Microsoft Teams - Try integrating a Microsoft product with something that isn't Microsoft... Good luck! That's all I want to say about this tool!

Documentation Tool #1

Winner: Confluence

DevOps Tools Everyone Should Learn in 2020
Creating and maintaining high-quality technical documentation is a complex process, regardless of the tool you use. Although there have been many SaaS documentation tools on the market lately, it would be difficult for me to transfer the storage of technical documentation about mission-critical applications to third parties. Storage of data and documents is preferable to on-prem, and here's how Confluence solves it.

Key Benefits

  • Ease of Management - Most standalone tools can be a little tricky to set up and operate and require some knowledge to maintain. The Confluence Server works great out of the box for 10 or 10,000 users.
  • Plugins - Thanks to Confluence for having nice and easy navigation out of the box, and the ability to add a plugin for just about everything unlocks the potential as a Wiki.

Competitors

Participated in the fight, but did not win

Read the docs - Cool for open source, but don't even think about storing critical knowledge here.

Markdown - Great for documenting code, but it's hard to post architecture, processes, or other types of documentation here due to MarkDown specific formatting.

Jekyll - When documenting technical knowledge, I don't want to create a new static site that will be deployed with every change. Confluence's simple versioning system greatly simplifies internal documentation.

To summarize

There are literally hundreds of DevOps tools on the market, so it's hard to know which ones to use and when to implement them. Follow this simple guide to choosing DevOps tools for a complete CI/CD pipeline.

Be sure to select tools from all five categories:

  • development and build tools
  • test automation tools
  • deployment tools
  • Runtime Tools
  • collaboration tools.

Main recommendation: Automate everything!

Thanks to Zach Shapiro!

Source: habr.com

Add a comment