So stellen Sie eine Play-Anwendung auf AWS bereit

Amazon Web Services – AWS – ist eine der beliebtesten Cloud-Plattformen. Sie beherbergt über 200 einzigartige Dienste, darunter Docker-Container-Hosting, Load Balancer, Datenbank-Hosting und Dateispeicher.

CloudCaptain – Boxfuse

CloudCaptain (früher bekannt als Boxfuse) ist ein Tool, das minimale unveränderliche Instanzen Ihrer Anwendung erstellt und es Ihnen ermöglicht, diese einfach auf AWS bereitzustellen. Da es sich im Grunde um VM-Instanzen handelt, stellen sie sicher, dass die gesamte Umgebung dieselbe ist, egal ob Sie sie auf Ihrem lokalen Rechner, in einer Test- oder Produktionsumgebung ausführen.

Die ersten Dinge, die Sie tun müssen, um CloudCaptain zu nutzen, sind:

  1. CloudCaptain-Konto anlegen
  2. Ihr AWS-Konto mit dem CloudCaptain-Konto verbinden
  3. Installation des CloudCaptain-Clients
  4. Installieren von VirtualBox

Verbindung zur Datenbank herstellen

Wenn Ihr Projekt PostgreSQL- oder MySQL-JDBC-Treiber verwendet, erkennt CloudCaptain dies automatisch, erstellt die Datenbank durch „Database auto-provisioning“ und konfiguriert die Datenquelle in der Konfiguration von Play. In der dev Umgebung wird es eine VM mit einer konfigurierten Datenbank starten. Für test und prod Umgebungen wird automatisch eine Verbindung zu einer AWS RDS-Instanz mit einer oder mehreren AWS-AZs hergestellt.

Wenn Sie nicht explizit eine Datenbankverbindung zur Datenquelle von CloudCaptainherstellen wollen, können Sie Umgebungsvariablen verwenden, die der erstellten VM übergeben werden.

  • BOXFUSE_DATABASE_URL – database JDBC url
  • BOXFUSE_DATABASE_USER – username
  • BOXFUSE_DATABASE_PASSWORD – password

Eine weitere nützliche Variable ist BOXFUSE_HOST_IP. Sie steht für die IP-Adresse Ihres Host-Rechners. Damit können Sie eine Verbindung zu einer Datenbank herstellen, die auf Ihrem Rechner über LAN gehostet wird – es funktioniert also nur in einer dev Umgebung. Wenn Sie „Database auto-provisioning“ nicht verwenden wollen, sollten Sie -db.type=none Ausführungsbefehl hinzufügen.

Konfiguration abspielen

Since CloudCaptain runs Play application in production mode you will need to set Play’s application secret in application.conf. Next thing that needs to be set is allowed hosts filter. Sie müssen Verbindungen von allen IPs zulassen. Er sollte wie folgt aussehen:

play.filters.hosts.allowed = ["."] 

 

Gebäude Play Anwendung

Nach der Konfiguration ist es nun an der Zeit, Ihre Anwendung zu erstellen. Sie müssen cd in das Hauptverzeichnis Ihrer Anwendung kopieren und ausführen:

sbt clean dist 

Dieser Befehl entfernt frühere Build-Daten und erstellt ein .zip Archiv mit Ihrer aktuellen Anwendungsversion. Es enthält auch alle Konfigurationsdateien.

Running and deploying application to AWS

Es ist an der Zeit, Ihre Anwendung in der dev Umgebung auszuführen – lokal auf Ihrem Rechner. Sie müssen den unten aufgeführten Befehl aus dem Hauptverzeichnis Ihres Projekts ausführen.

boxfuse run -env=dev 

Dieser Befehl verschmilzt Ihre gepackte Play-Anwendung mit CloudCaptains minimalem VM-Image und führt sie lokal aus. Wie bereits erwähnt, sollten Sie -db.type=none zum obigen Befehl hinzufügen, wenn Sie „Database auto-provisioning“ nicht verwenden möchten.

Wenn Sie bereit sind, Ihre Anwendung in der prod Umgebung von AWS bereitzustellen, müssen Sie sie nur noch ausführen:

boxfuse run -env=prod 

 

Anwendungsaktualisierungen auf AWS

CloudCaptain unterstützt Blue/Green Deployment. Diese Methode zur Freigabe von Anwendungen ermöglicht Aktualisierungen ohne Ausfallzeiten. Es wird ein neuer Knoten erstellt, auf dem eine neue Version Ihrer Anwendung läuft und der gesamte Datenverkehr schrittweise dorthin verlagert wird.

Um Ihre Anwendung in der Produktion zu aktualisieren, müssen Sie nur die Versionsnummer der Anwendung in der Konfigurationsdatei erhöhen, sie mit demselben Befehl wie zuvor erstellen und ausführen:

 

boxfuse run -env=prod 

 

Wichtiger Hinweis!

Stellen Sie sicher, dass Sie Ihre Anwendung mit der gleichen Java-Version ausführen, mit der Sie sie erstellt haben. CloudCaptain wird standardmäßig die neueste OpenJDK-Version verwenden. Sie können dies außer Kraft setzen, indem Sie -components.openjdk=x.x.x zum boxfuse run runcommand hinzufügen, wobei x.x.x die OpenJDK-Version steht.