Deployment einer Spring Boot Anwendung mit AWS Elastic Beanstalk

AWS Elastic Beanstalk ist eine PaaS (Platform as a Service), mit der benutzerfreundlich Webanwendungen und Services bereitgestellt werden können, ohne die Infrastruktur dahinter zu kennen. Der Entwickler lädt unkompliziert die Anwendung hoch und Elastic Beanstalk erstellt eine entsprechende Umgebung, indem es AWS Ressourcen wie beispielsweise EC2 Instanzen, EC2 Sicherheitsgruppen oder ein S3 Bucket konfiguriert.

In diesem Blog werden wir eine Spring Boot Anwendung als War-File in einen Tomcat Server deployen. Ich habe mich an dieser Stelle bewusst gegen die nahe liegende Variante entschieden, die Anwendung als Jar-File auf einer Java Plattform zu deployen, um zu verdeutlichen, wie komfortabel man eine Anwendung auch als War-File in einen Tomcat Server deployen kann, auch wenn kaum praktische Erfahrungen mit Tomcat und War-Files vorhanden sind. Mit AWS Elastic Beanstalk werden wir sehen, wie einfach sich dies realisieren lässt.

Hierzu habe ich mithilfe des Spring Initializrs eine einfache Spring Boot Anwendung mit einem Endpunkt /status erstellt, der „Hello World“ zurückliefert. Als Packaging habe ich für unseren Anwendungsfall im Initializr War statt Jar ausgewählt. Mit Maven kann dann mit ‚mvn package‘ das War-File gebaut werden.

Als Erstes suchen wir nach Elastic Beanstalk in der AWS Suchleiste und klicken dann auf ‚Create application‘. Im ersten Schritt geben wir unserer Anwendung einen eindeutigen Namen.

Als Plattform wählen wir wie bereits erwähnt Tomcat aus mit Coretto 11, da ich meine Spring Boot Anwendung mit Java 11 entwickelt habe. Die Plattform Version verändern wir nicht. Neben Tomcat stehen unter anderem noch Plattformen wie Docker, Java und Node zur Verfügung.

Im schon letzten Schritt laden wir das zuvor erstellte War-File von unserem lokalen Rechner hoch und klicken auf ‚Create application‘. Es kann nun ein paar Minuten dauern, bis alle Ressourcen hochgefahren sind.

Nach dem erfolgreichen Hochfahren der Umgebung sehen wir eine entsprechende Infomeldung im Abschnitt Recent Events. Mit der links oben im Screenshot zu sehenden URL können wir nun unsere Endpunkte aufrufen und mit unserer Anwendung interagieren.

Wenn wir dann den Endpunkt /status aufrufen, sehen wir, dass „Hello World“ im Browser zu lesen ist und das Deployment der Spring Boot Anwendung erfolgreich war.

Zum Schluss wollen wir uns nun noch einmal kurz damit beschäftigen, was AWS Elastic Beanstalk für uns im Hintergrund alles gemacht hat. Wir mussten ja in den vergangenen Schritten einfach nur die gewünschte Plattform auswählen und unsere Anwendung als War-File hochladen. Unter der Rubrik EC2 sehen wir, dass beispielsweise eine neue Instanz erzeugt wurde, auf der unsere Anwendung läuft. Unter anderem wurden aber auch neue Sicherheitsgruppen oder ein S3 Bucket erstellt, in dem das von uns hochgeladene War-File liegt.

Alternativ zum Deployment einer Spring Boot Anwendung mit Elastic Beanstalk kann also auch selbst ein S3 Bucket und eine EC2 Instanz erstellt werden, wie es hier beschrieben ist. Vorteil von Elastic Beanstalk ist jedoch, dass man intuitiv und mit wenig bis keinen AWS Kenntnissen eine Anwendung in die Cloud deployen kann, ohne sich mit AWS Ressourcen wie EC2 Instanzen oder S3 Buckets herumschlagen zu müssen.

Short URL for this post: https://blog.oio.de/cqM8s
This entry was posted in Build, config and deploy, Java Runtimes - VM, Appserver & Cloud and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *