© Excellent backgrounds/Shutterstock.com
Java Magazin
Mit Docker und Spring Cloud Netflix eine elegante und effiziente Microservices-Architektur realisieren

Infrastruktur neu gedacht

Wie so häufig liegen Licht und Schatten sehr nahe beieinander, dies gilt auch für Microservices-Architekturen in Kombination mit Docker. Anhand konkreter Praxisbeispiele wollen wir zeigen, wie die Technologien im Zusammenspiel funktionieren und wie damit schlanke, elegante und zukunftsweisende Architekturen umgesetzt werden können. Wichtig dabei: Wir haben es hier nicht nur mit einem reinen Technologiethema zu tun; ein Umdenken alter Prinzipien ist erforderlich. Doch wer diesen Weg geht, hat viel gewonnen.

Henning Ziburski


Neben den vielen Vorteilen, die eine verteilte Microservices-Architektur mit sich bringen kann, gilt es auch, für die damit entstehenden Herausforderungen Lösungen zu finden [1]. Im Vergleich zu klassischen monolithischen Anwendungen sind die einzelnen Microservices für sich gesehen jeweils nicht sonderlich komplex. Einen großen Overhead bringt jedoch die für Microservices benötigte Infrastruktur mit sich. Anstatt eines Application Servers für die gesamte Anwendung, muss für jeden Microservice ein eigener Application Server installiert, konfiguriert und betreut werden. Für die Kommunikation unter den einzelnen Microservices muss eine Lösung zur Service Discovery implementiert werden, und um angemessen auf Fehler und Latenzprobleme in einem verteilten System reagieren zu können, Techniken wie ein Circuit Breaker eingesetzt werden. Dieser Overhead an erforderlicher Infrastruktur kann vor allem kleinere Teams und Start-ups schnell vor ein großes Problem stellen.

Spring Cloud Netflix

Ebendiese Herausforderungen, die durch einen erhöhten Infrastrukturaufwand resultieren, versucht Spring Cloud Netflix zu lösen [2]. Spring Cloud Netflix basiert auf Spring Boot und stellt die vielfach im produktiven Einsatz erprobte Netflix OSS [3] für Spring-Boot-Anwendungen zur Verfügung. Durch die Integration der Netflix-Bibliotheken in Spring Cloud wird die ansonsten sehr komplexe Implementierung einer Microservices-Architektur deutlich vereinfacht.

Abb. 1: Übersicht der Spring-Cloud-Netflix-Komponenten

Momentan beinhaltet das Spring-Cloud-Netflix-Projekt folgende Technologien der Netflix OSS (Abb. 1). Mit den zur Verfügung gestellten Technologien (in Abb. 1 blau hinterlegt), wird im Folgenden ein URL-Shortener-Service in einer Microservices-Architektur als Demoapplikation entwickelt und als Docker-Container bereitgestellt. Die Demoapplikation ist im GitHub Repository [4] verfügbar.

Service Registry

In einer Microservices-Architektur sind die einzelnen Services meistens über verschiedene Hosts verteilt, sodass es gilt, sie miteinander bekannt zu machen. Im Grunde ist diese Aufgabe sehr simpel: Es wird lediglich eine Zuordnung der Services zum Host und Port der einzelnen Instanzen benötigt. In einer Microservices-Architektur sollen jedoch bei höherer Last dynamisch weitere Instanzen gestartet bzw. bei geringerer Last heruntergefahren werden können. Hinzu kommt, dass virtuelle Maschinen und Container in vielen Fällen dynamische IP-Adressen verwenden, wodurch eine statische Zuordn...

Java Magazin
Mit Docker und Spring Cloud Netflix eine elegante und effiziente Microservices-Architektur realisieren

Infrastruktur neu gedacht

Wie so häufig liegen Licht und Schatten sehr nahe beieinander, dies gilt auch für Microservices-Architekturen in Kombination mit Docker. Anhand konkreter Praxisbeispiele wollen wir zeigen, wie die Technologien im Zusammenspiel funktionieren und wie damit schlanke, elegante und zukunftsweisende Architekturen umgesetzt werden können. Wichtig dabei: Wir haben es hier nicht nur mit einem reinen Technologiethema zu tun; ein Umdenken alter Prinzipien ist erforderlich. Doch wer diesen Weg geht, hat viel gewonnen.

Henning Ziburski


Neben den vielen Vorteilen, die eine verteilte Microservices-Architektur mit sich bringen kann, gilt es auch, für die damit entstehenden Herausforderungen Lösungen zu finden [1]. Im Vergleich zu klassischen monolithischen Anwendungen sind die einzelnen Microservices für sich gesehen jeweils nicht sonderlich komplex. Einen großen Overhead bringt jedoch die für Microservices benötigte Infrastruktur mit sich. Anstatt eines Application Servers für die gesamte Anwendung, muss für jeden Microservice ein eigener Application Server installiert, konfiguriert und betreut werden. Für die Kommunikation unter den einzelnen Microservices muss eine Lösung zur Service Discovery implementiert werden, und um angemessen auf Fehler und Latenzprobleme in einem verteilten System reagieren zu können, Techniken wie ein Circuit Breaker eingesetzt werden. Dieser Overhead an erforderlicher Infrastruktur kann vor allem kleinere Teams und Start-ups schnell vor ein großes Problem stellen.

Spring Cloud Netflix

Ebendiese Herausforderungen, die durch einen erhöhten Infrastrukturaufwand resultieren, versucht Spring Cloud Netflix zu lösen [2]. Spring Cloud Netflix basiert auf Spring Boot und stellt die vielfach im produktiven Einsatz erprobte Netflix OSS [3] für Spring-Boot-Anwendungen zur Verfügung. Durch die Integration der Netflix-Bibliotheken in Spring Cloud wird die ansonsten sehr komplexe Implementierung einer Microservices-Architektur deutlich vereinfacht.

Abb. 1: Übersicht der Spring-Cloud-Netflix-Komponenten

Momentan beinhaltet das Spring-Cloud-Netflix-Projekt folgende Technologien der Netflix OSS (Abb. 1). Mit den zur Verfügung gestellten Technologien (in Abb. 1 blau hinterlegt), wird im Folgenden ein URL-Shortener-Service in einer Microservices-Architektur als Demoapplikation entwickelt und als Docker-Container bereitgestellt. Die Demoapplikation ist im GitHub Repository [4] verfügbar.

Service Registry

In einer Microservices-Architektur sind die einzelnen Services meistens über verschiedene Hosts verteilt, sodass es gilt, sie miteinander bekannt zu machen. Im Grunde ist diese Aufgabe sehr simpel: Es wird lediglich eine Zuordnung der Services zum Host und Port der einzelnen Instanzen benötigt. In einer Microservices-Architektur sollen jedoch bei höherer Last dynamisch weitere Instanzen gestartet bzw. bei geringerer Last heruntergefahren werden können. Hinzu kommt, dass virtuelle Maschinen und Container in vielen Fällen dynamische IP-Adressen verwenden, wodurch eine statische Zuordn...

Neugierig geworden?


    
Loading...

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