java

Optimierung von Docker-Images für Java

Docker ist eine beliebte Technologie zur Erstellung von Laufzeitumgebungen für Server und ganze Systeme. Docker-Images lassen sich leicht verteilen, bereitstellen und starten. Doch gerade bei der Verteilung profitiert man von schlanken Images - große Images benötigen Zeit zur Übertragung, besonders wenn dies häufig geschieht, kann dies einen echten Einfluss auf die Entwicklungsgeschwindigkeit haben. In diesem Artikel werde ich einige bewährte Verfahren zur Reduzierung oder Optimierung der Bildgröße vorstellen.

Weiterlesen

Cognito-basierte Authentifizierung für durch CloudFront geschützte Ressourcen

Cognito ist ein relativ neues Angebot zur Identitätsverwaltung für Apps und Dienste, einschließlich Profilverwaltung und Multi-Faktor-Authentifizierung. CloudFront ist der Content Delivery Network-Dienst von Amazon Web Services. CloudFront bietet sowohl öffentlich zugänglichen als auch privaten Inhalt. Privater Inhalt kann über entweder signierte URLs oder signierte Cookies zugegriffen werden. Cognito generiert jedoch OAuth-Zugriffstoken. Dieser Artikel beschreibt, wie man einen Dienst zum Erstellen signierter Cookies für Cloudfroint mithilfe der Zugriffskontrolle von Cognito erstellt.

Weiterlesen

Integrationstests von Mikroservices

Integrationstests sind die zweitwichtigste Phase in Continuous Integration und Delivery. Es ist das erste Mal, dass mehrere Komponenten miteinander interagieren. Der aktuelle Trend zu Mikroservice-Softwarearchitekturen erfordert ein neues Denken hinsichtlich der Integrationstests verteilter Systeme. In diesem Artikel möchte ich über die Herausforderungen beim Testen dieser Architekturen reflektieren. In monolithischen Anwendungen sind Komponenten oder Teile eng gebündelt. Inkompatibilitäten können oft bereits während der Kompilierung erkannt werden. Komponenten interagieren miteinander durch Nachrichten, die lokal übertragen werden, d.

Weiterlesen

Patterns zum Umgang mit Legacy Code: ServiceLoader

Legacy Code ist Code, der nicht nach aktuellen Massstäben der Software-Entwicklung entwickelt wurde, nicht mehr gewartet wird und häufig nicht oder unzureichend dokumentiert wird. Aber auch externe, proprietäre closed source Libraries genügen häufig diesen Kriterien. Oftmals wird dieser Code jedoch nach wie vor betrieben und muss auch hin und wieder angepasst werden, z.B. um regulatorischen Anforderungen nachzukommen. Legacy Code kommt häufig in der Form eine CLOBs daher. Eine undefinierte Masse an Codezeilen, von der keiner mehr weiss, was er tut.

Weiterlesen

Mixins mit Java

Unter Mixins versteht man zusätzliche Funktionalität, die einer Klasse hinzugefügt werden kann. Sie sind eine spezielle Form der Mehrfachvererbung, bei der Eigenschaften oder Verhalten von mehreren „Eltern“ geerbt werden. Mit Mixins lassen sich zwei Problemgebiete lösen: Man möchte viele Optionale Features für eine Klasse anbieten Man möchte ein bestimmtes Feature für viele verschiedene Klassen anbieten Mit Hilfe von Mixins lassen sich Domain Modelle einfach halten, indem nur die essentiellen Eigenschaften definiert werden und optionale Eigenschaften über Mixins hinzugefügt werden können.

Weiterlesen