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 encourage 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 three main pillars DevOps is built on.
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 development team fighting with operations team that is fighting with 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 whole movement started after John Allspaw and Paul Hammond gave 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, functional and successful.
Every team member has to understand why his organization is adopting DevOps and what it will mean for him. For Development it means more work since more of infrastructure is now virtualized and they can set up their environments programmatically. This does not mean 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.
Quality Assurance (QA) department also has to work closely with Development since there are automated tests ran after a code is pushed from developer into Version Control System (VCS). These tests can be written by either part, it depends on the test itself.
Old processes in an organization have to be modified or replaced by new ones in order to work DevOps style. Processes can’t stand in the way of people trying to make things move faster.
Waterfall model is the great example of things that are being replaced. In the past, at the kick off meeting with client, product was defined, and months of development passed before a client had his finished “release v1.0” that met specification 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. Also, the product can be shaped along the way and cheaper compared to changing of complete 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 pushed them to 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
DevOps depends heavily on technology used as it tries to automatize 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.