Was man bei einem erfolgreichen DevOps beachten sollte

Prozesse, Tools, Plattform, Teams, Verantwortung.

DevOps bei eggs unimedia

 

Mit DevOps versuchen Unternehmen, die Trennlinie zwischen zwei ehemals stark isoliert arbeitenden Unternehmensbereichen zu überwinden: Entwicklung und Betrieb

 

Die Beweggründe, warum Unternehmen diesen Weg einschlagen, sind unter anderem folgende:

  • Das Hin- und-Her schieben von Verantwortlichkeiten, bspw. bei der Beseitigung von Störungen, fällt weg
  • Die Weiterentwicklung und Verbesserung von Produkten gelingt in kürzerer Zeit, als bei Unternehmen, die auf herkömmliche Prozesse für Softwareentwicklung und Betrieb setzen.
  • Bei DevOps sind die Entwickler zuständig für die Pflege der Infrastruktur und des Systems. Durch die Vereinigung von Wissen aus Entwicklung und Infrastruktur entsteht häufig eine bessere Lösung
  • Notwendige Anpassungen der Infrastruktur sind leichter möglich, da deren Möglichkeiten (oder Einschränkungen) bereits bei der Entwicklung berücksichtigt werden
  • Unternehmen müssen heute in der Lage sein, schneller auf Anpassungen im Markt reagieren zu können. Dies erfordert zum einen eine beschleunigte Entwicklung. Zum anderen muss auch sichergestellt werden, dass die Artefakte auch ausgeliefert werden können.

Der Begriff DevOps steht daher für neue Denkweisen, Praktiken und Tools, mit denen Unternehmen schneller und einfacher Anwendungen und Services bereitstellen können.

 

Wie stellt man im Unternehmen ein erfolgreiches DevOps sicher

Zum einen müssen die Teams und die Teammitglieder technisch befähigt und selbst-organisiert sein. Doch der entscheidende Punkt für ein erfolgreiches DevOps ist die „End-to-End“ Verantwortung eines jeden Einzelnen. Um als Teammitglied Verantwortung in einem DevOps Projekt übernehmen zu können, muss eine Basis geschaffen werden, die inzwischen auch Bestandteil unserer Firmenphilosophie ist:

 

DevOps Foundation

Verantwortung basiert auf Vertrauen. Nur Mitarbeiter, die den Prozessen, ihren Fähigkeiten, Tools, anderen Teammitgliedern und der Architektur, auf der sie entwickeln, vertrauen, können letztlich Verantwortung übernehmen.

 

Teams

Wir glauben an moderne und agile Entwicklungsmodelle, was den Aufbau cross-funktionaler Teams zur Steigerung der Produktivität bedarf.

 

Fähigkeiten

“Never stop learning" und „jeder kann alles“ beschreiben unser Vorgehen zur Weiterbildung und -entwicklung unserer Mitarbeiter am besten. Als Trainingscenter können wir unseren Mitarbeitern sowohl interne als auch externe Weiterbildungsmöglichkeiten anbieten.

 

Architektur

Eine solide und wartbare Architektur ist als technologische Basis unabdingbar. Unsere Erfahrung zeigt, dass sich bspw. ROCA (resource orientated component architecture) hervorragend für die entkoppelte Entwicklung eignet. Zudem folgen wir dem “Security by Design” Paradigma. Dabei werden bereits beim Design der Architektur und Prozesse Sicherheitsstandards und Maßnahmen beachtet – und nicht erst gegen Ende des Projekts.

Code Conventions und Patterns, vom geschriebenen Code, Style Sheets bis zu Commit Nachrichten ins SCM, ermöglichen dem ganzen Team, die Arbeit der Teammitglieder nachzuverfolgen.

 

Prozesse

Innerhalb unserer Teams ist die Qualitätskontrolle kein optionaler Baustein, sondern ein integraler Bestandteil eines Entwicklungsprojekts. Der QA Verantwortliche ist dabei für die Einhaltung der Qualitätsrichtlinien verantwortlich. Der QA Engineer ist daher genauso wie ein Entwickler, ein unabdingbarer Bestandteil einer User Story. Für eine effektive und konsistente Projektarbeit ist darüber hinaus ein hoher Grad an Automatisierung erforderlich.

 

Wie bringen wir Personen, Tools, Workflows und Prozesse im Rahmen von DevOps zusammen?

 

Personen

Wir bilden unsere Mitarbeiter zu T-shaped Developer aus. Ein T-shaped Developer hat mind. ein Fachgebiet, in dem er herausragend ist. Darüber hinaus hat er eine breitgefächerte Expertise und kann daher unterschiedliche Aufgaben in einem agilen Entwicklungsprojekt übernehmen.

 

Tools

Wir arbeiten mit einer “agile tool-chain” für die Automatisierung unserer Entwicklungsprozesse. Diese Tools sind bei uns stark ineinander integriert und arbeiten – vorwiegend virtualisiert - nahtlos zusammen. Es dauert bei uns heute bspw. nur noch 15 Minuten, um für einen Kollegen eine definierte Entwicklungsumgebung auf seiner lokalen Maschine einzurichten.

 

Workflows und Prozesse

Bei der Umsetzung von Softwareprojekten achten wir immer darauf, Software so oft und früh wie möglich zu integrieren, um Fehler zu reduzieren und die Qualität zu maximieren.

Unser höchstes Ziel dabei ist, jederzeit in einem Software Entwicklungsprozess einen release-fertigen Stand des Projekts zu haben.

Dabei versuchen wir stets, das große Projekt in viele kleine Pakete zu schneiden, schnell auszuliefern und frühzeitig das Kundenfeedback einzuholen. Unsere Prozesse basieren dabei auf Best Practices unterschiedlicher Methoden wie Scrum, Kanban, ITIL und CMMI.

 

Wie läßt sich der Erfolg in DevOps Projekten messen?

In DevOps Projekten lassen sich Service Levels definieren, von welchen man die entsprechenden KPIs ableiten kann. Dazu gehören beispielsweise die Verfügbarkeit des Teams (KPI:  %), Continuous Delivery (KPI: Häufigkeit von Deployments, erfolgreiche Deployments), System Verfügbarkeit (in %), Prozess Automatisierungsgrad (in %) oder die Lieferzeit (in Stunden oder Tagen).

 

Alle gemessenen KPIs haben dabei einen Einfluss auf die zukünftigen Prozessverbesserungen, da Erfahrungswerte stets in Prozessverbesserungen einfließen.

 

Eine Herausforderung dabei ist, die richtigen KPIs zu finden und diese als Entscheidungsgrundlage für zukünftige Verbesserungen zu verwenden. Die Frage, die man sich dabei immer stellen muss, ist folgende: Sind die identifizierten Faktoren vollständig und haben sie einen Einfluss auf die KPIs?

 

Klingt einfach. Ist es aber nicht immer.