DevOps: This is What Start-ups Practice (Cloud Computing)
The DevOps movement is currently getting stronger and stronger. I think this is good!

Let me quickly summarize what DevOps means for those of you who have never heard of it: DevOps is about developers not only building software but they are also responsible of running it in production. This is new in a sense that (small and big) cooperates usually divide between developers responsible for building a software and operation engineers who are in charge to run the software. These two groups have typically different priorities which are often conflictive. The operation engineers do not want to make (big) changes to software that runs without any problem while software developers have a high interest in adding new features and using new technologies to fulfill their tasks. If software breaks finger pointing typically starts because software developers say operation engineers do not support their new features and technologies. In contrast, operation engineers state developers add feature after feature and new technology without thinking about how to run these in production. They also blame software developers for not providing tools that support typically operation tasks such as monitoring or logging. To overcome this situation the DevOps movement state “you built it, you run it” meaning software developers are responsible for running their code.

Another facet of the DevOps movement is that tasks that have to be repeatedly executed are automated. This means technologies like file versioning, scripting, testing and monitoring are deployed and heavily used. This leads to easier and faster common task execution and this is typically an enabler for deploying software more often (e.g. a few times a day).

I really like the idea because from my point of view a developer is not only responsible for adding a feature but he is also responsible to think about the impact of his changes when the software runs in production. If the software developer is the guy who is responsible to run the software he makes sure his changes do not make his live troublesome. The developer makes also sure new features can be easily tested and monitored to detect if something goes wrong before the production system comes to a halt. And if something goes wrong the software developer will be in a position to update the production system quickly by using automated software deployment.

At all small companies and start-ups I was responsible for software development we lived the DevOps ideas even without knowing this movement existed. At the beginning if the team is small it is natural that no dedicated operation engineer is available. This means the task of running software is the task of the guy who developed it. If the team grows and software gets more complex the responsibility of running the software sticks with the team that developed it. So the software developer team is responsible that (1) the software which is ready for production is intensively tested and monitored and (2) the software deployment process is easy and automated. If still something goes wrong (and this will be case on a regular basis) the software development team is responsible to identify the root case of the problem and fix it. As soon as the fix is tested the new software version is deployed to production.

If I compare the ease of running software in start-ups with big cooperates I understand why big cooperates bush the DevOps movement so hard. :-)

This text represents my personal opinion and has nothing to do with any company I associated with.
Posted by Thomas King at 10:55 2013-09-04 | Trackbacks (0) | Comments (0)