Wie kann man Microservices mit dem Java Framework Spring und Docker zur Container Virtualisierung benutzen. Wurde vorgetragen in der Java Usergroup München
2. ÜBER MICH…
Dipl.-Inf(FH) Jörg Jackisch
Twitter: @c0da86
E-Mail: jackisch.joerg@gmail.com
LinkedIn, Xing, ...
Diplom-Informatiker
Teamleiter / Manager / Projektleiter
Developer / Architekt
Autor
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 2
3. INHALT
• Microservices
• Docker
• Spring
• Spring + Docker = Microservices?
• Beispiel
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 3
4. MICROSERVICES
• Wieder ein neues Buzzword?
• Durch SOA lose Kopplung schon vorhanden.
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 4
5. MICROSERVICES
• Wieder ein neues Buzzword?
• Neue Architektur Methode um Komponenten in der Software
noch weniger voneinander abhängig zu machen
• Sehr hohe Abstraktion basierend auf Fachlichkeitssäulen
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 5
8. MICROSERVICES
• Ziel von Microservices ist das aufbrechen von Abhängigkeiten
• Monolithische Software wird dabei zerlegt in kleinste
eigenständige Services
Do one thing and do it well
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 8
9. MICROSERVICES
• Zerlegung in sehr kleine (Micro) fachliche Services
• Sehr lose Kopplung der Komponenten
• Services sind einzeln installierbar und upgradebar
• Dezentrale Datenhaltung
• Hoher Freiheitsgrad bei der Technologieauswahl
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 9
10. MICROSERVICES | PRO & CONS
Pro:
Testbarkeit
Wartbarkeit
leichter weiterzuentwickeln
Services sind einzeln Skalierbar
Con:
mehr Infrastruktur / mehr Loadbalancer / lokale Tests sind
weniger aussagekräftig
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 10
11. MICROSERVICES |
ANTIPATTERN
• Wiederverwendbarkeit
• Services sollten nur
untereinander per HTTP REST
kommunizieren, es gibt feste
Fachlichkeitssäulen
• Machen Änderungen schwerer
• Machen Tests schwerer
• Erhöhen wieder die
Abhängigkeiten 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 11
12. MICROSERVICES |
ANTIPATTERN
• Orchestrierung
• Aus der SOA Welt, ein ESB und
alle liefern die Daten
• Jeder Service sollte unabhängig
weiterentwickelbar, testbar und
deploybar sein („self-contained“)
• Auch unabhängig von der
Middleware
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 12
13. MICROSERVICES
• Unternehmen welche Microservices einsetzen
• Netflix
• Amazon
• Twitter
• Spotify
• Zalando
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 13
14. MICROSERVICES | NETFLIX SERVICE-
BLUEPRINT
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 14
15. DOCKER
• Containervirtualisierung
• Dockerfile
• Auf Basis von Images
• Sehr schnelles starten von virtuellen Maschienen (Containern)
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 15
16. DOCKER
• Remote Repository docker-hub (hub.docker.com)
• Lokales Repository
• Images werden entweder aus dem remote Repository geholt
und in das lokale abgelegt oder per „Dockerfile“ erstellt und in
das lokale Repository abgelegt
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 16
17. DOCKER
• Durch die Einführung von Microservices werden große
Herausforderungen an die Infrastruktur gestellt
• Erreichbarkeit der Services
• Deployment
• Automatisierte Tests
• Mockups der abhängigen Services
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 17
18. DOCKER
• Man kann sehr schnell und einfach UND automatisiert heraus
Docker Container starten
• Auch aus einem Jenkins Deployment Prozess
• Benötigte Ressourcen, zum Testen und Deployen können mit Hilfe von
Docker automatisiert erstellt werden
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 18
19. SPRING
• Spring.io Sammlung von unterschiedlichen Bibliotheken
• Für Microservices
• Spring Boot
• Spring Cloud
• Spring Cloud Data Flow
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 19
20. SPRING | SPRING CLOUD
• Einbinden per Maven, baut auf Spring Boot auf
• Konfigurations Management
• Intelligentes Routing
• Verteiltes Session Management
• Service-to-service calls
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 20
21. SPRING | SPRING CLOUD
• Spring Cloud Config dient als zentraler Configurations Service
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 21
22. SPRING | SPRING CLOUD
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 22
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
23. SPRING | SPRING CLOUD FLOW
• Einbinden per Maven
• Geeignet für den Nachrichten Austausch zwischen den Services
• Nutzt das Spring Cloud Stream oder Spring Cloud Task
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 23
24. DOCKER + SPRING = MICROSERVICES?
• Klingt einfacher als es tatsächlich ist
• Viel Konfigurationsaufwand
• Viel Aufwand für unterschiedliche Abteilungen / Bereiche
DEVOPs
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 24
25. DOCKER + SPRING = MICROSERVICES?
• Durch Spring CLOUD und Docker, ergeben sich viele Vorteile
• Automatisches Deplyoment in der verteilten Umgebung
• Komplette horizontale Skalierbarkeit, durch Docker und Spring
Cloud
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 25
26. BEISPIEL EINKAUFSZETTEL
• Usermanagement (anmelden, Login, Logout)
• Sessionmanagement
• Einkaufszettel Service (CRUD)
• Artikel Service (CRUD)
• Statistik
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 26
29. BEISPIEL EINKAUFSZETTEL
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 29
• Kommunikation zwischen den Services per HTTP-REST
• Asynchron per Message Broker -> kann zu Problemen der
Persistenz führen
• Jeder Service hat seine eigene Datenbank, daher sind alle
unabhängig vom Technologie Stack und der Datenhaltung
30. BEISPIEL EINKAUFSZETTEL
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 30
• Spring Cloud unterstützt mit seiner Vielzahl an tools, diese
verteilte Umgebung zu entwickeln und zu deployen
• Spring Cloud Config, kann dynamisch unterschiedliche
Konfigurationsvarianten benutzen
• Eureka Server unterstützt Service Discovery
• Ribbon, Hytrix, Feign
34. VIELE DANKE FÜR IHRE AUFMERKSAMKEIT
• Fragen???
Slideshare
GitHub
Twitter: @c0da86
E-Mail: jackisch.joerg@gmail.com
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 34