Suche
Besser containern

AWS Serverless Java Container – Update auf Version 1.1

Marcel Richters
AWS Container

© Shutterstock.com / cherezoff

AWS Serverless Java Container ist eine Bibliothek für den Betrieb von Anwendungen aus Frameworks wie Spring, Jersey oder Spark über AWS Lamda und Amazon-API-Gateways. Das Update auf Version 1.1 bringt einige Bugfixes und soll die Performance insbesondere beim Kaltstart von Anwendungen verbessern.

Mit den AWS Serverless Java Cointainern sollen sich Anwendungen, die auf Frameworks wie Spring, Jersey und Spark basieren, besonders leicht über AWS Lambda und das Amazon API Gateway betreiben lassen. Dafür definiert die Bibliothek laut AWS selbstständig Schnittstellen und abstrakte Klassen, um die jeweiligen Frameworks zu unterstützen.

Serverless Java Container startet Frameworks als Container und übersetzt für das Framework ankommende API-Gateway-Proxy-Ereignisse in ein akzeptiertes Anfrageformat wie HTTPServerletRequest oder ContainerRequest. Die HTTP Responses aus den Frameworks übersetzt die Bibliothek dann in Objektstrukturen, die das API Gateway von Lambda erwartet.

AWS Serverless Java Container 1.1: Das ist neu

Mit der Version 1.1 erhält AWS Serverless Java Cointainer ein Performance-Update. Besonders die Latenz beim Kaltstart soll sich hierdurch verbessern. Dafür wurde sämtlicher Setup-Code in die Initialisierungsmethode static verschoben. Der Code für das Erstellen eines Handlers kann mithilfe der entsprechenden Anleitung in einen static-Block inkludiert werden, um die verringerte Latenz zu erreichen:

private static SpringBootLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler;
static {
    try {
        handler = SpringBootLambdaContainerHandler.getAwsProxyHandler(Application.class);
    } catch (ContainerInitializationException e) {
        e.printStackTrace();
    }
}

Die Profile für Spring verfügen jetzt über eine neue static-Methode, welche einen ConfigurableWebApplicationContext ebenso erhält, wie eine vararg-Liste mit Profilnamen. Diese Methode soll sicherstellen, dass Applikationen nur einmal mit dem korrekten Profil geladen werden.

AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
applicationContext.register(PetStoreSpringAppConfig.class);
handler = SpringLambdaContainerHandler.getAwsProxyHandler(applicationContext, "profile-1", "profile-2");

Ebenfalls neu ist, dass der Spring-Kontext neu geladen und die nachfolgende Anfrage verlangsamt wird, wenn Profile gesetzt werden, nachdem der Handler mit der activateSpringProfiles-Methode initialisiert wurde. Außerdem wurde die Initialisierung von ObjectMapper, ObjectReader und ObjectWriter auf den LambdaContainerHandler-Constructor verschoben. Zu guter letzt enthalten Archetypen und Beispiele für Spring jetzt den spring-context-indexer als Dependency.

Zusätzlich zu den oben erwähnten Änderungen und Neuerungen enthält das Update noch einige Bugfixes. Die kompletten Release Notes finden sich bei GitHub, dort ist auch der Source Code für das Update verfügbar. Wer sich die Bugfixes genauer ansehen möchte, wird dort ebenfalls fündig.

Geschrieben von
Marcel Richters
Marcel Richters
Marcel hat Soziologie an der Goethe-Universität in Frankfurt am Main studiert und danach als E-Commerce-Manager gearbeitet. Seit Februar 2018 unterstützt er das Team von JAXenter als Redakteur. Daneben arbeitet er als freier Journalist in der Mainmetropole.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.