Sunday, August 2, 2015

Agile vs. DevOps

Both Agile and DevOps are for harnessing integration, interaction, and innovation.

Agile is a big umbrella term refers to the mindset, philosophy and the set of principles to run business or manage projects, also covering the comprehensive methodologies like XP, and lightweight management frameworks like Scrum. DevOps is a deployment pipeline that stresses communication, collaboration and integration between software developers and information Technology (IT) professionals.

Both Agile and DevOps are for harnessing integration, interaction, and innovation. DevOps is the natural result of organizations taking agility past their development processes to encompass the entire software life cycle, including deployment and maintenance. So in the same way Agile teams break the silos between Quality Engineers and software developer, instead of the development organization throwing finished software over the fence to the operation organization, everyone retains a stake in the overall cycle. Developers work on the deployment and monitoring tools, hardware engineers are part of the original design team, etc.

Both Agile and DevOps are customer-centric: Agile advocates bringing the voice of the customer right into the team in order to tear down that wall in the value stream and open up a dialog with the customer, to allow greater transfer of ideas, both ways. In the same way, DevOps breaks the invisible wall between development and operations, to open up a dialog and optimize the whole process in ways that perhaps were not possible before. To sum up, agile involves the customer in the development process to lower the risk. Develops involves the operation and test to streamline the test and deployment of the software, thus further involving the customer and potentially lowering the risk even more.

DevOps and agile are complementary to each other. DevOps can eliminate the waste incurred by "Definition of Done." The software is never really "done." Even after it goes live, it needs to run smoothly and to ensure that, there is a continuous stream of work. DevOps brings the culture of end-to-end software engineering processes under one umbrella and tried to address existing silos and challenges: a) with iterative development and frequent production releases of product increments, the bottlenecks to push that releases in production by operations team at same pace and frequency still existed thereby limiting the full potential of being Agile b) often there were risk and uncertainty associated with production releases due to differential environments c) the contribution from operations team and their expertise to product development and environment provisioning were underutilized until the late till production release thereby facing multiple challenges. There are other such numerous reasons which have been addressed through DevOps culture through improved communication and collaboration with operations team during the entire software engineering processes. Now the term 'DevTestOps' is picking up, which advocates and put the emphasis on more and more automation testing and involvement of Development, Testing and Operations team all working together from day one of the project.

Many organizations actually struggle with a waterfall of "Strategy - Agile - Operations," while others have simply made Operations a "stakeholder" of Scrum teams who need to get in line with feature development, sprint timeboxes, and Product Planning. Essentially DevOps is a solution set for getting software into production. Agile (the mindset) on the other hand embodies the strategy to be flexible, fast and adaptable to changes. Scrum (methodology commonly confused with "Agile") is a lightweight framework for how to do software development agile.


Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More