Gedanken zu Devops.
DevOps ist ein Kunstwort aus Development und Operations. Die Meinungen, was DevOps alles beinhalten soll gehen weit auseinander. Für die einen beschreibt es die Tatsache, dass ein Operator Job immer mehr auch Programmierkentnisse erfordert um bestehende Prozesse mit Data Center oder Configuration Management Tools wie Puppet, Chef, oder Fabric zu automatisieren.
Dies ist grundsätzlich nichts Neues. Kritische Stimmen führen an, das Administratoren und Operatoren insbesondere im Unix-Umfeld schon immer programmiert haben, um Aufgaben zu automatisieren. Auf den ersten Blick wiederholt sich also die Vergangenheit und Programmierkentnisse werden wieder zu einer Anforderung an Systemadministratoren. Das ist so nicht ganz korrekt. Mit neuen Tools wird diese Automatisation auf ein neues Level gehoben. Sie führen eine neue Abstraktionsebene ein, mit welcher die Details der darunterliegenden Plattform nicht mehr wichtig sind. Sie ergänzen also den Werkzeugkasten der Administratoren, zu welchem z.B. Shell, Perl und Python Skripts schon immer gehört haben.
Nicht allen gefällt diese Entwicklung. DevOps is Ruining My Craft beschriebt ein Interview mit einem Systemadministrator, der seine Kunst durch Devops gefährdet sieht. Dieser kommt aus einer langen Blutlinie von Administratoren und seine Kunst wurde von Generation zu Generation weitergegeben. Früher hat er alle Systeme liebevoll von Hand für ihren Zweck optimiert. Diese Optimierung fällt nun weg und seine Arbeit wird überflüssig. Statt einer Vielzahl von schönen, optimierten Systemen gibt es nun eine Armee von Klonkriegern, die alle gleich funktionieren. Der Blog Post ist mit Humor zu lesen. Wie ein Kommentar schön beschreibt: Es lassen sich nicht nur einzelne Systeme optimieren, sondern auch eine ganze Flotte. Die Schönheit liegt also in den Augen des Betrachters.
Für die anderen bedeutet Devops, dass ein Entwickler insbesondere in Startups oft mehrere Hüte anhaben muss. Dazu gehören: der Entwickler, der Tester, der Systemadministrator und der DB-Administrator. Anscheinend hat sich dafür der Begriff des Full-Stack-Developer etabliert. Ein interessanter Verfechter dieser Meinung ist Jeff Knupp, welcher in einem Blog Post seine Meinung zum Devops Trend und dem Full-Stack-Developer veröffentlicht. Die Diskussion dazu auf Hacker News ist durchaus lesenswert. Seine Kernaussage ist, dass die IT-Nahrungskette wie folgt aufgebaut ist:
Jede dieser Rolle kann die Arbeiten der darunterliegenden Rolle übernehmen, wobei das in der anderen Richtung nicht funktioniert. Jeff beendet seinen Blog Post mit dem Appell, den Entwickler doch wieder entwickeln zu lassen.
Der Begriff DevOps ist also nicht abschliessend definiert. Es handelt sich eher um einen Paradigmenwechsel in der Kultur, der die beiden Welten Development und Operations näher zusammenführt.
Die folgenden Beispiele beschreiben was DevOps beinhalten kann:
Das Ziel von Devops ist es, alles zu automatisieren. Dadurch werden repetitive Tasks weniger fehleranfällig, Fehler besser Reproduzier- und eingrenzbar und die Zeit, bis neue Features zur Verfügung stehen, verkürzt sich.