Who Is a DevOps Engineer
DevOps methodology is a set of practices that aim to reduce software development time and speed up the release of updates and patches to it. For this approach, it is not enough to involve classic admins and developers. Here we need separate specialists who can both configure the hardware and adapt applications for it.
DevOps Engineer implements DevOps methodology. They synchronize all stages of creating a software product: from writing code to testing and releasing an application. Such a specialist controls the development and administration departments and automates the execution of their tasks by implementing various software tools.
So what can make the life of a DevOps engineer easier? Here are some essential tools: from ossified Jenkins and Splunk to modern Loki and Lens.
Git
A source code management system that is used by perhaps the entire industry. This is the standard for tracking source code. Git is the only one that supports all modern development patterns and is a must for a DevOps engineer to learn.
GitLab
If you are working with a young team, then I would recommend looking into GitLab. The system supports a full development cycle, including source code management for Git, continuous integration, continuous delivery, and issue tracking.
Using only GitLab, you can fully develop “merge,” “deploy,” and so on. However, the system imposes a certain workflow that does not always suit the project. It is possible to work around this, but rarely is the result good.
Jenkins
An old-timer in the field of automation systems today is more often used in companies that have already “got on their feet”. Jenkins was developed as a continuous integration tool but has evolved to a system capable of launching rockets into space thanks to plugins.
However, due to the abundance of required plugins, the system becomes heavy. Constant updates and the risk of everything collapsing, as well as not user-friendly UI, can turn work into hell. Today, few new teams choose Jenkins, but the system is common in projects about five years ago.
Jira
Atlassian Solutions have already become a definite industry standard. When working with large customers, you will most likely use Jira. Thanks to this tool, you can add tickets, track the time for completing tasks, check out the state of sprints, create release notes, and solve other tasks. Despite a number of analogs, the advantage of Jira is integration with other Atlassian systems, such as Confluence.
Confluence
Dynamic content management system. In a way, it is a “wiki” with a visual page editor. Here you can keep project documentation, track system requirements, notes, states, create pages describing builds.
Docker
A containerization system and one of the main technologies for a DevOps engineer. Software for automation of deployment and isolation of applications. We use it to build and run containers in DEV environments.
Kubernetes
A platform for automating the management of application containers. Kubernetes has become the standard, beating a few competitors like Rancher. The system provides mechanisms for solving all standard IT tasks for application management. Managed declaratively – the operator transfers the desired state of the environment to the Kubernetes controller, and it performs all the necessary actions to achieve it.
Lens
A graphical interface for managing and monitoring Kubernetes clusters. Also known as the GUI for Kubernetes, where you can see all of its clusters, including user resources. Though not a must-have tool for a DevOps engineer, I recommend using it. There are many different cool features here, for example, access to private clusters through your own proxy.
Prometheus
Database for collecting metrics in real time. Uses the HTTP request model and “walks” to the application URL to collect data.
Grafana
Dashboard solution for visualizing the received data. Grafana is used in conjunction with Prometheus. The system demonstrates graphs, tables and is applied in modern large solution stacks.
Loki
A young system for collecting logs from applications, inspired by Prometheus. Before the creation of Loki, logs were always stored as text in files or indexed in a system like Elasticsearch. This resulted in a lot of disk space and load on search and aggregation. Loki indexes the metadata, allowing you to store logs in fairly slow and cheap storage like Object Storage (AWS S3, etc.) since all the text is not used for search and aggregation. They take up less space and are searched faster using standardized labels.
Splunk
Large, cumbersome system for monitoring all data. Old, powerful, but ineffective. Big companies don’t want to change Splunk with Prometheus and Grafana. Partly due to paid support. Therefore, a DevOps engineer in a large organization will have to learn how to work with Splunk.
Terraform
Infrastructure management system using API, cloud providers, and private clouds. Terraform was the first to allow DevOps engineers to work with multiple cloud providers. You don’t need to go to the console to describe and use the environment in your code. The system itself creates the necessary networks, clusters, and so on.