MICROSERVICES
UMGESETZT MIT HILFE VON DOCKER UND SPRING
JÖRG JACKISCH
JUGM, 04.09.2017
Ü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
INHALT
• Microservices
• Docker
• Spring
• Spring + Docker = Microservices?
• Beispiel
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 3
MICROSERVICES
• Wieder ein neues Buzzword?
• Durch SOA lose Kopplung schon vorhanden.
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 4
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
MICROSERVICES
• SOA Pyramide
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 6
MICROSERVICES
• Fachlichkeitssäulen
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 7
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
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
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
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
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
MICROSERVICES
• Unternehmen welche Microservices einsetzen
• Netflix
• Amazon
• Twitter
• Spotify
• Zalando
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 13
MICROSERVICES | NETFLIX SERVICE-
BLUEPRINT
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 14
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
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
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
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
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
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
SPRING | SPRING CLOUD
• Spring Cloud Config dient als zentraler Configurations Service
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 21
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);
}
}
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
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
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
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
BEISPIEL EINKAUFSZETTEL
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 27
BEISPIEL EINKAUFSZETTEL
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 28
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
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
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 31
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 32
• Install Supervisor
• Install docker Compose
• docker-compose.yml
• Docker-compose up -d
DOCKER
22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 33
• localhost:80 - Gateway
• localhost:8761 - Eureka Dashboard
• localhost:9000 - Hystrix Dashboard
• localhost:8989 - Turbine stream (source for Hystrix Dashboard)
• localhost:15672 - RabbitMq management
DOCKER
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

Microservices mit Spring und Docker

  • 1.
    MICROSERVICES UMGESETZT MIT HILFEVON DOCKER UND SPRING JÖRG JACKISCH JUGM, 04.09.2017
  • 2.
    ÜBER MICH… Dipl.-Inf(FH) JörgJackisch 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 einneues Buzzword? • Durch SOA lose Kopplung schon vorhanden. 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 4
  • 5.
    MICROSERVICES • Wieder einneues 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
  • 6.
    MICROSERVICES • SOA Pyramide 22.02.2018MICROSERVICESUMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 6
  • 7.
    MICROSERVICES • Fachlichkeitssäulen 22.02.2018MICROSERVICES UMGESETZTMIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 7
  • 8.
    MICROSERVICES • Ziel vonMicroservices 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 insehr 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 welcheMicroservices einsetzen • Netflix • Amazon • Twitter • Spotify • Zalando 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 13
  • 14.
    MICROSERVICES | NETFLIXSERVICE- 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 Repositorydocker-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 dieEinfü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 kannsehr 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 Sammlungvon 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 | SPRINGCLOUD • 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 | SPRINGCLOUD • Spring Cloud Config dient als zentraler Configurations Service 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 21
  • 22.
    SPRING | SPRINGCLOUD 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 | SPRINGCLOUD 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
  • 27.
    BEISPIEL EINKAUFSZETTEL 22.02.2018MICROSERVICES UMGESETZTMIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 27
  • 28.
    BEISPIEL EINKAUFSZETTEL 22.02.2018MICROSERVICES UMGESETZTMIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 28
  • 29.
    BEISPIEL EINKAUFSZETTEL 22.02.2018MICROSERVICES UMGESETZTMIT 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 UMGESETZTMIT 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
  • 31.
    22.02.2018MICROSERVICES UMGESETZT MITSPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 31
  • 32.
    22.02.2018MICROSERVICES UMGESETZT MITSPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 32 • Install Supervisor • Install docker Compose • docker-compose.yml • Docker-compose up -d DOCKER
  • 33.
    22.02.2018MICROSERVICES UMGESETZT MITSPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 33 • localhost:80 - Gateway • localhost:8761 - Eureka Dashboard • localhost:9000 - Hystrix Dashboard • localhost:8989 - Turbine stream (source for Hystrix Dashboard) • localhost:15672 - RabbitMq management DOCKER
  • 34.
    VIELE DANKE FÜRIHRE 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