Was es ist und wozu man es braucht:

Deployment

Deployment ist ein wichtiger Schritt in der Web- und Softwareentwicklung. In diesem Artikel zeigen wir euch, um was es sich bei Deployment handelt und wozu es gebraucht wird.

Was ist Deployment

Deployment oder auch Softwareverteilung ist der Schritt, eine Software zu veröffentlichen bzw. auf einem Gerät zu installieren. Sei es das Live-Schalten einer Website oder das Hochladen einer mobilen App im App Store. Dieser Schritt sollte so weit wie möglich automatisch erfolgen und nicht mehr als einen Knopfdruck benötigen. Um das zu gewährleisten, bieten wir in unseren Projekten immer automatisches Deployment mit an.

Dev, Staging und Production

Bei der Entwicklung einer Website oder Web-App ist es in den meisten Fällen notwendig, Änderungen am Design oder an Funktionalitäten durchzuführen. Damit der Austausch mit Kund:innen schnell erfolgen kann, richten wir dafür auf Wunsch eine sogenannte Staging-Umgebung ein, die nicht öffentlich einsehbar ist, sondern nur für die Kund:innen sichtbar ist. In dieser Staging-Umgebung kann sehr einfach der aktuelle Entwicklungsstand einer Website deployed werden. So kann man Änderungen ohne Zeitverzögerung auf einer nur für Kund:innen sichtbaren Seite präsentieren und bei Bedarf nachbessern. Sobald das Feedback eingearbeitet und abgesegnet wurde, kann die Seite dann auf der Production-Umgebung deployed werden, also an jenem Ort, an dem die Anwendung oder Webseite letztlich für die vorgesehenen Benutzer:innen zugänglich sein soll.

Deployment Tools

Um eine Seite zu deployen, werden mehrere Werkzeuge benötigt. In diesem Abschnitt zeigen wir einige dieser Tools und erklären ihren Verwendungszweck.

Build und Deployment Pipeline

Die Deployment Pipeline ist der Gesamtablauf eines Deployments, sie besteht aus einer Abfolge von Schritten, die der Reihe nach durchgeführt werden müssen, um die fertige Software zu deployen. Wir verwenden für unser Deployment GitlabCI und CircleCi.

Docker

Häufig kommt beim Deployment Docker zum Einsatz. Docker ist eine Technologie, die es erlaubt, Container zu erstellen. Container sind Umgebungen, die alle Komponenten beinhalten, die für die darin ausgeführte Software benötigt werden. So wird sichergestellt, dass sich alles, was in den Containern passiert, immer gleich verhält und alle Abhängigkeiten gegeben sind. Zum Beispiel kann der “Build Step” einer Website in einem Container in der Deployment Pipeline durchgeführt werden. In diesem Schritt wird aus Code die Website generiert.

Umgebungsvariablen

In fast allen Projekten müssen Umgebungsvariablen gesetzt werden. Diese Variablen können unter anderem Zugangsdaten für Datenbanken, Lizenzschlüssel oder Passwörter sein. Diese Werte können in ein Secure Storage gesetzt werden und dann in den Schritten der Build Pipeline abgerufen werden. So sind alle Werte sicher verwahrt, stehen aber beim Deployment der Software zur Verfügung.

Unit Tests / Integration Tests

Um die Funktionalität von Software zu gewährleisten, kommen Tests zum Einsatz. Diese werden jedes Mal ausgeführt, wenn die Software verändert wird. Somit ist nach jeder Änderung für die Entwickler:innen ersichtlich, ob die Software noch ordnungsgemäß funktioniert.

Eine stabile Basis

Automatisches Deployment ist enorm wichtig, um Zeit und Geld zu sparen. Nachdem einmal alle Einstellungen der Pipeline getroffen wurden, muss so gut wie nie wieder Zeit dafür aufgebracht werden. Eine gute Deployment Pipeline ist die Basis für effiziente Softwareentwicklung.