High-performance and highly available VPS/VDS with automatic installation and full root access to the OS. The ordered resources are guaranteed to be reserved for you.
Fortify your operational continuity with our resilient disaster recovery solutions, ensuring swift recovery and minimal downtime in the face of unforeseen challenges.
The essence of DevOps is a set of practices and methodologies combining Development and Operations aimed at ending the infamous clash between programmers and admins, and at the same time increasing the efficiency and speed of delivering software to the market. It is commonly believed to have brought a new way of working to the IT industry and gave birth to such notions as DevOps engineers.
And now, thousands or even hundreds of thousands of new people join this global DevOps process every year and even more continue on the path of continuous development. They all need tools to optimize and automate their work - to build, version control, manage configurations, projects, incidents, and much, much more. And of course, these tools exist - some of them remain almost unchanged and some are updated, giving rise to annual compilations of up-to-date professional software for DevOps specialists.
In this post we won't argue whether the DevOps approach works as a synergy between different teams, or whether simple admins have a future... but we will offer our checklist of tools, both foundational and variable. To make it easier to navigate our selection we have divided these tools into several categories: applied, platform (including our beloved cloud), and tools for teamwork.
So, let's begin.
Applied tools
The diverse landscape of utility products for DevOps specialists can be broken down into categories by functionality:
working with code,
code storage,
configuration management,
CI\CD systems.
Let's consider them in order.
Working with code
Of course, we're talking about Git here. An alternative exists in the form of Mercurial, but it isn’t encountered nearly as often in development teams. However, for the sake of historical honesty, we will note that its predecessor was the free centralized version control system Subversion (SVN) from CollabNet.
GIT
Git is probably the best and most widely used version control tool for development. Using Git, you can easily coordinate the work of teams of different levels, from 3 to 100 people or more. It lets developers keep track of all changes and updates to program code so that if something goes wrong, they can easily go back and use previous versions.
Git is compatible with most protocols (HTTP, SSH, FTP, and others). It has a varied toolkit available, including the GitHub cloud-based code repository service, GitLab on-cloud and on-premise, Gitea as a GitHub analog for its servers, and the BitBucket source code hosting service. Of these three tools, GitLab and BitBucket are specifically designed for enterprise-level version control. Let’s take a closer look at all of this stuff.
In addition to the aforementioned, Git allows DevOps professionals to:
Create development branches, merge them, switch between them to work with different versions of code, and tag them to separate certain versions of a project.
Collaborate remotely with each other and synchronize their changes with a remote repository.
Use a hash to identify each version of a file and control the integrity of the data in the repository.
Specify ignored files and folders that should not be tracked by the version control system.
Detect conflicts when merging changes from different branches when the same file was changed in different ways.
Code storage
And this is where we come to the popular Github, Gitlab, Gitea, and Bitbucket already mentioned above. All of them are web services for hosting and collaboratively developing IT projects while using the Git version control system. All of these platforms offer a full development cycle and a wide range of tools and functionality for developers, providing convenient collaboration, change tracking, project management, and integration with other services.
Their differences lay in the details.
Github
GitHub was developed in Ruby on Rails and Erlang from the eponymous company. It can be used for free for open-source and small private projects, with paid rates now offered for large projects. It’s known for its official slogan "Social Coding" and the less official "Fork you!", hinting at an informal approach and the ability to make creating new forks easier and less painful.
Gitlab
GitLab is written in a mix of Ruby on Rails, Go and Vue.js. It offers a full development cycle, DevOps tools integration, and the ability to host the platform on your own server (there is a free option - GitLab Community Edition), or use a cloud solution directly from GitLab Inc.
Gitea
Gitea is designed with a focus on being lightweight and performant, with low resource consumption, allowing it to run even on relatively weak servers. It therefore offers fast access to repositories and a responsive interface. It can be hosted on all platforms supported by Go, including Linux, macOS, and Windows.
Gitea provides an easy and fast way to create your own hosted repositories, as well as a cloud-based solution for storing and managing code. It is designed as a self-hosted solution, but there are also public instances, such as Codeberg.
Bitbucket
Bitbucket was developed by Atlassian and is therefore tightly integrated with its other products, such as Jira, Confluence, and Bamboo. When used together, they create links between development, project management, error tracking, and continuous integration. For example, you can link tasks and merge requests to relevant tracks in Jira, share information, and track work progress for greater integration of development and project management within the Atlassian ecosystem. It supports OpenID and the Git and Mercurial version control systems, providing developers with flexible tools for hosting and managing their code base.
All of these services therefore have similar functionality, generally allowing DevOps specialists to:
Store and manage repositories containing code, documentation, project resources, and other files.
Upload code, documentation, and other project resources for centralized management.
Commit changes, create branches, merge changes, and roll back previous versions of code (the Git version control system).
Manage users, commands, and access to repositories. Administrators can assign different roles and permissions to control who can view, modify, or administrate repositories.
Integrate with other services and development tools, bug tracking tools, task management, communication, and other services. Also use APIs to develop custom plugins and extensions, allowing you to customize the platform for specific needs.
Publish projects and repositories publicly, create pull requests to open source projects, contribute to development, and share your ideas with other developers around the world.
Configuration management
Ansible, Chef, Puppet, and Salt are popular in this category. There’s also the slightly further afield Terraform. All of these are open source tools for configuration management, application deployment, and task automation using a specific markup language to describe configurations.
They can be briefly described as follows:
ANSIBLE
Ansible is designed with a focus on ease of use and code clarity. It is considered easy to learn and use because its Playbooks are written in YAML with minimal commands and are human-readable. It is typically used to manage Linux nodes and is included in most Linux distributions, but is also supported by Windows. Ansible requires Python version 2.4 or higher to run and supports host control over SSH or WinRM connections.
CHEF
Chef provides powerful capabilities for managing the state and configuration of systems, applications, and IT infrastructure (servers, networks, storage, and applications). Together with multi-platform support that includes a cloud platform, Chef remains one of the most popular DevOps tools after Puppet.
It works with multiple platforms such as AIX, RHEL/CentOS, FreeBSD, and also integrates easily with cloud platforms such as Peerobyte.
PUPPET
Puppet is a reusable module for quick configuration of pre-configured servers, compatible with most platforms. Like Chef, it also uses IAC, adopting a master-slave architecture.
Salt (SaltStack) allows developers and system administrators to manage a large number of servers and network devices. It is written in Python and supports the IaaS approach to cloud deployment and management.
All of these tools feature similar functionality, allowing DevOps specialists to:
Manage the configuration of various system components, including operating systems, network settings, databases, web servers, applications, and more.
Use a simple markup language to define configuration files.
Use configuration files (Playbooks) to define tasks required for application deployment, including application loading and installation, environment configuration, database configuration, and other tasks related to application deployment and orchestration.
Execute tasks in parallel on multiple target systems for high scalability and speed of execution, especially in large and complex environments.
Integrate with various cloud platforms, particularly Peerobyte.
Extend functionality and integrate with other tools and systems using a wide ecosystem of off-the-shelf and proprietary plug-ins and modules.
Get information about task results, as well as collect and analyze logs to track changes and solve problems.
Use version control systems such as Git to store and track changes in Ansible Playbooks and configuration files.
Terraform
Terraform we set slightly to one side - because it is a declarative tool (what result you want to get), unlike the previous ones, which are more imperative (how you want to get the result). Terraform is designed to work directly with cloud platforms and enables you to manage your infrastructure and combine resources from different providers into one project.
In addition to the previous tools, Terraform allows DevOps professionals to:
Describe the desired infrastructure in the form of declarative configuration files that can be stored and monitored using version control systems.
Create deployment plans that show what changes will be made to the infrastructure and then apply those changes on demand.
Automatically identify and manage dependencies between infrastructure resources.
Maintain the state of the infrastructure, allowing changes to be tracked and managed over time.
CI\CD system
Gitlab and bitbucket, already covered above, work perfectly well for this use case. In addition, it is worth mentioning two systems for automatic assembly, testing, and deployment of software and continuous integration (CI/CD) with great functionality, Jenkins and Teamcity.
JENKINS
Jenkins is designed to support distributed workflows for accelerated and transparent building, testing, and deployment across multiple platforms. It is developed in Java and is an open-source project.
Jenkins is supported by many operating systems, including Windows, macOS, *nix, GNU\Linux. It can also be deployed to cloud platforms. It is worth mentioning that it has more than 1500 plugins available, allowing for maximum customization.
Teamcity
TeamCity from JetBrains supports various build and testing systems such as Maven, Gradle, NUnit, JUnit, and others. This allows errors and problems to be detected during development and ensures the quality and stability of the application.
When working with it, administrators can define different access levels, and restrict rights to change project configuration, launch builds, and other operations. This ensures security and protects the confidentiality of project data.
The two systems have similar functionality, allowing DevOps specialists to:
Perform automatic code building, testing, and analysis every time there is a change in the repository, so integration and conflict issues can be quickly detected and fixed.
Integrate with various development tools: version control systems (Git, SVN, etc.), task management systems (such as Jira), development environments (Eclipse, IntelliJ IDEA, etc.), and other tools.
Set up an automated deployment process once the code is successfully built and tested, which includes packaging the application, deploying to test or production servers, and running automated tests.
Create and manage complex build and delivery pipelines. It is also possible to configure the sequence of steps, dependencies between them, startup conditions, and parallel execution.
Save and manage configuration files and project settings, allowing you to restore previous configurations, easily deploy new instances, and maintain configuration consistency across environments.
Scale horizontally, so you can distribute the execution of assemblies and tasks across multiple compute nodes.
Configure the schedule for task execution.
Recover from failures: save backups of configurations and data, automatically recover from restarts, and restore previous states of pipelines.
Platform tools
This big trend includes cloud services, containers, logging tools, monitoring, and metrics.
Cloud services
When it comes to international services, it is impossible not to mention AWS, Azure, Google Cloud, Kubernetes, Alibaba Cloud, OpenStack, and others. Besides, there is also a new one Peerobyte. The main products that Peerobyte offers are virtual and dedicated servers, as well as services to work with them.
Containers
We will not list them all but focus on the most often used ones - Docker and Kubernetes.
DOCKER
Docker is an open platform for automating the development, deployment, and management of containerized applications. It ensures the isolation and portability of applications, allowing them to run in a homogeneous environment, regardless of the configuration of the host system. Docker runs on Windows and Linux operating systems and is compatible with various cloud services, in particular Peerobyte.
Docker functionality allows DevOps professionals to:
Create and manage containers, where each container contains everything you need to run your application, including the file system, libraries, environment variables, etc.
Manage the resources allocated to each container: limit CPU, memory, network resources, and other settings for containers.
Create multiple container instances and distribute the load between them using orchestration tools (Docker Swarm).
Create and configure virtual networks to isolate containers from each other or connect them to external networks.
Use off-the-shelf images from public repositories (such as Docker Hub) or create your own, and manage, update, and distribute them.
View and analyze container logs and monitor their performance, resource usage, and status.
EU Cloud Infrastructure You Control
Run production workloads on dedicated resources across EU data centres. Transparent pricing, no hidden costs.
Full control over compute, storage, and networking.
Use continuous integration and delivery (CI/CD) tools such as Jenkins, GitLab CI, Travis CI, and others.
Develop and test applications on-premises and then run them in the cloud (in production) with minimal changes.
Optimize the use of host system resources. Containers run on a single operating system kernel, which allows for efficient use of computing resources, memory, and disk space.
Work on projects in teams: you can create and share container images, customize the development environment for the whole team, create common configurations, and apply them to different environments.
KUBERNETES
Kubernetes is an automation platform for containerized application orchestration. It supports major containerization technologies, including rkt, hardware virtualization. Developers use Kubernetes to automate processes such as container configuration, scaling, networking, security, and more to achieve speed and efficiency in production.
Kubernetes also enables DevOps specialists to:
Manage containers efficiently: deploy, start, stop, and scale containerized applications.
Describe the desired state of the application in the form of declarative configuration files known as manifests.
Scale applications horizontally (horizontal scaling) and vertically (vertical scaling). It automatically load-balances containers and cluster nodes to ensure optimal resource utilization and high availability.
Automate disaster recovery.
Create internal and external networks for containers.
Monitor application and infrastructure health and performance.
Working with logs
The three most common tools are ELK Stack, Splunk, and Graylog. These are open-source log data management and analysis tools that help troubleshoot, identify trends, and gain insight into the system.
ELK Stack
ELK Stack is probably the most powerful of them. It can be used to monitor various systems and applications, including web servers, application servers, databases, and more. It also has high scalability, allowing it to manage log data from a small number of servers to a large distributed system.
ELK Stack consists of three main components: Elasticsearch, Logstash, and Kibana. Elasticsearch is the search engine and database that stores log data. It allows you to do horizontal scaling and distribution of data across multiple nodes, which provides high availability, fault tolerance, and scalability of the system, allowing you to handle large amounts of data.
Logstash helps to standardize data formats, converting them into a unified format to ensure uniform data presentation and processing in the system. It also handles large volumes of data and provides fault tolerance through a distributed mode.
Kibana is a visual interface for exploring and analyzing data in Elasticsearch.
Splunk
Splunk works in a similar way and also uses a special query language - SPL (Splunk Processing Language), which provides flexibility and power when dealing with data. Splunk Cloud provides performance monitoring of cloud infrastructure, applications, and services. It comes with powerful dashboards and integrations with most CI/CD tools, Operations Support Systems (OSS), Kafka, AWS, Azure, Google Cloud Platform (GCP), Pivotal Cloud Foundry (PCF), and others.
Graylog
Graylog is an open and scalable centralized log collection, management, and analysis platform, although not as extensive as the preceding picks (especially the free version). It provides tools for collecting, processing, storing, and analyzing log data from various sources, such as applications, operating systems, network devices, and other systems.
All data collection and processing platforms have similar functions that enable DevOps specialists to:
Collect data from a variety of sources, including logs, events, metrics, sensor data, databases, and more. A variety of data collection methods are supported, including APIs, log files, network layer protocols, databases, and even real-time data.
Use an index and type structure to process and store data, allowing fast and efficient access to data for search and analysis.
Manage data storage, including setting retention times, and rotating and archiving data.
Search, filter and analyze data - perform searches based on various conditions and parameters, apply filters to refine results and perform analytical operations such as aggregation, statistics, correlation and more.
Visualize data in a convenient and understandable format - in graphs, charts, tables, maps.
Monitor system status and events in real time with alerts and alert notifications.
Expand functionality with plug-ins and integrate with other tools.
Monitoring and metrics
This section features a pretty wide range of tools: Prometheus, Alertmanager, VictoriaMetrics, to a lesser extent Zabbix. Another, less popular tool, which is nevertheless sometimes mentioned in DevOps guides and tips, is Raygun. And when it comes to visualization, Grafana is often used.
Prometheus
Prometheus is an open-source monitoring system developed by SoundCloud. It is actively used for monitoring cloud and containerized environments, as well as for monitoring traditional infrastructures.
Prometheus has its own query language for analysis and aggregation of metrics PromQL (Prometheus Query Language), which gives flexibility and power to calculate statistics, filter and group data, and create graphs and alerts based on conditions.
VictoriaMetrics
VictoriaMetrics is a fast and efficient open-source time-series data storage and analysis system designed to handle and analyze large amounts of time-series data such as monitoring metrics, event logs, and trading data.
VictoriaMetrics offers a flexible architecture that allows for horizontal scaling depending on needs. It’s designed for use in high-load environments and provides high performance in writing and reading time series data, can serve multiple clients in parallel, making it suitable for distributed environments and systems that require scalability.
Zabbix
Zabbix is a powerful open-source monitoring system designed to monitor the status of various IT infrastructure components such as servers, networks, databases, applications, and other devices. It also has extensive functionality for collecting, analyzing, and visualizing data, as well as notifications of anomalies and problems, usually used for low-level infrastructure monitoring.
Raygun
Raygun is an end-user monitoring solution that shows developers how the end-user is handling software applications. It is used to quickly detect, diagnose, and resolve application issues such as bugs, performance issues, and front-end failures. Raygun is easily customizable and integrates up to 43 tools, including various languages such as JavaScript, PHP, Node.js, Python, and platforms such as GitHub, HipChat, Slack, Jira, and others.
All of the above tools have similar functionality. With them, DevOps specialists can:
Track and monitor bugs occurring in applications in real-time.
Collect metrics through a variety of methods (data collection including exporters, client libraries and native application integration, SNMP, IPMI, JMX, ICMP, HTTP, and others) that provide information on system health, such as resource utilization, network bandwidth, server load, and other metrics.
Monitor a wide range of resources in the IT infrastructure, including servers, networks, virtual machines, containers, databases, and applications. Track and analyze performance metrics such as server response time, latency, and workload to help optimize application performance.
Analyze and fix bugs: view their details, analyze the call stack, compare bugs, and track the history of code changes.
Save collected metrics to internal data storage using compression and compression, which saves significant disk space.
Visualize metrics and create graphs, create custom dashboards. Data visualization allows you to quickly track the state of the system and analyze its performance.
Set up rules and conditions for alerts for potential problems and emergencies.
Integrate with various tools for monitoring, analytics, and data visualization. Use flexible data visualization capabilities with graphs, charts, and custom interfaces. This allows you to build dynamic graphs to show metrics and how they change over time.
Use a wide range of built-in monitoring templates for different types of devices and applications, as well as the ability to create your own templates. This allows users to tailor monitoring to their specific needs.
Generate reports and analytical information on performance and error statistics. This helps developers understand the big picture and prioritize fixes for problems.
Grafana
Grafana, as we discussed earlier, is a powerful open-source data visualization and analysis tool designed to create colorful and informative dashboards. Grafana has extensive functionality that allows you to analyze and monitor data in real-time, make predictions, and make informed decisions.
As part of its functionality, Grafana allows you to:
Integrate with a variety of data sources, including databases, monitoring systems, time series databases, and others. It supports popular systems such as Prometheus, Graphite, InfluxDB, Elasticsearch, MySQL, and many others.
Create and customize dashboards and graphs. You can add various types of panels, charts, tables, and other visualization elements, and customize their appearance and settings.
Create your own plug-ins and integrate them into the system.
Integrate with version control systems, such as Git, making it easy to version and track changes in dashboard settings and configuration.
Tools for teamwork
Last but certainly not least. Everyone works in teams, which means that it is extremely difficult to do without the appropriate tools. These can be divided into two categories: tracking systems and documentation systems.
Tracking systems
The most popular tools are Atlassian Jira, OpenProject, and you can also use the previously discussed Gitlab.
Atlassian Jira
Atlassian Jira is a popular flexible project and task management system with a wide range of functions for efficient teamwork and improved development processes.
Overall, Atlassian Jira provides a comprehensive toolset for project and task management, making it easy for teams to plan, track, and collaborate. It integrates with other Atlassian tools such as Confluence and Bitbucket to improve communication and collaboration.
OpenProject
OpenProject is an open project management and collaboration platform that provides powerful tools for planning, tracking, and managing projects of various sizes. It is designed with openness and transparency in mind, providing flexible options for collaboration and effective management of project tasks.
In fact, they all have similar functionality. With their help, you can:
Create tasks, describe their properties and attributes, assign responsibilities, and track their statuses and progress. They support flexible task structures, including epics, histories, subtasks, bugs, and other types, which allows you to organize hierarchy and levels of detail in your projects.
Create and customize workflows, including milestones, workflows, rules, and automation. You can define your own workflows, as well as using pre-defined templates that are consistent with development methodologies such as Scrum and Kanban.
Assign tasks and jobs to specific team members, as well as manage resource allocation and employee workloads.
Comment on tasks, discuss, and share information among team members.
Use reporting and analytics tools to track project progress, analyze data, monitor performance metrics, and make informed decisions. Create charts, graphs, dashboards, and custom filters to visualize and analyze data in real-time.
Use extensions and integrations with other tools and systems. With an open API and various plugins, users can customize OpenProject functionality to meet the unique needs of their projects and integrate it with other platforms and tools such as version control systems, continuous integration, deployment (CI/CD) tools, email clients, and more.
Systems for documentation
Here we chose Atlassian Confluence as somewhat of a standard for IT companies, and Wiki.js as a free alternative.
Atlassian Confluence
Atlassian Confluence is a collaborative platform for creating, organizing, and collaborating on content within teams and organizations. It provides the ability to create and share information, documentation, knowledge, and ideas, facilitating effective communication and collaboration.
Atlassian Confluence integrates with other Atlassian tools such as Jira, Bitbucket, and other popular development, collaboration, and project management tools. This allows you to link Confluence content to specific tasks, projects, or repositories, facilitating collaboration and information exchange between the different tools.
wiki.js
Wiki.js is a modern, searchable data creation and editing platform. It supports Markdown markup, which makes writing and formatting text easy and convenient. Users can add images, videos, tables, and other content elements to create informative and visual pages.
Wiki.js has a flexible navigation system with the ability to create page structure and use categories and subcategories to easily organize content. It also supports integration with other tools and services such as version control systems, continuous integration and deployment (CI/CD) tools, cloud storage, and more. It also provides an API for extending functionality and creating custom plugins, allowing users to customize Wiki.js to meet their unique needs and integrate it with existing tools and systems in their workflow.
Both of these platforms have similar functionality, allowing DevOps specialists to:
Create, edit, and structure different types of content (pages, blogs, wikis, discussions, and others), and add multimedia files, tables, charts, and other elements for visibility and clarity.
Collaborate on content: comment on pages, discuss ideas, give feedback, and make edits.
Find relevant information and content. Tagging systems, categories, and a structured organization mechanism make it easy to navigate through large amounts of content and quickly find the documents or pages you need.
Manage user access and rights to content: set different access levels, define user groups, control reading rights, and edit and publish content.
Keep a history of changes to each page, allowing users to view previous versions and return to previous states.
And how could we forget the basics that determine the requirements for DevOps - programming languages? You can't do without them! Commonly, it's likely to be Python and Go.
Hopefully, this list has not managed to confuse you and you have found both familiar and maybe even new solutions for your DevOps work. And if you're already using the newest solutions from 2024 startups or have a particular favorite tool that we haven't mentioned here, please share your experiences in the comments.
Learn how it works, explore its key benefits and drawbacks. This comprehensive guide also highlights the best use cases and how Peerobyte Cloud can streamline your VDI deployment.
Let's start the history of virtualization from the distant times when RAM virtualization was first implemented, and that was 1959.
Subscribe to our newsletter to get articles and news
Cookie consent
This site uses cookies to ensure it works properly and to track how you use it. By clicking 'Accept', you agree to these technologies. For more details, please see our Privacy Policy and Cookies Policy
Functional
Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.