© Spirit Boom Cat/Shutterstock.com
Teil 6: Optimierung bei Containern

Migration nach AWS


In den vorigen fünf Teilen dieser Serie haben wir uns mit der schrittweisen Optimierung einer Three-Tier-Java-Anwendung hin zu einer Serverless-Architektur und der Verschlüsselung von Daten beschäftigt. In diesem Teil der Serie werfen wir einen Blick auf mögliche Optimierungen für Container mit dem Ziel, deren Startzeit und Größe zu verringern.

Nicht alle Runtimes sind gleich. Eine wichtige Frage für Entwicklerteams ist: Besitzt die Anwendung eine Coldstart-Phase, die einen ersten Resource Burst verursacht? Es existieren einige Java Frameworks mit Dependency Injection und Annotation Scanning, die eine sehr intensive Coldstart-Phase verursachen. Aufgrund des dynamischen Wirings werden gerade in der Coldstart-Phase viele Ressourcen benötigt, die aber erst einmal komplett hochgefahren werden müssen. Gerade für Microservices ist es sinnvoll, die Paketgröße so klein wie möglich zu halten. Einige AWS SDKs wie das Java SDK in der Version 2.0 [1] sind modular aufgebaut. Damit können genau die Komponenten ausgewählt werden, die für die Anwendung benötigt werden, wie beispielsweise Module für Amazon DynamoDB und Amazon Kinesis Data Streams. Dies ermöglicht kleinere Paketgrößen und beschleunigt somit die Coldstart-Phase.

Optimierung von Containern

Ein weiterer Weg, um die Größe der Container zu reduzieren, besteht in der Nutzung von Multistage Builds und jlink. Mehrstufige Builds sind eine relativ neue Funktion, die Docker 17.05 oder höher erfordern. Dieses Pattern ist nützlich, um Dockerfiles zu optimieren und sie gleichzeitig leicht lesbar und pflegbar zu halten. Bei mehrstufigen Builds können sich mehrere FROM-Anweisungen im Dockerfile befinden und jede FROM-Anweisung kann ein anderes Basis-Image verwenden. Jede dieser Anweisungen beginnt eine neue Phase des Builds. Artefakte des Builds können selektiv zwischen Stufen kopiert werden, damit die Anzahl der zu kopierenden Dateien begrenzt werden kann.

Vor der Einführung von Multistage Builds war die Situation deutlich kompli...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang