A road to DevOps

DevOps is more than just a bunch of tools used to gain better efficiency. It is a cultural movement affecting every aspect of product creation. It embraces change in organizations and encourages them to experiment and innovate.
There are three main things that have to be aligned for DevOps to be really implemented in an organization — people, processes, and technology. These are the three main pillars DevOps is built on.
People
Every product is all about people creating it. In DevOps, there is a strong need for them to cooperate more than ever. There cannot be a development team at odds with the operations team, which is at odds with the networking team. All of them need to cooperate and share knowledge of the product as completed work is passed from team to team on the way to a client. The entire movement began after John Allspaw and Paul Hammond delivered their famous speech, “10 Deploys Per Day, Dev and Ops Cooperation at Flickr,” in 2009. They described how their teams worked closely together in order to create a product quickly, functionally, and successfully.
Every team member has to understand why their organization is adopting DevOps and what it will mean for them. For Development, it means more work since more of the infrastructure is now virtualized and they can set up their environments programmatically. This does not imply that Operations are losing their jobs. Some people like to call DevOps a “No-Ops,” but that is not correct. Operations department just has to work with Development more closely than ever.
The Quality Assurance (QA) department also has to work closely with Development since there are automated tests run after a code is pushed from a developer into the Version Control System (VCS). These tests can be written by either part, it depends on the test itself.

Processes
Old processes within an organization must be modified or replaced by new ones to work in a DevOps style. Processes can’t stand in the way of people trying to make things move faster.
The waterfall model is an excellent example of a process that is being replaced. In the past, at the kickoff meeting with a client, the product was defined, and months of development passed before the client had his finished “release v1.0” that met the specifications from a long time ago. Nowadays, the market is moving too fast to let this happen.
To shorten these extremely long release cycles, Agile methodology started to be used. It cuts release cycles to mere weeks and client should see results at the end of every sprint. These shortened cycles also help planning. Additionally, the product can be shaped along the way and is more cost-effective compared to replacing the entire product.
Lean methodology working hand-in-hand with Agile methodology also helps to speed up software development since it tells developers to add features as late as possible and to skip everything unnecessary in order to prevent wasting of resources.
Some say that DevOps replaces Agile, but that is not exactly true. DevOps builds on top of some Agile ideas but pushes them to the extreme. There are no releases every two weeks but tens of releases every single day, hundreds, thousands,…
We can still place Agile before the DevOps process as the interface between Business and Development.

DevOps & Agile
Technology
DevOps depends heavily on technology used as it tries to automate everything as much as possible. Each step of the automation process has plenty of tools available, and they have to fulfil their respective job, but ultimately, they have to work together as one pipeline. These technologies include build automation tools, automatic testing suites, virtualization and containerization technologies, deployment tools, monitoring tools, and much more.
