With all the advantages of this approach, the following disadvantages can be distinguished:
- Incompleteness of the cycle – important stages of software life, such as development and analysis of requirements, as well as architecture design, remain outside the devops processes. It is also possible to overlook manual testing, which can be critical in some cases. For example, if the developers did not analyze the requirements qualitatively enough and tested the product, considering it from the point of view of the “ideal” code, and not from the point of view of users, the result may be inconvenient to use.
- Lack of professionalism of the participants who understand everything (development, testing, deployment, support), but superficially.
- High workload on management – if developers and operators do not have common goals, managers are to blame for not organizing effective interaction between teams of diverse specialists. To solve this problem, a new system for evaluating managers based on feedback from subordinates is needed.
In what cases these shortcomings become especially critical and why DevOps is not suitable for everyone and not always, read our separate article.
Devops’ success depends on people, processes and technology
Implementation Techniques and Tools: How DevOps Works
Methodologically devops supports the principles of Agile and Continuous delivery – continuous software delivery. Agile methods such as Scrum, Kanban and their variants can be used to organize processes.
In terms of tools for automating development, testing and deployment processes, the following technologies and popular means of their implementation are used:
- Distributed version control (Git, Mercurial, Subversion, CVS);
- Containerization (Docker, Rocket, Kubernetes);
- Continuous Integration – building and testing the final product (Jenkins, TeamCity, Bamboo);
- Infrastructure management as code (Puppet, Chef, Ansible);
- Virtualization (Vagrant);
- Cloud Resource Balancing (VMware DRS).
The DevOps engineer is responsible for the implementation of devops processes, who synchronizes all stages of creating a software product, from writing code to testing and releasing an application. Such a specialist interacts with the development and administration departments, and also automates the execution of their tasks by implementing the above software tools. We talked more about the area of responsibility of a DevOps engineer here and here.
Since a DevOps engineer combines many professions (administrator, developer, tester and manager), he must have experience in administering various operating systems and cloud platforms. It also requires knowledge of network technologies and the ability to write scripts and code in several programming languages . How these competencies are shared with other members of the Agile team, we examined here.
Who is using DevOps and where and how much it costs
DevOps can be useful to almost any organization involved in developing applications or managing large numbers of servers. Large IT giants are hiring with might and main (Amazon, Adobe, Google, Facebook, etc.) and tech enterprises in other fields (Netflix, Walmart, Etsy, etc.) are hiring DevOps engineers with might and main. Devops is also actively used in the banking, telecommunications and IT industries.
Small businesses and startups whose goal is to quickly launch a minimum viable product on the market in order to test a new idea, while doing without devops engineers. This is due, in addition to organizational and methodological factors, also to the financial side of the issue: DevOps engineers earn the most in the industry.