Lifecycle Management mit Atlassian-Tools, Teil 1 Die DevOps-Phasen Planung und Erstellung

Autor / Redakteur: Michael Matzer / Stephan Augsten |

Atlassian bietet über den DevOps-Lebenszyklus hinweg eine komplette Toolchain an, mit der sich die Phasen Plan, Build, Continuous Integration, Deploy, Operate und Continuous Feedback realisieren lassen. Der agile Lifecycle soll eine effiziente Entwicklungsarbeit und fehlerfreie Bereitstellung fördern.

Anbieter zum Thema

Mit Bitbucket und weiteren Tools deckt Atlassian den kompletten DevOps-Lifecycle ab.
Mit Bitbucket und weiteren Tools deckt Atlassian den kompletten DevOps-Lifecycle ab.
(Bild: Atlassian)

Atlassians Toolchain bzw. Technologiestapel unterstützt agile Entwicklung, die in Iterationen erfolgt. Daher werden die Tools auch in einer Schleife eingesetzt, die immer wieder durchlaufen wird.

Das erlaubt die Wiederverwendung bereits fertiggestellter Artefakte wie etwa Klassen oder Bibliotheken und unterstützt das Lernen von anderen Nutzern. Diesen kann man dann entsprechendes Feedback geben. Atlassian integriert im Lifecycle die Tools Jira Software & Service-Desk, Bitbucket, Bamboo, Confluence, Stride und Statuspage. Natürlich lassen sich auch alternative Tools einbauen, etwa Chef oder Puppet.

Phase 1: Planung (Plan)

Der DevOps-Zyklus ist eine Rückkopplungsschleife. Das Feedback sollte aus konstruktivem Input bestehen, auf den man mit einer Aktion reagieren kann. Solche Aktionen sollten mit Prioritäten versehen sein, sonst kommt es zu Verzögerungen und Verwirrung. Tools sollten „asynchrones Brainstorming“ unterstützen. Das erlaubt es jedem Teammitglied, alles jederzeit mit jedem zu teilen: Ideen, Strategien, Ziele, Anforderungen, Roadmaps und Dokumentationstexte.

Das zentrale Werkzeug für diese Phase ist Jira Software. Die Software besteht aus drei Komponenten. Erstens aus Jira Core für allgemeines Projekt-Management, zweitens die eigentliche Jira Software, die bislang als Jira Agile ein separates Produkt war. Sie deckt Aspekte der agilen Software-Entwicklung ab. Drittens gibt es Jira Service Desk, damit – nomen est omen – auch Support-Probleme durch Issue Tracking bewältigt werden. Jira lässt sich mit Source-Control-Programmen wie Clearcase, Concurrent Versions System (CVS), Git, Mercurial, Perforce, Apache Subversion und Team Foundation Server integrieren.

Weitere Tools für diese Phase sind Atlassian Confluence und Atlassian Stride. Confluence ist eine Software für die Team-Zusammenarbeit. 2014 veröffentlichte Atlassian Confluence Data Center, um Hochverfügbarkeit sowie Lastausgleich in einer Cluster-Installation anbieten zu können, die in großen Projekten erforderlich sind.

Confluence arbeitet mit Jira zusammen, aber auch mit Bamboo, Clover, Crowd, Crucible und FishEye (s.u.). Das Tool unterstützt CSS-Templates für Stile und Seiten und erlaubt die Suche nach Datum, Autorenseiten und Inhaltstyp wie etwa Grafiken. Im Hinblick auf die Anforderungsverwaltung lässt sich so eine gute Gliederung erstellen. Zusammen mit Jira lässt sich in Confluence der Jira Issue Tracker verwenden.

