Drei Zutaten für großartige Software-Releases

Kombiniere Architektur mit Teamwork im Verhältnis 1 zu 2. Füge ein wenig Automatisierung hinzu, und rühre das Ganze gut um.

Dan Radigan Dan Radigan
Themen durchsuchen

Irgendwann in deiner Karriere – wenn es nicht sogar schon geschehen ist – wirst du es mit einem monolithischen Software-Release zu tun bekommen. Also einem Release mit hartnäckigen Bugs und Interdependenzen, bei dem das gesamte Team rund um die Uhr gefragt ist. Ganz zu schweigen von der Anzahl an Patches, die nötig sein werden, sobald er in die Produktion geht.

Die Auslieferung von Code – ein Release – ist ein guter Indikator für die Agilität von Softwareentwicklern. Jede Bemühung, die Planung, das Programmieren und das Testen zu beschleunigen, ist vergebens, wenn Releases nicht reibungslos vonstattengehen. Der Schlüssel zur agilen Gestaltung von Releases ist die Deployment-Automatisierung. Ebenfalls wichtig ist es, Programmierer und das Operations-Team schon zu Beginn der Entwicklungsphase zusammenzubringen, auf Continuous Integration zu setzen und Probleme umgehen zu beheben.

Den Code immer in Release-fähigem Zustand zu halten, ist das Gütesiegel der Agile-Entwicklung. Schlanke Planung und ein iterativer Entwicklungsansatz sind bedeutungslos, wenn der Code nicht in dem Moment ausgeliefert werden kann, in dem du entscheidest, dass er bereit ist. 

Großartige Software-Releases beginnen mit modularer Architektur

Bei jedem Softwareprogramm ist es am besten, einfache, häufige Releases auszuliefern. Ein Team kann Releases durch den Aufbau (oder eine Überarbeitung in Richtung) einer modularen Architektur zu einem selbstverständlichen Teil seiner Agile-Kultur machen. Einer einzigen großen Anwendung (wie dem oben erwähnten Monolith) ist eine frühzeitige Modularisierung in mehrere Teile vorzuziehen. Gruppiere ähnliche Features zu kleineren Anwendungen oder Komponenten, und sorge für klare API-Verträge zwischen allen Anwendungen und Komponenten. Diese APIs können mit jedem Build automatisch getestet werden, um so die Kompatibilität sicherzustellen und Risiken beim Software-Release zu minimieren.

Durch eine modulare Architektur muss nicht der gesamte Software-Stack auf einen Schlag veröffentlicht werden und die API-Verträge erleichtern die Aktualisierung von Komponenten und gewährleisten die Kompatibilität der verschiedenen Versionen. Kurz, in modularen Releases werden weniger Teile bewegt. Und dies sorgt für einfachere Releases.

Großartige Software-Releases beruhen auf großartigen Beziehungen

Die Softwareentwicklung findet selten im Vakuum statt. Tatsächlich ist bei großartiger Softwareentwicklung das gesamte Team vom Produktmanagement bis zum Bereich Operations eingebunden. Das Operations-Team ist zum Beispiel ein Schlüsselpartner bei der Auslieferung der Software an die Produktion, da es die Software zum Endanwender bringt.

Entwicklerteams können Operations-Teams mit diesen Techniken informieren und unterstützen:

  • Lege die Materialliste für jeden Release offen. Operations-Teams verfügen nicht immer über dasselbe Hintergrundwissen zum Release wie das Entwicklerteam.
  • Verlinke jeden im Release gelösten Vorgang mit deinem Vorgangstracker und Quellcodemanagementsystem, damit das Operations-Team auf demselben Wissensstand ist, wenn beim Deployment Probleme auftreten sollten.
  • Manchmal treten Probleme auf, wenn der Code von der Entwicklungsumgebung in die Staging-Umgebung übergeht. Benenne diese Probleme eindeutig, da sie während der Produktionsphase wieder auftreten könnten.
  • Beim Deployment kann es immer zu Pannen kommen. Gib dem Operations-Team daher stets einen klaren Eskalationspfad vor, um Probleme reibungslos lösen zu können.

