DevOps – Convergence for Software Development
DevOps seems all the rage these days, but what exactly is it? Based on the name, Dev-Ops is Development combined with Operations. Fundamentally this is a great idea. The driving force is to incorporate feedback from operations, those that will be running, administering and possibly using the application with development, those creating the application. By combining the two the final solution becomes better.
The enabling technology of this combination is Agile. Not necessarily required but certainly a key enabler. I’m certain all of you Scrum masters out there know far more about this subject than I, but our purpose today is a high level overview. Agile is a methodology for development. Not just SW development, although that’s where it’s most common, but pretty much any kind of development cycle. In a traditional “waterfall” model a project is defined, the goals set and the functionality mapped out. There is a period of coding or creation and then there might be a beta or trial and finally in one big waterfall the product is released.
The Agile process is different. The idea is to break a project into as many smaller parts as are practical. A fundamental building block size is set and then a series of “sprints” are undertaken. With Agile the goal is to get a functional product out as quickly as possible, even if it’s not complete. The build process becomes more iterative with continuous improvement on the base model. This allows feedback throughout the process. Instead of a fully developed, fully featured product being born a fledgling is born and it evolves through a series of sprints. Perhaps oversimplified but you should get the basic idea.
One key difference of this approach is that it not only incorporates but it encourages feedback during the entire development process. That’s one of the reasons the gile process is so helpful in a devops environment. Development and Operations become two elements with the same goal, to improve development and streamline operations.
Agile processes have far greater and broader capabilities but DevOps is an excellent example. It has some notable advantages and perhaps a few disadvantages. Based on its adoption rate the good must outweigh the bad by a reasonable margin. The iterative process must certainly lead to a better product. Better end user feedback leads to a superior user experience and the early use of the application/product lead to fewer bugs when the product is ultimately completed. The disadvantage would be the “in between” period of development. It can be difficult to provide a sufficiently feature rich version, early in the cycle… enough to encourage the usage required to facilitate the iterative improvement and problem resolution.
Still, overall the benefits of Agile and DevOps are significant, allowing for far more efficient and adaptive technology development. DevOps is a convergence of previously separate concepts and convergence is the one of the key driving forces in IT today.