DevOps-Toolchain Cloudogu EcoSystem DevStarter
DevOps ist eine Methode bzw. eine Sammlung von Vorgehensweisen, Praktiken und Methoden, um neue Software-Features schneller auszuliefern. Je nachdem wie die bisherigen Arbeitsweisen in einem Unternehmen waren, kann die Einführung von DevOps einen fundamentalen Wechsel in den Arbeitsweisen bedeuten und demnach auch lange dauern. Wichtig ist, dass DevOps nicht durch die Benutzung von Tools umgesetzt werden kann, sondern dass Tools lediglich bei der Umsetzung der Arbeitsweisen unterstützen, das passende Mindset muss unabhängig davon entwickelt werden. Die Auswahl der richtigen Tools kann aber auf jeden Fall dabei helfen die Umsetzung von DevOps zu vereinfachen.
Da bei der Einführung von DevOps oft Arbeitsweisen und Prozesse geändert werden, werden meistens auch neue Tools benötigt, um diese Änderungen zu unterstützen und Prozesse zu automatisieren. Deswegen ist es wichtig sowohl eine flexible Infrastruktur zu haben, die es ermöglicht problemlos Tools hinzuzufügen als auch flexible Tools an sich zu nutzen, die intuitiv sind und den bereichsübergreifenden Austausch unterstützen.
Deswegen stellen wir mit dem Cloudogu EcoSystem DevStarter eine Plattform vor, die schon in ihrer Grundform eine Vielzahl von wichtigen Anwender-Tools betreibt, die für DevOps benötigt werden. Die folgende Grafik zeigt dir, welche Tools in welchen DevOps-Phasen genutzt werden können.
Easy Redmine (Plan, Code und Operate)
Das Projektmanagement-Tool Easy Redmine bietet neben klassischen Projektmanagement-Funktionen für Agile und Wasserfall auch noch weitere hilfreiche Funktionen:
- Issue-Tracker
- Zeiterfassung
- Ressourcenplanung
- Dashboards
- Projektplanung mittels Agile-Board, Gantt-Chart und mehr.
Darüber hinaus bietet Easy Redmine auch noch eine Helpdesk-Erweiterung, so dass es besonders für die Unterstützung in den Phasen Plan, Code (Aufgabenplanung und -abarbeitung) und Operate (Help Desk) geeignet ist.
BlueSpice MediaWiki (Plan und Build)
BlueSpice ist ein einfach nutzbares Wiki, das in allen Abteilungen oder Aufgabenfeldern in einem Unternehmen eingesetzt werden kann, um Informationen zu dokumentieren, Ideen zu sammeln und zu diskutieren. In der Softwareentwicklung können mit dem Wiki so Anforderungen detailliert in der Phase Plan gesammelt werden, um dann während der Entwicklung (Code-Phase) darauf zurückgreifen zu können. Natürlich kann das Wiki auch in anderen Phasen des Software-Lebenszyklus benutzt werden, um Informationen festzuhalten.
SCM-Manager (Code)
Mit dem Sourcecode-Management-Tool SCM-Manager können sowohl Git, Mercurial als auch Subversion Repositories verwaltet werden. Dadurch ist das Tool deutlich flexibler als andere Lösungen, die z.B. nur Git Repositories unterstützen. Das macht das Tool besonders wertvoll für Unternehmen, die z.B. noch Mercurial Repositories haben, aber gerne auf Git umsteigen möchten. Aber auch wenn nur ein Repository-Typ benutzt wird, hat der SCM-Manager viele Vorteile:
- Vielzahl von Integrationen in Issue Tracker wie Easy Redmine vorhanden
- Einfache Integration in Continuous-Development-Prozesse
- Viele Funktionen des Tools sind auch über eine GUI verwendbar
- Umfangreicher Code-Review-Prozess verfügbar
- Einfacher Betrieb
Das Tool wird von Teams in der Code-Phase benutzt, um den Sourcecode von Anwendungssoftware zu versionieren und diesen dann für Builds zu benutzen.
Jenkins (Build und Deploy)
Der Continuous-Integration-Server Jenkins ist der zentrale Baustein der Entwicklungs-Pipeline. Das Tool kann an eine Vielzahl von anderen Tools angebunden und zur Automatisierung von Arbeitsschritten benutzt werden. Automatisierte Builds als auch Deployments von Anwendungen sind dabei nur die naheliegendsten Funktionen. Eine Entwicklungs-Pipeline kann aus diesen Schritten bestehen:
- Ziehen des aktuellen Stands des Sourcecodes aus der Versionsverwaltung (SCM-Manager)
- Durchführung des Builds und Ausführung von Unit Tests unter Benutzung von Artefakten (Nexus Repository)
- Start einer statischen Code-Analyse (SonarQube)
- Bei erfolgreicher Code-Analyse Ablegen der gebauten Version (Nexus Repository)
- Deployment der gebauten Version
SonarQube (Test)
SonarQube ist ein Open-Source-Tool mit dem statische Code-Analysen durchgeführt werden können. Das Tool bietet eine Vielzahl von Tests für viele Programmiersprachen und ermöglicht es Quality-Gates festzulegen, um Mindestanforderungen an die Code-Qualität durchzusetzen. Beispiele für Quality Gates sind:
- % Abdeckung des Codes mit Unit Tests
- Rate der Kommentare im Code
- Anzahl (potentieller) Bugs im Code
Nexus Repository (Build und Release)
Das Tool Nexus Repository ist ein Artefakt-Repository-Management-Tool, das unter anderem dazu genutzt werden kann Releases zu verwalten und entsprechende Builds abzulegen, bevor sie veröffentlicht werden. Außerdem können mit dem Tool Binärdateien verwaltet werden, um so eine zentrale Informationsquelle im Unternehmen zu haben und Builds zu beschleunigen.
Elasticsearch (Monitor)
Das Tool Elasticsearch kann dazu genutzt werden unterschiedlichste Monitoring-Daten zu sammeln, aufzubereiten und ggf. für Alerting zu nutzen.
Weitere DevOps Tools
Als Ergänzung für die im Cloudogu EcoSystem DevStarter enthaltenen Tools bieten sich natürlich noch weitere im DevOps-Umfeld verbreitete Tools an, um zwischen Entwicklung und Betrieb noch besser zusammenarbeiten zu können:
- Kubernetes, ein System zur Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen.
- Docker, ein Tool zur Isolierung von Anwendungen durch Containervirtualisierung.
- Terraform, ein Infrastructure-as-Code-Tool mit dem Infrastruktur erstellt, geändert und verbessert werden kann.
- Selenium, ein Framework zur Erstellung von automatisierten Tests für Webanwendungen.
- Nagios, ein Tool zum Monitoring von Services in komplexen IT-Infrastrukturen.