Hello!
We have finished the
book “DevOps Philosophy”, and also plan to make a new book on this topic.
A lot of copies are broken about what DevOps is and what is not, as well as about the ratio of DevOps and continuous integration. Therefore, we ask you to speak out as objectively as possible. Do you share the point of view of today's author Adam Mackay regarding the essence of DevOps - or, in your opinion, is the picture offered by him in something incomplete or biased?
')
We read and comment!
I have been working in the technological sphere all my life, and right before my eyes, several software development methodologies have matured and formed. Most of the ideas underlying them come down to the usual optimization of productivity in the spirit of common sense and are borrowed from different sectors of the economy. A few years ago, everyone wanted to move from a waterfall development model to Agile, agile development. Recently, I went to work in a progressive company, where they are trying to implement DevOps. This company, Verifa, has long adhered to Agile and is trying to extend the merits of this model not only to software development, but also to the business as a whole.
DevOps is a new buzzword in the software industry. This concept combines many sensible ideas about business integration and development, as well as a narrative that allows to talk about the development, delivery and operation of software in a single context.

DevOps is an approach in which development engineers and administrative engineers participate together in the entire life cycle of a software product, from design and development to thorough product support. Thus, DevOps is designed to eliminate the traditional disunity, where one team writes code, another tests it, the third deploys it, and the fourth is responsible for operation.
With DevOps, sysadmin employees begin to use many of the tricks entrenched in the developer’s arsenal with the support of the systems entrusted to them. In DevOps, system engineering is built exactly as a task flow during development. All resources are entered into the source accounting system and are covered by appropriate tests.
We have a few key DevOps themes in our company: values, principles, methods, practices and tools.
ValuesAny engineer is focused on finding a solution, and such an aspiration sometimes results in rejection of new technologies, unwillingness to experiment with new things, which is expressed in different ways: from the syndrome of “rejection of someone else's development” to counterproductive attempts to protect their niche. To truly move to DevOps, these biases must first be recognized and then overcome. No technology, no Docker, Kubernetes, or Amazon Web Services will solve your problems if you don’t understand what the value proposition is.

“Let's join hands, friends!”
Rawpixel user
snapshot from
UnsplashPrinciplesThe principles of our company are based on the Three Way Model. It was developed by Gene Kim, the author of “Visible Ops” and “The Phoenix Project” and Mike Orzen, the author of “Lean IT.” We recommend building an environment in which systemic thinking is stimulated, feedback cycles are enhanced, and a culture of continuous experimentation and learning is imparted.
Constantly think about the whole system. Ask yourself: “How to set up even more feedback cycles?” Monitoring, metrics and logging are three such cycles that help administrators participate in the design. In a healthy DevOps environment, processes are stimulated to create short and effective feedback cycles, examples of such processes include incident management, objective post-mortem analysis, transparency ...

“Handshake in front of MacBook Pro”, a snapshot of a
rawpixel user from
Unsplash website
MethodsFlexible managementFlexible = easy. Subdivide your project into small areas of work, lead the assembly, limiting the work in progress (progress limit), introduce feedback loops and achieve visualization. This is my favorite element of any project; flexible management techniques provide a more efficient way out, including improving throughput and system stability; employees feel less stressed at work, get more job satisfaction.
First people, then processes, then tools.One of the first methodologies proposed by the DevOps pioneers is formulated as “first people, then processes, then tools”. In our company, it is recommended first of all to agree on who is responsible for a specific work task. Then we determine which processes are needed to solve this problem. After that, the tools needed to implement the process are selected. On paper, all this seems logical, however, engineers and managers often succumb to catchy “hurry to buy!” From suppliers and in this case they try to do exactly the opposite: buy a tool, and then build the entire task flow under it.
Continuous deliveryThis term is so widely spoken that it is sometimes even mistakenly equated with DevOps. In principle, this is the practice of dynamic programming and software testing, providing quick releases of very small full-fledged fragments. In general, continuous delivery can improve overall quality and speed. Continuous delivery is a key component of the project that needs to be adjusted as early as possible, the driving force behind the successful implementation of DevOps.
Change management
In my experience, there is a direct correlation between how well the system is being operated and how change management is organized. This does not mean that you need to implement traditional control, which slows down development and hurts rather than helps. In this case, a scalable and reliable platform is needed for continuous delivery. Focus on fixing fragile artifacts, reproducing the build process, managing dependencies, and creating an environment conducive to continuous improvements.
Infrastructure in code (Configuration in code ... Everything in code)One of the revelations that the current company has enriched me with is that any systems can and should be interpreted as code. System specifications are entered into version control systems and reviewed by colleagues. Using modern deployment mechanisms, in particular, Docker and Kubernetes, you can automatically assemble, test and create real systems based on the specification and programmatically manage them. This approach allows you to compile and run the system, and not to fence the laborious long-term crutches, which over time it becomes very difficult to develop.
PracticesIn all previous IT organizations where I used to work, the approach to projects was: “let's write something ... and then we will entrust it to someone to test and deploy”. This method is not consistent with the plans. The deadlines are shifted, and when the development team moves on to the next project, the operating costs become too heavy.

“A roller coaster under a blue sky and white clouds”, a snapshot of
Priscilla Du Preez from
UnsplashIn the current organization, we strive to ensure that the developers continue to keep abreast of the service they have created and are partially responsible for its operation. The result is more effective feedback cycles that help the team respond much more quickly not only to bugs, but also to new features and ensure that the product is developing in the right direction.
InstrumentsWe love our tools! They help the engineer program, build, test, package, release, configure, and track both systems and applications. We master our tools and we know the whole range of solutions we are interested in - both open-end and commercial. Before the DevOps paradigm began to evolve, innovation and tools remained in stagnation. I have long used the same toolkit as at the very beginning of my career (I have been programming since 2000). Many tools used in DevOps are amazingly multifunctional and help to completely organize the life cycle of the service in a completely new way.

“All kinds of joinery tools in the workshop” from the
Barn Images collection from the
Unsplash website
You must decide on a reliable toolkit for DevOps. There is no single tool for all occasions, you need a whole line, the inventory from which you can combine to suit your needs. And since we want all this to work together ... any tool is only as useful as it helps our entire system.
You need to choose such tools that are well combined with the rest of the inventory. Tools should help automate any work. They should be easy to call from the API or from the command line. In principle, tools that rely heavily on the UI do not even fit well into well-integrated tools.
What's next…Download the docker image and start experimenting. Fork another code and start to build it. Spin up a server or server cluster with Kubernetes. So you do DevOps. Start on your own computer, and then go to the cloud.
“A boy standing on the stairs and reaching for the clouds”, snapshot of Samuel Zeller from Unsplash websiteWhen you first hear about the paradigm of “infrastructure in code” or “continuous delivery”, it immediately pulls you to say “no, we work differently”. However, to succeed with DevOps, you need to gradually master these techniques, they are not so difficult. For many years, methods directly opposite DevOps have been used in our industry, but DevOps does work.