SlideShare ist ein Scribd-Unternehmen logo
1 von 34
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

Weitere ähnliche Inhalte

Ähnlich wie Microservices mit Spring und Docker

Secure Mobile Cloud Service for personal data with web frontend based on HTML5
Secure Mobile Cloud Service for personal data with web frontend based on HTML5Secure Mobile Cloud Service for personal data with web frontend based on HTML5
Secure Mobile Cloud Service for personal data with web frontend based on HTML5Amir Neziri
 
Warum Monitoring und warum Icinga 2 (Webinar vom 04.12.2013)
Warum Monitoring und warum Icinga 2 (Webinar vom 04.12.2013)Warum Monitoring und warum Icinga 2 (Webinar vom 04.12.2013)
Warum Monitoring und warum Icinga 2 (Webinar vom 04.12.2013)NETWAYS
 
Elasticsearch & docker mit logstash, jdbc und ruby
Elasticsearch & docker mit logstash, jdbc und rubyElasticsearch & docker mit logstash, jdbc und ruby
Elasticsearch & docker mit logstash, jdbc und rubySchanzDieter
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Josef Adersberger
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?QAware GmbH
 
Infrastructure Solution Day | Hybrid
Infrastructure Solution Day | HybridInfrastructure Solution Day | Hybrid
Infrastructure Solution Day | HybridMicrosoft Österreich
 
Cloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und LoesungenCloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und LoesungenDaniel Steiger
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsDirk Steinkopf
 
Public Cloud Erfahrungsbericht SBB
Public Cloud Erfahrungsbericht SBBPublic Cloud Erfahrungsbericht SBB
Public Cloud Erfahrungsbericht SBBBATbern
 
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)Marc Bless
 
Open Source Monitoring mit Icinga 2 (Webinar vom 13.11.2013)
Open Source Monitoring mit Icinga 2 (Webinar vom 13.11.2013)Open Source Monitoring mit Icinga 2 (Webinar vom 13.11.2013)
Open Source Monitoring mit Icinga 2 (Webinar vom 13.11.2013)NETWAYS
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay PortalStefan Hilpp
 
HTTP/2 – Ist das auch gut für java-basierte Webservices?
HTTP/2 – Ist das auch gut für java-basierte Webservices?HTTP/2 – Ist das auch gut für java-basierte Webservices?
HTTP/2 – Ist das auch gut für java-basierte Webservices?JanWeinschenker
 
Autorisierung und Authentifizierung in Microserviceumgebungen
Autorisierung und Authentifizierung in MicroserviceumgebungenAutorisierung und Authentifizierung in Microserviceumgebungen
Autorisierung und Authentifizierung in MicroserviceumgebungenLeanIX GmbH
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker ContainerAndreas Koop
 
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimVorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimAlex Kellner
 
Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Torsten Kleiber
 
Grosse Projekte in der Wissenschaft am Beispiel von NextGEOSS
Grosse Projekte in der Wissenschaft am Beispiel von NextGEOSSGrosse Projekte in der Wissenschaft am Beispiel von NextGEOSS
Grosse Projekte in der Wissenschaft am Beispiel von NextGEOSSWolfgang Ksoll
 
Living on the Edge - Microservices in der Wildnis
Living on the Edge - Microservices in der WildnisLiving on the Edge - Microservices in der Wildnis
Living on the Edge - Microservices in der Wildnismmeisenzahl
 

Ähnlich wie Microservices mit Spring und Docker (20)

Secure Mobile Cloud Service for personal data with web frontend based on HTML5
Secure Mobile Cloud Service for personal data with web frontend based on HTML5Secure Mobile Cloud Service for personal data with web frontend based on HTML5
Secure Mobile Cloud Service for personal data with web frontend based on HTML5
 
Warum Monitoring und warum Icinga 2 (Webinar vom 04.12.2013)
Warum Monitoring und warum Icinga 2 (Webinar vom 04.12.2013)Warum Monitoring und warum Icinga 2 (Webinar vom 04.12.2013)
Warum Monitoring und warum Icinga 2 (Webinar vom 04.12.2013)
 
Elasticsearch & docker mit logstash, jdbc und ruby
Elasticsearch & docker mit logstash, jdbc und rubyElasticsearch & docker mit logstash, jdbc und ruby
Elasticsearch & docker mit logstash, jdbc und ruby
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
 
Infrastructure Solution Day | Hybrid
Infrastructure Solution Day | HybridInfrastructure Solution Day | Hybrid
Infrastructure Solution Day | Hybrid
 
Cloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und LoesungenCloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und Loesungen
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-Tools
 
Public Cloud Erfahrungsbericht SBB
Public Cloud Erfahrungsbericht SBBPublic Cloud Erfahrungsbericht SBB
Public Cloud Erfahrungsbericht SBB
 
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)
 
Open Source Monitoring mit Icinga 2 (Webinar vom 13.11.2013)
Open Source Monitoring mit Icinga 2 (Webinar vom 13.11.2013)Open Source Monitoring mit Icinga 2 (Webinar vom 13.11.2013)
Open Source Monitoring mit Icinga 2 (Webinar vom 13.11.2013)
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay Portal
 
HTTP/2 – Ist das auch gut für java-basierte Webservices?
HTTP/2 – Ist das auch gut für java-basierte Webservices?HTTP/2 – Ist das auch gut für java-basierte Webservices?
HTTP/2 – Ist das auch gut für java-basierte Webservices?
 
Autorisierung und Authentifizierung in Microserviceumgebungen
Autorisierung und Authentifizierung in MicroserviceumgebungenAutorisierung und Authentifizierung in Microserviceumgebungen
Autorisierung und Authentifizierung in Microserviceumgebungen
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimVorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
 
Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020
 
Grosse Projekte in der Wissenschaft am Beispiel von NextGEOSS
Grosse Projekte in der Wissenschaft am Beispiel von NextGEOSSGrosse Projekte in der Wissenschaft am Beispiel von NextGEOSS
Grosse Projekte in der Wissenschaft am Beispiel von NextGEOSS
 
Living on the Edge - Microservices in der Wildnis
Living on the Edge - Microservices in der WildnisLiving on the Edge - Microservices in der Wildnis
Living on the Edge - Microservices in der Wildnis
 

Microservices mit Spring und Docker

  • 1. MICROSERVICES UMGESETZT MIT HILFE VON DOCKER UND SPRING JÖRG JACKISCH JUGM, 04.09.2017
  • 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
  • 6. MICROSERVICES • SOA Pyramide 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 6
  • 7. MICROSERVICES • Fachlichkeitssäulen 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 7
  • 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
  • 27. BEISPIEL EINKAUFSZETTEL 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 27
  • 28. BEISPIEL EINKAUFSZETTEL 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 28
  • 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
  • 31. 22.02.2018MICROSERVICES UMGESETZT MIT SPRING UND DOCKER -- JUGM -- JÖRG JACKISCH 31
  • 32. 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
  • 33. 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
  • 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