What is DevOps
DevOps is a software development methodology whose task is to establish the interaction of programmers and system administrators in a company. If IT professionals from different departments do not understand the essence of each other’s tasks, the release of new applications and updates for them is delayed.
DevOps forms a “seamless” development cycle, thereby helping to accelerate the release of the software product. Acceleration is achieved through the introduction of automation systems. Plus, programmers begin to participate in setting up servers and finding bugs, for example, they can write automated tests.
Thus, interaction between departments is being established. Employees begin to better understand what stages a software product goes through before falling into the user’s hands.
When the developer understands what the administrator is faced with when setting up the server, he will try to smooth out possible “sharp corners” in the code. This reduces the number of bugs when deploying the application – according to statistics, it decreases by about five times.
Who needs and does not need a methodology
Many IT experts believe that DevOps will benefit any organization that develops software. This is true even if the company is a simple consumer of IT services and does not develop its own applications. In this case, the implementation of the DevOps culture will help focus on innovation.
Startups are an exception, but here everything depends on the size of the project. If your goal is to launch a minimum viable product (MVP) to test a new idea, then you can do without DevOps. For example, the founder of Groupon at the beginning of work on the service himself manually posted all the offers on the site and collected orders. He did not use any automation tools.
Implementing a methodology and automation tools makes sense only when the application begins to gain popularity. This will help establish business processes and speed up the release of updates.
How to implement DevOps
Further, a few recommendations for the transition to a new methodology.
Identify problems in business processes. Before implementing the methodology, highlight the goals and problems of the organization. The strategy for switching to DevOps will depend on them. To do this, make a list of questions, for example:
- What does it take the most time to update software?
- Is it possible to automate this process?
- Does the structure of the organization affect it?
Details on identifying problems in the organization can be found in the books “ Project Phoenix” and “ DevOps Guide ” from the authors of the methodology.
Change the culture in the company. It is important to convince all employees to change their usual ways of working and expand their range of competencies. For example, on Facebook, all programmers are responsible for the entire life cycle of the application: from code writing to implementation. Also, Facebook does not have a separate testing department – the tests are written by the developers themselves.
Start small. Choose the process that takes the most time and effort when releasing updates, and automate it. This could be a testing or application deployment process. Experts advise the first thing to implement distributed version control tools. With them, it is easier to manage the source. Among these solutions, the most famous are Git, Mercurial, Subversion (SVN) and CVS.
It is also worth paying attention to the continuous integration systems responsible for the assembly and testing of the final product. Examples of such tools are Jenkins, TeamCity, and Bamboo.
Measure improvements. Develop metrics of the effectiveness of embedded solutions and create a checklist. Metrics can be the frequency of releases, time spent working on software functions, and the number of bugs in the code. Discuss the results not only with managers but also with the rest of the team involved in the project. Ask what tools are missing. Keep these requests in mind when further optimizing your processes.
Criticism of DevOps
Although the methodology helps organizations make decisions about application development faster, reduces the number of software bugs and encourages employees to learn new things, it also has critics.
It is believed that programmers should not understand the details of the work of system administrators. Allegedly, DevOps leads to the fact that instead of specialists in development or administration, people appear in the company who understand everything, but superficially.
It is also believed that DevOps does not work with poor management. If the teams of developers and administrators do not have common goals, this is the fault of managers who do not organize the interaction between the teams. To solve this problem, we need not a new methodology, but a system for evaluating managers based on feedback from subordinates.