DevOps is a working ideology that enables the creation of a unified system within a team. This approach allows for faster product releases, improved software quality, and swift identification and resolution of issues. DevOps engineer Dmitry Kubyshkin explains the essence of this methodology, how it can enhance business operations, and the qualities that distinguish a good specialist.
Dmitry, please tell us briefly, who is a DevOps engineer and what do they do?
First and foremost, it's worth mentioning that DevOps is a methodology that involves collaboration between developers, testers, and other IT specialists within a team. This approach allows for more efficient and coordinated work, as well as timely incident resolution. A DevOps engineer is the person who implements this methodology.
One of the main areas of their work is the responsibility for the project's infrastructure, which serves as the foundation for all team members' interactions. This infrastructure includes servers, networks, load balancers, databases, and more. The DevOps engineer focuses on automating development processes, encapsulating infrastructure as code, following the principle of "infrastructure as code," ensuring resilience, and evolving this foundation. This allows developers to have confidence that the products they create will work seamlessly. Additionally, the DevOps engineer establishes the process of delivering developers' code to the production environment, both in testing and industrial settings.
A DevOps engineer is a versatile specialist who possesses competencies in testing, development, and operations. Sometimes, they may focus on a specific area within a company, while in other cases, they handle various tasks across the board.
Do all companies use the DevOps approach? What specific benefits can it provide?
In general, the DevOps approach emerged in 2007-2008 and, after a few years, started gaining traction in enterprise solutions, including large and established companies. The peak of DevOps development was reached in 2015, and since then, such specialists have been in demand not only in startups but also in large organizations.
The modern world is such that, in my opinion, every company attempts to implement DevOps to some extent. I assume that there are businesses, typically smaller ones, where employees can quickly come to agreements without much bureaucracy, and therefore, they may not consciously adopt DevOps. However, in many cases, a developer responsible for the product's development may also handle infrastructure and related tasks.
DevOps can bring several benefits to businesses. It helps reduce costs and optimize development processes, increasing deployment speed. This approach also allows for rolling back changes in case of unexpected situations. DevOps can help businesses streamline and optimize their development processes, increase the speed of deployment, and provide the ability to revert changes in case of emergencies.
And how did you enter this profession in your career?
I joined my first company, the National Payment Card System (NSPK), while I was still studying at university. I wanted to start gaining practical experience as soon as possible. I had a dream to work specifically in this company because it was the first project related to the domestic payment system, and I wanted to contribute to its development.
I joined the company during the formation of the payment card system when we were involved in redirecting Visa and Mastercard traffic to Russian processing. Our task was to support and prepare the systems for the traffic switch from international payment systems to the Russian NSPK. The goal was to ensure that all payment processing operations within Russia would occur solely within Russia. This was done to ensure that in the event of Visa and Mastercard being disconnected, the issued cards would continue to function.
During my work, I delved into DevOps practices and constantly self-studied something new, even during my free time. I almost immediately chose this direction for myself because it allowed me to develop skills in various areas such as operations, development, and testing.
I managed the on-call service, network specialists, operating systems experts, security professionals, and database administrators. I dealt with incident resolution during emergencies directly.
I have always believed that when you truly enjoy what you do, when your eyes light up, and you constantly absorb new information, difficulties fade into the background. I think the most important skill a DevOps engineer should possess is the ability to find information, including reading documentation, understanding business requirements, and having a broad IT knowledge base. Therefore, entering this field is worthwhile only if you have a genuine interest in it, as it requires keeping a large amount of information in mind. Additionally, this work involves a lot of communication with various people responsible for projects and products. As a highly skilled professional, you need to be able to convey your thoughts, listen to others, and collaborate on tasks.
The National Payment Card System (NSPK) is not your only experience in the financial sector. You have also worked as a DevOps engineer in two major banks - Raiffeisenbank and Alfa-Bank
Working at Raiffeisenbank was, so to speak, the beginning of conscious DevOps engineering for me. I joined a team responsible for credit card operations. We were in charge of ensuring resilience and the smooth functioning of the processing system, which essentially meant providing uninterrupted service to clients. We had a direct impact on the bank's business. Additionally, I was responsible for internal loyalty programs related to these cards. This involved interacting with vendors, designing the future infrastructure for the loyalty program project, and automating development processes within the team.
At Alfa-Bank, I worked as a DevOps engineer in a team responsible for developing an internal CI/CD solution. I implemented a project where all teams were required to transition to specific automation solutions for delivering their intellectual work and development. I also took on the role of an analyst, developing documentation for our project and others, and presenting it to the architectural committee and security department, ensuring the implementation of our work. I was also responsible for implementing a unified code quality analysis solution using Sonarqube.
The financial sector does imply a high level of responsibility, doesn't it?
In the financial sector, the cost of errors is indeed high, but it is customary to practice and test all actions in test environments. Security is one of the key aspects closely monitored in the fintech industry. In order for you to be granted access to any systems, you need to justify why you need them. And while in a regular company, this question may be resolved within a few moments, in a bank, it can take up to a week. This can slow down the task execution process. To avoid wasting time, you have to take on another task and work on it simultaneously. On one hand, these nuances teach you to work in a multitasking mode, but on the other hand, due to constant attention switching, it becomes more challenging to pay attention to details. However, this problem is solvable if effective communication within the team is established.
If we are talking about financial organizations, are there any special approaches to DevOps?
I believe that a DevOps engineer can help any business improve automation, accelerate development, increase reliability, and ensure system resilience. This is needed by any company, regardless of whether it is in the fintech industry or not.
By the way, I also developed DevOps practices at Sbermegamarket, which is a marketplace. I joined during the migration of the company's services from one cloud to another. I was responsible for transferring both infrastructure services and developer services to the cloud, which was done to optimize costs. Additionally, our team focused on automating the infrastructure so that we could deploy our infrastructure when needed without manual intervention.
Another responsibility in my role was preparing Sbermegamarket's production systems for high-demand periods, such as "Black Friday" or pre-holiday days. On these days, there is a surge in system load, and it was necessary to ensure that the system could scale up and continue to operate smoothly with a large number of customers.
A DevOps engineer is indeed a multitasker who understands the development process inside out. How do you manage to keep so much information in your head?
I wouldn't say it's difficult, but I wouldn't say it's easy either. It takes time to immerse yourself in a particular task or project, to understand the nuances of the work. Once you have a full context of the task, you can proceed with its execution and convert your actions into a tangible result that meets the business requirements.
If we look at a DevOps engineer as an individual entity, this specialization implies continuous learning and development. It's an extensive field, and it's impossible to learn everything at once. Therefore, you first acquire knowledge in the specific areas relevant to your company and focus on its needs. However, there may come a time when you encounter different technologies in a different organization that you haven't worked with before, and then you have to delve into them anew. In short, this profession requires a commitment to constant learning and growth.