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 bei bitperfect in unseren Projekten immer die Bereitstellung über automatisiertes Deployment mit an.
Dev, Staging und Production #
Im Prozess der Entwicklung einer Website oder Web-Applikation 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 (bzw. Produktivumgebung) 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 und damit bereitzustellen, 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. Diese Tests bieten damit den Vorteil, dass mögliche Fehler oder Störungen sofort erkannt werden können.
Eine stabile Basis #
Automatisiertes Deployment ist enorm wichtig, um Zeit und Geld zu sparen und kann damit wirtschaftliche Vorteile für Unternehmen bzw. Organisationen bringen. Nachdem einmal alle Einstellungen und Konfigurationen der Pipeline getroffen wurden, muss so gut wie nie wieder Zeit dafür aufgebracht werden. Eine gute Deployment Pipeline vereinfach die Bereitstellung von Softwarelösungen und ist die Basis für effiziente Softwareentwicklung.