Microservices ist ein Trend zur feiner werdenden Modularisierung von Applikationen. Während früher teilweise sogar mehrere Anwendungen auf einem Application Server deployed wurden, laufen die Module zunehmend in eigenen Prozessen. Die Vorsilbe "Micro" drückt den Trend aus, die Modularisierung in immer kleinere Einheiten zu unterteilen.
Eigenschaften#
Vorteile sind:- Aktualisierbarkeit: Aktualisierung einzelner Module, sogenannte Continuous Delivery
- Redundanz: Mehrere Instanzen des gleichen Moduls laufen zur gleichen Zeit
- Skalierbarkeit: Die Anzahl der Modulinstanzen kann nach Bedarf angepasst werden. Bei hoher Last starten zusätzliche Module, bei geringerer Last wird die Zahl laufender Module verringert.
- Überwachung: Durch die externe Kommunikation (meist HTTP/JSON) kann in komplexen Systemen eine Übersicht des laufenden Betriebs erstellt werden. Beispiel ist Hystrix mit Turbine.
Nachteile sind:
- Overhead: Die Verteilung benötigt mehr Ressourcen, mehr Prozesse, mehr Speicher und mehr CPU um dieselben Aufgaben durchzuführen, als dies mit einer monilithischen Anwendung der Fall wäre.
Umsetzung#
Die Intersult arbeitet gegenwärtig hauptsächlich mit folgenden Technologien:Service | Implementierung |
---|---|
Prozess Container | Spring Boot |
Control Flow | Project Reactor |
Web Stack | WebFlux |
Service Discovery | Spring Cloud Netflix |
Betriebssystem | Ubuntu |
Virtualisierung | Docker |
Continuous Delivery | Jenkins |
Edge Service | Spring Cloud Gateway |
Reverse Proxy | Apache HTTPD |
Database | MongoDB and MySQL |
Message Broker | RabbitMQ |
Repository | Sonatype Nexus |
Code Management | Apache Subversion |