DevOps ist kein Ziel, sondern ein nie endender Prozess der kontinuierlichen Verbesserung. Jez Humble

mediatack GmbH - Unser Workflow

mediatack shopware Business Partner
mediatack TYPO3 Silver Member
Aktuelle Whitepaper Downloads

Gemeinsam den richtigen Nenner finden

PLAN

Unsere Projektmanager planen gemeinsam mit unseren Kunden verschiedenste Projekte. Von der einfachsten Landingpage, über aufwendige Content-Management (CMS) oder Shop-System, bis zu komplexen Softwareanwendungen. Dabei werden die Kundenwünsche analysiert, Rücksprachen gehalten und Aufwände ermittelt.

In diesem Schritt ist es vor allem wichtig, dass die Projektziele in messbaren Stories mit Akzeptanzkriterien aufgeteilt werden. Dadurch wissen unsere Kunden genau, welche Aufgaben zum Erreichen der Ziele notwendig sind und die Entwickler erhalten eine genaue Information darüber was der Kunde wünscht.

Diese Notwendigkeit wird in regelmäßigen Planungsmeetings und Groomings realisiert und Rückfragen unserer Kunden und Entwickler werden zusammengeführt.

Eigenständige Entwickler-Teams

CODE

Nach Freigabe werden die Stories durch unsere Entwickler-Teams eigenständig umgesetzt. Dafür wird zunächst die allgemeine Story in einzelne Unteraufgaben aufgeteilt und in verschiedene Bereiche eingeteilt. Oftmals umfasst eine Story einige Bausteine unserer täglichen Arbeit. Wir unterscheiden dabei nicht nur in Backend- und Frontend-Bereiche, auch der DevOps-Bereich ist ein elementarer Bestandteil, um nächste Projektstufe zu erreichen.

Für jedes Projekt wird eine lokale Entwicklungsumgebung bereitgestellt und durch den Einsatz einer Versionsverwaltung und der beschriebenen strukturierten Herangehensweise lassen sich sehr gut die Projekte in Teilaufgaben aufteilen und es kann parallel an der Umsetzung gearbeitet werden. Dies hilft uns Änderungen am Projekt und den Projektfortschritt zu dokumentieren.

DevOps Lifecycle

Qualität braucht Zeit

BUILD

Um für unsere Kunden ein erhöhtes Maß an Qualität erreichen zu können, durchlaufen unsere Projekte einen sogenannten automatisierten Build-Prozess. Dies dient uns als Werkzeug um eine kontinuierliche Integration ermöglichen und um das Zusammenspiel der einzelnen Komponenten im Vorfeld überprüfen zu können. Sobald ein Build nicht erstellt werden kann, werden die Gründe durch das Entwickler-Team analysiert und es muss nachjustiert werden.

Qualitätsstandard - Code analysieren und testen

TEST

In dieser Projektphase werden statische und dynamische Code-Analysen und Tests automatisiert durchgeführt. So können wir für unsere Kunden garantieren, dass ihr Projekt einen definierten Qualitätsstandard hält und über die Bereitstellung von Tests können Fehler während der Entwicklung ermittelt werden, noch bevor diese Veränderung auf einen unserer Kundenserver bereitgestellt wurden.

Die automatisierten Tests werden dabei als Qualitätsmesswerkzeug wahrgenommen, denn auch wenn in dieser Phase des Projektes ein Fehler erkannt wird, dann führt dies zur Wiederholung der Entwicklungsphase und Anpassung des Entwicklungsstandes.

Eingesetzte Tools und Hilfsmittel

Für unsere tägliche Arbeit in diesem Bereich nutzen wir eine vielzahl an unterschiedlichen Tools. Microsoft 365TeamsSlack und NFON für unsere interne und externe Kommunikation. Atlassian Produkte wie Jira und Confluence für unsere Planung und Dokumentation. Sowie JetBrains Entwickler-Werkzeuge wie PhpStorm

 

 

Softwarestack

 
 

unterschiedliche Release-Möglichkeiten

RELEASE

In dieser Phase sprechen wir über unterschiedliche Release-Möglichkeiten. Zum einen können wir nach einer erfolgreichen Build- und Test-Phase unsere Änderungen zusammenführen und als einheitlichen Stand zur Verfügung stellen. Zum anderen ist es möglich, dass dieser Stand veröffentlicht werden kann.

Oftmals geht eine gemeinsame Review der umgesetzten Features voraus. Dabei stellt das Entwicklerteam die Arbeiten vor und es werden gemeinsame die Akzeptanzkriterien der Stories kontrolliert. Dadurch können unsere Projektmanager in dieser Phase einschätzen, ob die Veröffentlichung des Kundenprojektes durchgeführt werden kann oder Nacharbeiten umgesetzt werden müssen.

kontinuierliche Integration

DEPLOY

Wie bereits in der Release Phase angesprochen nutzen wir mit Hilfe der kontinuierlichen Integration die Möglichkeit jederzeit automatisiert unseren Entwicklungsstand zu veröffentlichen. Wir unterscheiden dabei zwischen drei Möglichkeiten eines Deployments.

  1. Testing – Bereitstellung des Projektfortschrittes auf einem internen Testserver
  2. Staging – Bereitstellung eines Release-Candidates zur Kundenabnahme
  3. Production – Bereitstellung und Veröffentlichung des Kundenprojektes

Das Deployment auf einen unserer Testserver dient der internen Qualitätskontrolle und hilft uns dabei den Projektfortschritt sichtbar zu machen.

Gemeinsam mit dem Projektmanager können unsere Kunden sich den Entwicklungsstand auf einen Stagingserver ansehen.

Nach der Qualitätssicherung auf dem Stagingserver und der Freigabe durch unsere Kunden veröffentlichen wir die Projekte auf unterschiedlichste Productionserver.

 

 

 

 

 

 

 

 

 

 

 

 

 

Projekt ist Online

OPERATE

Die neue Version ist jetzt online und wird unseren Kunden und deren Anwendern genutzt. Unsere Kunden haben in dieser Phase die Möglichkeit Feedback einzusammeln. In dieser Phase nutzen wir die gesammelten Informationen, um Rückschlüsse auf den Erfolg des Projektes treffen zu können. Die daraus gewonnenen Rückschlüsse lassen wir in Zusammenarbeit mit unseren Kunden in neue Pläne für die Zukunft der Projekte einfließen.

Nichts dem Zufall überlassen

MONITOR

Wir überlassen unsere Kunden nicht dem Zufall und überwachen unsere Systeme. Nicht nur durch den Einsatz von Managed-Systemen und der langjährigen Erfahrung mit zertifizierten Hostern, auch durch den Einsatz von Monitoring Diensten wie Prometheus und Grafana können wir bei selbstverwalteten Software-Anwendungen eine zuverlässige Aussage darüber treffen, wie stark die Anwendung ausgelastet ist und ob alle Dienste erreichbar sind.

Durch den Einsatz von Analyse-Tools und Fehlerbenachrichtigung können wir frühzeitig Verbesserungen und Störungen erkennen, welche wir als weitere Verbesserungen einplanen können.