What is DevOps
During the work on a product you need a specialist responsible for an information technology as well as for configuration of servers and other infrastructures. Some time ago this person was called “system administrator”. Those guys used to work in a special room in the office, somewhere near the server room and they did not care much about anything outside of their server room or the office network. One of the reasons of this was that there was not much communication between system administrators and developers, sysadmins and QA department. With the arrival of the Agile era came an understanding that just preparing infrastructure is not enough, and the tensions between system administrators and developers impact product much.
Thus, a deeper integration between departments became inevitable. The involvement of system administrators in IT Operations, Software Engineering and Testing processes started to be called DevOps which stands for “software DEVelopment” and “information technology OPerationS”. The old-fashioned system administrators tend to shave off their beards and evolve to DevOps specialists.
Why Product Requires Implementing DevOps
Fast-growing product requires stable working version after every sprint. Customers, Developers and QA staff deal with different sets of infrastructure according to the commonly used DTAP methodology in software development. This sets of infrastructure are commonly called environments. Having equivalent system configurations in all environments requires a significant effort of the system administrator.
Nobody likes to repeat the same action many times in a row or configure several identical servers manually to achieve high availability. The product manager does not like to waste resources on the same information technology operations either. Using various infrastructure automation software such as Chef, Ansible or Puppet simplifies control and decreases the possibility of mistakes in addition to saving time and human resources.
The possession of the ability to apply the automation techniques to the IT processes alone doesn’t make a DevOps specialist out of a system administrator, though it makes their work more efficient. It is the involvement in the development and QA processes that powers their evolution into DevOps specialist. Making use of DevOps facilitates the horizontal interactions within the team, speeds up the development process and results in a seamless delivery of a quality-assured product in a planned time.
Meet the DevOps Specialist
The growing development speed creates many tasks for a person who is responsible for information technology operations. DevOps staff closes the gaps in the process of launching your product. If the developers and DevOps specialists are not on the same page then the production environment may not be ready in the ETA required by Product Manager.
Traits and features of a DevOps specialist:
- Application and infrastructure deployment automation
- Supporting the QA team’s efforts in their various methods of testing including automated tests
- Making use of continuous integration tools for product deployment
- Getting involved in the technical side of product planning to understand the list of dependencies and configurations affected by the changes in the product
- Thinking about improvements of IT and development processes and being ready for reasonable experiments
- Understanding jokes about the beard as a mandatory requirement for system administrators
- Maintaining the systems in a state ready for frequent, fast and issue-free building, testing and deploying of the product
Administrator-level access to any environment, especially production, is a matter of great concern for any DevOps specialist. To avoid the need of providing extra permissions to developers required by the latter to troubleshoot the applications, DevOps specialist provides them with the means of tracking errors in a safe and convenient way. Error tracking systems such as Sentry and log processing software such as the ELK stack aid in reducing the possibility of conflicts connected with providing administrator-level access to the production environment, which serves to improve the security of the infrastructure.
Without deep collaboration between DevOps specialists, developers and QA department it is impossible to run successful deployments or make use of the information about the application crashes to reproduce and fix problems. Running a comprehensive monitoring system is crucial to have the arising issues reported to the respective members of the team according to the escalation plan and allows the Product Manager to notify the customer.
Having the DevOps specialist that fits the team’s needs improves and simplifies the overall product development workflow.
Value of DevOps in the Product
Product Manager knows that each release bears its risks. DevOps reduces them by creating the ground for tight interactions inside the team.
DevOps specialists need to know not only what is inside the product, but also how it works. This helps to set up the right configuration of applications and services as well as to deploy an effective and convenient monitoring system. As a real example, an old-style system administrator unintegrated with the rest of the team will commonly set up a monitoring sensor for the company website that only checks that the front page HTTP return code is “200 OK” and be satisfied with it. On the opposite, the modern DevOps specialist will coordinate the use of integration testing with developers and collaborate with the QA team about the techniques used to perform testing of real website functionality. For instance, automated testing of the registration process or verifying that the login form works fine may save your product from a serious trouble.
Agile increases speed of development by going in iterations. Running the workflow the DevOps way, in addition to improving the product quality, increases the deployment speed to be in sync with development, so it does not slow down product’s delivery. It saves time and positively affects the chances of beating the competitors, since customers always want to get the new hot features as soon as possible.
DevOps increases overall efficiency of the team, decreases the amount of unplanned work and helps to harmonize the tactics of the team: developers create—QA & DevOps team help with building; QAs test—developers & DevOps specialists help with fixing bugs; DevOps staff deploy—developers help by checking the error tracking systems, QAs do testing in production if everything was delivered correctly.
Thanks to Dmytro Pinchukov, Dmytro Fedoruk and Dmytro Lyalyuev for the help in creating of this article. They are true experienced DevOps specialists that the author has the pleasure to have worked with.