Stride ist das Cloud-gestützte Kommunikations- und Kollaborationswerkzeug für Teams, wohingegen Hipchat ein Gruppen-Kommunikationswerkzeug (inklusive Videochat) ist, das man selbst hosten kann. Stride weist eine Besonderheit auf: Damit sich der Mitarbeiter auf das Wichtigste konzentrieren kann, gibt es einen Fokus-Modus, der das Wechseln vom Text-Chat zu Konferenzanrufen und Videokonferenzen erleichtert, indem die Channel-Begrenzungen dafür aufgehoben werden: Dies steht alles in nur einem Kanal bereit.

Zu den Leistungsmerkmalen gehören Chatrooms, persönliches Messaging, File-Sharing, fünf Gigabyte Cloud-Speicherplatz, Sprach- und Video-Anrufe für Gruppen, Kollaborationswerkzeuge und bis zu 25.000 Nachrichten in der durchsuchbaren Nachrichtenhistorie. Wer mehr Kapazität möchte, muss für die Premium-Version tiefer in die Tasche greifen: Sie kostet drei US-Dollar pro Benutzer und Monat. Die oben genannten Ressourcen sind dann unbegrenzt. Aber es gibt noch weitere Boni: Gemeinsame Bildschirmnutzung für Gruppen (Screen Sharing), Remote Desktop Control und Einwahl-/Hinauswahl-Optionen. Neben den Atlassian-Produkten lässt sich Stride mit Tools wie GitHub, Giphy oder dem Google Calendar koppeln.

FishEye ist Atlassians Browser und Suchmaschine für die Revisionskontrolle. Es werden Change-Logs und Change-Sets erstellt und durchsuchbar gemacht, selbst wenn das jeweilige Concurrent Versions System (CVS) dies nicht bereitstellt. Bis hinunter auf Zeilenebene lassen sich URLs aufrufen. So ist man schnell in der richtigen Codezeile.

Die Überwachung und die benutzerrelevanten Benachrichtigungen erfolgen mit E-Mail oder RSS. Ähnliche Revisionskontroll-Browser wie RedMine oder Trac verfügen laut Wikipedia über weitergehende Fähigkeiten. So sind sie etwa in der Lage, verschiedene Versionen von Dateiordnern und zwei Ordner miteinander zu vergleichen. Diese Mängel könnte die Steuerung des Software Release Prozesses behindern.

Phase 2: Erstellung (Build)

Von Puppet und Chef profitiert die Ops-Seite von DevOps, doch als Bereitstellungsumgebung für Entwickler eignen sich Container-Verwaltungen wie Docker oder Kubernetes. Sie lassen sich individuell konfigurieren und replizieren – hier geht es um Provisionierung und Re-Provisionierung, falls doch mal ein Fehler auftritt.

Hier gilt das Prinzip „Infrastruktur als Code“. Entwickler erstellen Apps nur noch in Modulen, denn diese sind zuverlässiger und leichter zu warten. Das gleiche Prinzip sollte man auch auf IT-Infrastruktur anwenden können, doch dem steht entgegen, dass sich diese IT-Infrastruktur dauernd ändern. Als Ausweg dient Code für die Provisionierung, der sich auf Bare-Metal-Maschinen anwenden lässt oder um einen Server auf die Standardeinstellung zurückzuführen. "Infrastruktur als Code" hat den Vorteil, dass die Re-Provisionierung schneller geht als Code-Reparatur.

Netter Nebeneffekt: Man kann Varianten der Entwicklungsumgebung erzeugen und nach Bedarf bereitstellen oder verteilen. Der Code lässt sich natürlich in der Versionskontrolle speichern und verwalten. Man kann ihn testen, mit Continuous Integration (CI, s.u.) versehen, von Kollegen prüfen lassen usw. Nun werden wiederholbare Abläufe und zuverlässige Systeme realisierbar.

Die nötigen Tools neben Chef, Docker und Puppet sind Bitbucket und Bamboo. Atlassian Bamboo ist ein Server für Continuous Integration (s.u.) und Continuous Deployment. Bamboo unterteilt die Applikation hierarchisch: Projekt, Plan, Phase, Job und Task. Ein Plan umfasst die Gesamtkonfiguration aller Tasks, die darunter ausgeführt werden. Seine Informationen betreffen das Quellcode-Repository, die Build-Triggers des Programmierers, wer den Plan ansehen bzw. verändern darf und schließlich Planvariablen.

