Posts

Posts mit dem Label "Microservice" werden angezeigt.

Monolithische Systeme in Microservices und Self-Contained Systems zerlegen

Bild
Wie schaffen wir es komplexe monolithische Systeme so zu zerlegen, dass die einzelnen Sub-Systeme leicht und unabhängig voneinander entwickelt werden können? In diesem Erfahrungsbericht zeige ich, wie wir ein Shopping-Portal in Microservices und Self-Contained-Systems (SCS) zerlegt haben. Der Artikel ist ein Erfahrungsbericht und beschreibt nur unseren Weg. Es gibt hier sicherlich viele alternative Lösungen. Mit Sicherheit gibt es auch rein Microservice-basierte Architekturen, welche die hier gezeigten Probleme lösen könnten. Video-Präsentation zum Artikel Ausgangssituation: der Monolith Monolithen werden in der IT häufig als einzelnes System beschrieben, das alle Funktion beinhaltet, siehe  https://www.itwissen.info/Monolithische-Software-Architektur.html . Nach dieser Definition hätten wir eigentlich kein Problem, da ich hier ein Content-basiertes Shopping-System betrachte, welches diverse Backend-Systeme über REST-APIs aufruft, die Teile der Funktionalität bereitstellen, z.B. einen

Microservices mit REST-API in Kotlin und Spring Boot

Bild
Ein angenehmer Aspekt von Microservices ist, dass ihre Entwicklung häufig auf der grünen Wiese startet. Ein neuer Microservice ist also immer eine Chance einen neuen Technologie-Stack auszuprobieren. Für eingefleischte Java-Entwickler bietet sich dazu die Programmiersprache Kotlin an.  Als JVM basierte Programmiersprache kann Kotlin problemlos das bei Java-Entwicklern beliebte Spring Framework verwenden. Daher zeige ich in diesem Artikel, wie ihr mit Spring Boot schnell einen Kotlin Microservice mit REST-API aufsetzt. Neuer Microservice, die Gelegenheit mit Kotlin anzufangen... In meinem beruflichen Umfeld entwickeln wir deutlich häufiger neue Microservices als neue Systeme mit klassischen Software-Architekturen oder als Monolithen. Da sich Microservices auf eine Geschäfts-Capability konzentrieren, siehe auch https://www.martinfowler.com/microservices , ist ihre Codebase im Vergleich zu herkömmlichen Systemen meist deutlich kleiner. Die Situation, einen neuen Microservice auf der grüne

SSH-Tunnel zur Vergrößerung der Entwicklungsumgebung

Bild
In diesem Artikel zeige ich euch, wie ihr SSH benutzt, um Server zu erreichen und mit eurer Entwicklungsumgebung zu verbinden. Auf diese Weise kann ich die in meiner IDE gestartete Anwendung durch einen SSH-Tunnel z.B. mit der Datenbank in unserer Testumgebung verbinden, um die dort vorhandenen Testdaten zu nutzen. Setup Auf meinen Windows Notebook verwende ich meist putty oder eine emulierte Linux Bash, wie zum Beispiel die Git BASH: Putty:  https://putty.org/ Git BASH: https://gitforwindows.org/ In diesem Artikel werde ich mich auf die Linux basierte Variante konzentrieren. SSH in der Linux Shell Vermutlich kennt ihr SSH schon, daher verlinke ich hier auch nur zu Wikipedia . Im folgenden zeige ich, wie man sich mittels private-public-Key mit einem SSH-Service verbindet. Dazu muss auf der Server-Seite der öffentliche Schlüssel (public Key), passend zum privaten Schlüssel (private Key) hinterlegt sein. SSH Agent starten und private Key laden Zuerst benötigen wir einen laufenden SSH Age

Microservices mit Spring Boot erstellen

Bild
In der Java-Welt ist Spring eines der meist genutzten Frameworks. Spring Boot bietet einen vereinfachten, schnellen Einstieg in die Entwicklung mit Spring. Wie man loslegt, wird in diesem Tutorial gezeigt. Spring Tool Suite installieren In unserer bevorzugten IDE Eclipse 😉, kann man die Spring Tools 4 einfach über den Eclipse Marketplace installieren. Dazu im Menu folgendem Klickpfad folgen: Help => Eclipse Marketplace... In diesem Blog-Post wird beschrieben, wie man Eclipse und Maven installiert und konfiguriert (inklusive Proxy für Konzern Mitarbeiter):  eclipse-als-ide-fur-java-spring.html Dann einfach nach "Spring Tools" suchen und man findet mehrere Versionen der Spring Tools. Bitte Version 4 bzw. die neuste installieren. Beim Installieren muss man nicht viel beachten: Lizenzen akzeptieren und Next-Button klicken. Hier ist es z.B. mit ein paar Screenshots gezeigt: https://www.codejava.net/ides/eclipse/install-spring-tool-suite-for-existing-eclipse-ide   In der  Intel

Java Anwendungen im Docker Container

Bild
Jede Java Anwendungen bauen, ausliefern und überall ausführen - klingt super und geht mit Docker! Ich zeige euch, wie ihr möglichst einfach und schnell in die Docker Welt einsteigt. Wir bauen ein Docker Image mit einer Java Anwendung, starten den eigenen Container lokal und testen die Anwendung im Container. Installationen und Vorbereitung Um die Voraussetzungen für den Einstieg in die Docker Welt zu schaffen, müssen wir folgendes tun: Docker für Windows installieren, siehe:  https://docs.docker.com/docker-for-windows/install/ Wenn ihr Linux oder MacOS nutzt, findet ihr auf der Docker Webseite auch passende Anleitungen. Eine Java-Anwendung schreiben, die dann in den Container kommt 😄 Falls ihr gerade keine zur Hand habt, könnt ihr diese verwenden: https://github.com/elmar-brauch/thymeleaf   Im Prinzip funktioniert es mit jeder beliebigen Java-Anwendung. Hier in der Demo nutze ich Vorteile von Spring Boot, um eine möglichst einfache Demonstration machen zu können. Docker Image bauen N

AWS lambda Services mit Spring Boot erstellen

Bild
Amazon Web Services ermöglicht mit Lambda Services Code-Ausführung ohne (eigenen) Server - serverless. Hier wird gezeigt, wie man Lambda Code in Java mit Spring Boot erstellt bzw. wie man ein RestContoller-basiertes Hello World mit AWS Lambda und Spring Boot erstellt.  Spring Boot Lambda Projekt mit Maven Archetype generieren Die AWS Labs bieten ein Maven Archetype Template an, mit dem man sich einfach ein neues Spring Boot Projekt generieren kann. Wenn man Maven installiert und in seiner Shell eingerichtet hat, kann man einfach folgenden Befehl ( Achtung vorher Zeilenumbrüche entfernen ) ausführen: mvn archetype:generate -DgroupId=de.demo  -DartifactId=aws-demo -Dversion=0.0.1 -DarchetypeGroupId= com.amazonaws.serverless.archetypes   -DarchetypeArtifactId= aws-serverless-springboot2-archetype   -DarchetypeVersion= 1.5.1 Das neue Projekt wird im selben Verzeichnis erstellt, in dem auch der Befehl ausgeführt wurde. 💣Archetype Version 1.5.1 generiert einen Bug in der pom.xml Datei, weit