In Buddhism, Samsara means the endless cycle of death and rebirth. Life is seen as a circle where death is only a gate to rebirth and beginning a new cycle. The Buddhist say that Samsara is suffering. We cycle through this endless path of suffering over and over again. Same cycles repeat until we can’t tell them apart. Feeling like you have already lived this moment. Sound familiar?
The software development life cycle always seems to play by the same rules. There are the same phases from gathering requirements, planning, designing, building, testing, deploying. These phases are repeated with every new version. It feels like an endless path.
There is a way out of Samsara. Enlightenment, Nirvana. In Nirvana, there is no suffering. Nirvana is outside of the perpetuating cycle of life. It is not concerned with matters of life. It is a balance. It is completely and utterly satisfying. And that is something that every development team desires. And there is a way, DevOps.
DevOps tries to unify the process between software development (Dev) and the operations (Ops). When the developer commits new code to the main branch of the source version control, begins the life cycle of the new version. The CI server notices that there is a new version of the software, fetches it from the source version control, downloads all the new versions of the required libraries and builds the software. Automated integration and acceptance tests are run in an isolated container environment. Orchestration software starts the deployment and scales the program to different servers around the globe. Monitoring tools analyze the running containers and alert of any unusual behavior. After the successful deployment, the CI server sends a congratulatory message to the developer’s chat program of choice. And all this happened while the developer was still fetching a new cup of coffee.
This above description is, of course, just a dream, Nirvana. At least for most of us. Most of us are still running aimlessly around Samsara. There are siloed departments, inability to communicate and compromise. They prevent the changing of the process. Sometimes it’s a good idea to have a human to oversee the process. But we know from statistics, that manual configurations are the most likely cause of a failed deployment.
My colleague told me that DevOps can be summed up in two words: automation and trust. Automation is needed in every step of the software development life cycle: designing, building, testing, deployment, and monitoring. Trust is needed to glue these together.
Automation can be increased by baby steps. Choose one functionality from your monolithic application and rebuild it as a microservice. Build a new and modern software development pipeline and continuous integration and deployment environment for this microservice. Piece by piece, replace the old functionality with new microservices until all the parts are renewed.
The other thing is trust. Different parts of the organization must have trust in each other. No part of the organization can just throw their part over the fence without looking over first. DevOps demands sharing work and responsibility. DevOps can be seen as a tug of war between Agile and ITIL mindsets. Agile emphasizes moving fast and breaking things, while ITIL emphasizes continuity and reliability. Operations thinks change is bad because it is a threat to continuity and that is why it should be minimized. Development thinks change is good because it is development and that is why it should be maximized. These forces must be balanced. If the balance is found, there is a road out of Samsara.
About Tuukka Virtanen
Test automation consultant with technical experience in test automation and quality assurance. TMap Next certified Test Engineer with knowledge in test planning and execution and test design techniques. Master of Science in Information Management. Indie game development as a side project. Creative and visual thinker. The latest assignment included web and mobile game test automation with Appium and Robot Framework in an Agile customer project and regression test automation for websites.
More on Tuukka Virtanen.