Bereitstellen von Anwendungen in Heroku
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Beschreiben der verschiedenen Möglichkeiten der Bereitstellung mit Heroku
- Erläutern der Vor- und Nachteile der einzelnen Möglichkeiten
Heroku bietet mehrere Bereitstellungsmöglichkeiten. Welche Methode Sie wählen, hängt von Ihrem speziellen Bereitstellungsprozess, Ihren Anforderungen und Ihren Anwendungen ab.
Bereitstellen mit Git
Dies ist die einfachste Bereitstellungsmethode. Sie fügen Ihre Heroku -Anwendung als remote zu einem bestehenden Git-Repository hinzu und senden Ihren Code dann mit git push
an Heroku. Heroku erstellt automatisch Ihre Anwendung und erstellt ein Release.
Bereitstellen mit der GitHub-Integration
Die GitHub-Integration ermöglicht Ihnen, Änderungen aus einem GitHub-Repository direkt in Heroku bereitzustellen. Diese Integration bietet mehr Funktionen als die anderen Bereitstellungsmöglichkeiten. Nachdem Sie Ihr Repository verknüpft haben, werden mit Push in das Repository übertragene Änderungen automatisch in der Anwendung bereitgestellt. Sie können automatische Bereitstellungen für einen bestimmten Branch konfigurieren oder Bereitstellungen aus GitHub manuell auslösen. Wenn Sie Continuous Integration (CI) nutzen, z. B. mit Heroku CI, können Sie Bereitstellungen in Heroku verhindern, falls Tests fehlschlagen.
Die GitHub-Integration ist auch für die Automatisierung von Bereitstellungen in Pipelines hilfreich. Wenn Sie beispielsweise eine Änderung mit dem Merge-Befehl mit dem main-Branch kombinieren, können Sie sie automatisch für Tests in der Staging-Phase bereitstellen.
Bereitstellen mit Heroku Review Apps
Review Apps ermöglichen Ihnen, eine beliebige GitHub Pull Request (PR) als isolierte Einweganwendung bereitzustellen. Sie können die Pull Request vorführen und testen, ohne Ihre Produktionsanwendung zu überschreiben – eine große Zeitersparnis beim Testen. Beim Schließen der Pull Request wird die Review App gelöscht.
Bereitstellen mit der Schaltfläche 'Deploy to Heroku'
Die Schaltfläche 'Deploy to Heroku' ermöglicht Ihnen, eine Anwendung mithilfe von Mausklicks von einem Webbrowser aus in Heroku bereitzustellen. Sie können jede Schaltfläche mit unterschiedlichen Einstellungen parametrisieren, um beispielsweise benutzerdefinierte Umgebungsvariablen an Heroku zu übergeben, einen bestimmten Git-Branch zu verwenden oder OAuth-Schlüssel anzugeben. Über diese Schaltfläche bereitgestellte Anwendungen werden nicht automatisch aktualisiert, wenn Sie neue Commits zum GitHub-Repository hinzufügen.
Bereitstellen mit Docker
Docker bündelt Ihre Anwendungen in abgeschlossenen Umgebungen. Diese Isolierung stellt sicher, dass sie sich sowohl in der Entwicklungs- als auch der Produktionsumgebung gleich verhalten. Docker bietet mehr Kontrolle über die Sprachen, Frameworks und Bibliotheken, die zur Ausführung Ihrer Anwendung verwendet werden. Um einen Container in Heroku bereitzustellen, übertragen Sie ein Image mit Push in die Heroku-Container-Registry oder deklarieren ihn in der heroku.yml
-Datei Ihrer Anwendung , um ihn automatisch zu erstellen.
Bereitstellen mit Hashicorp Terraform
Hashicorp Terraform ist ein Infrastructure-as-Code-Tool, das Ihnen bei der Verwaltung komplexer Infrastrukturen hilft. Sie können Ihre Anwendungen mit HCL, einer deklarativen Konfigurationssprache, definieren, um den Prozess der Bereitstellung und Verwaltung von Heroku-Anwendungen zu automatisieren. Mit Terraform Version 0.12+ können Sie den Status remote speichern, so dass Sie Terraform auf einem Heroku-Dyno ausführen und den Terraform-Status in einer Heroku-Postgres-Datenbank speichern können.
Vergleichen der verschiedenen Bereitstellungsmöglichkeiten
Nutzen Sie die folgende Tabelle, um die Bereitstellungsmöglichkeit zu wählen, die am besten zu Ihrem Anwendungsfall und Ihrem Workflow passt.
Bereitstellungsmethode | Voraussetzungen | Am besten geeignet für | Vorteile | Nachteile |
---|---|---|---|---|
Git | - Voller Zugriff auf das Git-Repository und die Heroku-Anwendung, um den Code manuell mit Push in die Produktionsumgebung zu übertragen | - Projekte mit kleinen, vertrauenswürdigen Teams | - Lässt sich leicht in einen Git-basierten Workflow einbinden - Unterstützt Git-Submodule | - Code muss manuell mit 'git push' bereitgestellt werden |
GitHub-Integration | - Administratorzugriff auf ein GitHub-Repository | - Automatisierte Bereitstellungen | - Automatische Bereitstellung und Aktualisierung von Anwendungen - Integration mit Heroku Pipelines, Review Apps und Heroku CI für einen Continuous-Workflow | - Git-Submodule werden nicht unterstützt |
Heroku Review Apps | - Die GitHub-Integration | - Projekte in GitHub mit Anwendungen, die in mehreren Umgebungen bereitgestellt werden | - Möglichkeit, automatisch Review Apps für jede Pull Request zu erstellen und zu aktualisieren - Unterstützt Heroku Private Spaces zum Testen von Änderungen in einer isolierten Umgebung | - Zusatzkosten für Ressourcen, die in Review Apps genutzt werden. Lesen Sie hierzu die Tipps zur Kostenoptimierung im Dev Center. |
Schaltfläche 'Deploy to Heroku' | - Ein GitHub-Repository - Eine gültige app.json-Datei im Stammverzeichnis des Projekts | - Anwendungen für Ihre Benutzer oder Kunden, wie etwa Open Source-Projekte - Einarbeiten neuer Mitarbeiter | - Großartig zum Teilen von Vorlagenprojekten - Lässt sich einfach zur README-Datei oder Webseite eines Projekts hinzufügen - Bietet eine Vorlage mit vorkonfigurierten Standardwerten, Umgebungsvariablen und Parametern | - Git-Submodule werden nicht unterstützt - Keine automatische Aktualisierung bei Änderungen im Repository. Für nachfolgende Bereitstellungen in derselben Anwendung muss eine andere Bereitstellungsmethode verwendet werden. |
Docker | - Ein Docker-Image | - Anwendungen mit benutzerdefinierten Stacks | - Mehr Kontrolle über den Stack Ihrer Anwendung - Images automatisch generieren oder ein bestehendes Image mit Push an die Container-Registry übertragen - Konsistenz zwischen Umgebungen | - Man muss einen eigenen Stack pflegen - Hochstufen in der Pipeline wird nicht unterstützt |
Hashicorp Terraform | - Terraform | - Anwendungen mit komplexen Infrastrukturkomponenten | - Automatisiert die Bereitstellung von Heroku-Anwendungen - Ermöglicht, Heroku-Anwendungen als Code bereitzustellen - Vereinfacht die Verwaltung großer, komplexer Bereitstellungen - Kann Anwendungen, Private Spaces oder Ressourcen anderer Anbieter in einer wiederholbaren Multi-Provider-Architektur konfigurieren | Heroku Support kann bei komplexeren Bereitstellungen keine Hilfe leisten |
Zusammenfassung
Sie kennen jetzt die verschiedenen Bereitstellungsmöglichkeiten. Im weiteren Verlauf dieses Moduls stellen wir Teile der Infrastruktur vor, die für die Ausführung von Anwendungen auf Heroku verwendet wird.
Ressourcen
- Heroku Dev Center: Bereitstellen mit Git
- Heroku Dev Center: GitHub-Integration
- Heroku Dev Center: Review Apps
- Heroku Dev Center: Erstellen einer Schaltfläche 'Deploy to Heroku'
- Heroku Dev Center: Container-Registry und -Laufzeit (Docker-Bereitstellungen)
- Heroku Dev Center: Verwenden von Terraform mit Heroku