Operations-Teams können ihre Kollegen im Bereich Entwicklung mit diesen Vorschlägen unterstützen:

  • Wenn Probleme in der Produktion auftreten, nimm dir Zeit, die Ursachen und Lösungen zu verstehen. Diese Probleme lassen sich so in Zukunft vermeiden (oder eleganter beheben).
  • Migriere Konfigurationsdaten von der Produktion zurück in die Staging- und Entwicklungsumgebung, um Konfigurationsabweichungen zu vermeiden.

Bei der Migration von Code von der Entwicklung zum Staging und dann zur Produktion migrieren wichtige Konfigurations- und Nutzerdaten in die entgegengesetzte Richtung: von der Produktion über das Staging zur Entwicklung. Durch diese bidirektionale Beziehung kann die Entwicklungsumgebung die Produktionsumgebung genau nachbilden. Dies führt zu weniger Bugs und Überraschungen am Tag des Release.

Großartige Software-Releases | Atlassian Agile Coach

Großartige Software-Releases sind einfach zu verteilen

Automatisieren, automatisieren, automatisieren!

Die Automatisierung von Releases ist die beste Art, eine Release-Kultur zu verbessern. Wenn eure Releases bisher noch nicht automatisiert sind, automatisiere zunächst das Releasen in die Staging-Umgebung. Sobald alle gesehen haben, wie einfach es ist, folgt der logische nächste Schritt, nämlich die Automatisierung des Deployments für die Produktion.

Wenn Releases schwierig sind, solltest du dir häufige Releases zur Gewohnheit machen – selbst wenn es nur Releases in die Staging-Umgebung sind. Wenn sich das Entwicklerteam der Problembereiche von Releases bewusst wird, beflügelt dies den Innovationsgeist, und das Team wird nach Wegen suchen, die Releases problemloser zu gestalten (und zu automatisieren).

Automatisierte Tests und Continuous Integration sind Schlüsseldisziplinen für großartige Releases. Achte darauf, dass die Build- und Testdauer so kurz wie möglich ist, und denke daran, dass Builds, die einfach zu validieren sind, auch einfacher zu veröffentlichen sind, weil sich der Validierungszyklus stärker am Team orientiert. 

Großartige Software-Releases sind großartig!

Den Code immer in Release-fähigem Zustand zu halten, ist das Gütesiegel der Agile-Entwicklung.

Unsere Vorgehensweise

Wir sind überzeugt, dass schnelle, häufige Releases für unsere SaaS-Umgebungen am einfachsten zu verwalten sind. Bei herunterladbaren Produkten ist eine enge Zusammenarbeit von Entwicklungs-, Operations- und Build-Engineering-Teams von unschätzbarem Wert. Diese Gruppen sollten gemeinsam an der Automatisierung von Releases arbeiten und die Automatisierung proaktiv an zukünftige Produktänderungen anpassen. Viele der Teams bei Atlassian stellen jeden erfolgreichen Build eines Masters automatisch in einer Testumgebung bereit. Wenn es an der Zeit ist, einen Release an die Staging-Umgebung zu übergeben oder ihn den Kunden zur Verfügung zu stellen, können diese Teams die automatisierte Bereitstellung per Knopfdruck auslösen. 

Für Softwareentwickler sollte der Release den Höhepunkt unseres Innovationszyklus darstellen. Wir bekommen zu sehen, wie die Kunden mit dem Code, den wir geschrieben haben, interagieren und welches Feedback sie uns geben. Juhu! Wenn Releases ein selbstverständlicher Teil deines Arbeitstags sind, ist es leichter, Code in die Produktion zu geben, und du hast die Genugtuung, sagen zu können: "Das ist mein Code!"

Weiter geht's
Stress free release