Ein Bamboo-Plan weist eine oder mehrere Phasen auf, die in einer Reihenfolge ablaufen. Ab Bamboo v5.x sind Pläne in der Lage, Build-Artefakte miteinander zu teilen. Bamboo verbindet sich mit Repositorys wie Git, Apache Subversion, Mercurial, Concurrent Version System (CVS), Bitbucket, Stride usw. Es unterstützt Git-Workflows und Projekte in besonderer Weise. Dass es mit den anderen Atlassian Tools integriert ist, versteht sich von selbst. Einen Vergleich zwischen Jenkins und Bamboo findet sich auch bei Atlassian.

Atlassian Bitbucket ist ein Cloud-basierter Service für das Hosten eines Versionskontroll-Repositorys, für Quellcode und Entwicklungsprojekte, die die oben genannten Revisionskontrollsysteme (CVS usw.) verwenden. Folglich stellt Bitbucket eine Vielzahl geeigneter Funktionen und Merkmale bereit, darunter den Support für das Git Large File Storage (LFS) System. Es gibt zudem den Bitbucket Server, der vormals unter dem Namen „Stash“ angeboten wurde: eine Kombination aus dem Git-Server und einer Web-Schnittstelle. Er erlaubt es dem Nutzer, einfache Git-Operationen auszuführen, wie etwa das Prüfen oder Zusammenführen von Code, gleichzeitig aber die Kontrolle über die Schreib- und Leserechte hinsichtlich des Code zu kontrollieren. Sourcetree heißt der kostenlose Bitbucket Desktop Client für Windows und Mac.

Continuous Integration (CI)

Schon mehrfach ist der Ausdruck „Continuous Integration“ (CI) im Zusammenhang mit Atlassian Bamboo etc. gefallen. Darunter ist die Praxis zu verstehen, Quellcode mehrmals pro Tag in ein gemeinsames Repository einzuchecken und ihn jedes Mal zu testen. Auf diese Weise lassen sich Probleme frühzeitig entdecken und beheben. Außerdem können neue Features auf dem schnellsten Weg zu den Anwendern gebracht werden, die auf das Repository zugreifen dürfen.

Heute finden Entwicklungs-Workflows nach dem Prinzip der Verzweigung und Zusammenführung (branch & merge) statt. Der Vorteil: Mehr Programmierer können parallel an einer Anwendung arbeiten und ihr Ergebnis schnell abliefern. Mit CI kann der Projektleiter sicherstellen, dass bei dieser hohen Produktionsgeschwindigkeit rigoroses Testen und Prüfen nicht vernachlässigt werden. Das Ziel ist die Master-Version. Sie soll so schnell wie möglich erreicht werden – ohne Qualitätseinbußen. Bei jeder CI-Aktivität werden die Teammitglieder benachrichtigt.

Automatisiertes Testen

Mit Bamboo, Bitbucket und Capture for Jira lassen sich die verschiedenen Aspekte des Testens und der Versionskontrolle realisieren. Die Automation des Testens ist deswegen wichtig, weil damit sichergestellt werden kann, dass jedes Mal rigorose Vorgaben konsistent eingehalten werden.

Das Testen ist im Hinblick auf Ops wichtig: Die Operations-Mitarbeiter wissen dann Bescheid, womit sie rechnen müssen, denn Ergebnisberichte und Trendgrafiken vermitteln ihnen und den Entwicklern einen Eindruck davon, wo es noch Problemzonen gibt. Denn fehlerhafter Code führt meist zu einer Verringerung der Performanz des Gesamtsystems.

Damit haben wir die ersten beiden Phasen des DevOps-Zyklus vollständig abgedeckt, der zweite Teil befasst sich dann mit Deployment, Betrieb und Feedback-Loop.

(ID:45146429)