SlideShare ist ein Scribd-Unternehmen logo
Micro-Services
Thomas Krille und Sebastian Mancke
Warum sind monolithische Systeme ‘evil’?
Wegen ihrer Abhängigkeiten!
Warum sind Abhängigkeiten ‘evil’?
• Software ist schwer zu testen!
• Auswirkungen von Änderungen lassen sich nicht sicher begrenzen!
• Arbeiten mit mehreren Teams ist schwierig!
• Systeme lassen sich nicht unabhängig skalieren!
• Individuelle Deploymentzyklen für Features sind aufwändig!
• Unabhängige Skalierung ist nicht möglich!
• Wiederverwendung von fachlichen Teilen ist unmöglich!
Monolithische Software
Monolithen entstehen durch schlechtes Design und den falschen
Umgang mit Abhängigkeiten.
Unabhängig von der Technologie:
• Auch mit Micro Service Frameworks lassen sich Monolithen bauen.
• Auch verteilte Systeme können zu einem Monolithen werden.
• Auch große Systeme mit einem einzelnen .ear können eine interne
gute Architektur haben (filigran und zerlegbar).
Monolithen vermeiden
• Design der fachlichen Anwendung in
unabhängigen Säulen
• Vertikale Teams (End-to-End)
• Maximale Reduktion von Abhängigkeiten
Vertikal denken!
Klassische Herangehensweise
GUI -Layer
Services
Database/Persistance
SOA Herangehensweise
GUI -Layer
Business
Service
DB
Business
Service
Business
Service
Persistence
Service
DB
Persistence
Service
DB
Persistence
Service
DB
Persistence
Service
DB
Persistence
Service
The micro service way ...
GUI
Service
DB
GUI
Service
DB
GUI
Service
DB
GUI
Service
DB
Small with a single responsibility
• Each application only does one thing
• Small enough to fit in your head
– “If a service is bigger than your head, than it is too big”
• Small enough that you can throw them away
– Rewrite or Maintain
Micro-Service-Prinzipien
nach James Lewis:
Located in different VCS roots
• Each application is completelty seperate
• Domain Driven Design / Conway’s law
– Domains in different bounded contexts shoud be distinct - and it is ok
to have duplication
– Use physical separation to enforce this
• There will be common code, but it should be library and
infrastructure code
– Treat it as you would any other open source library
– Stick it in a nexus repo somewhere and treat it as a binary
dependency
Micro-Service-Prinzipien
nach James Lewis:
Kleine Dienste
Keine App-Server
• Service bringt Environment mit
Wenig Code
• “Wegwerf-Services”
• Refactoring = neu Schreiben
Der richtige Stack für die Anforderung
• 1 Monolith -> 1 Stack, 100 Micro Services -> 100 Stacks
• Freie Wahl: OS, Sprache, Framework, Datenbank
Implementierung
Exklusive Datenbank
• Sonst keine lose Kopplung!
• Kann Duplizierung von Daten verursachen
Source Code Management
• 1 Repo für jeden Service
Neues Feature, neuer Service
• Erst prüfen, ob es eine neue fachliche Säule ist
• Dann erst vorhandenen Service erweitern
Implementierung
Alles erlaubt
• Am besten: wenige Standards im gesamtem System
Lose Kopplung
• Services sollten nicht viel voneinander wissen
• Am besten: auch nichts über deren Existenz
Smart Endpoints, Dumb Pipes
• Kommunikationskanal hat keine Intelligenz
• Kein ESB (Verstoß gegen Micro-Services-Prinzipien)
Bevorzugt: Web-Standards
• REST, kein SOAP
Kommunikation
Asynchronous Messaging
• Leichtgewichtig: ØMQ, RabbitMQ
• High Performance: Apache Kafka, Vert.x Event Bus
Resilience
• Toleranz gegenüber Ausfällen, Wiederherstellung nach Fehlern
• Fehlerkaskaden vermeiden
• Testen!
• Tools: Hystrix, JRugged, Netflix Simian Army
API-Versionierung vermeiden
• Schafft mehr Probleme als es löst
• Besser: tolerant bei Annahme von Daten, konservativ beim Senden
Kommunikation
Unit-Tests
• Integrationstests ausreichend, weil Service sehr klein
• Micro Service selbst ist Unit under Test
• In Isolation: Abhängigkeiten (andere Services) mocken
Consumer Driven Tests
• Gut: Service definiert Tests, die API verifizieren
• Besser: API-Konsumenten definieren Tests des Services
• Tests gegen erwartete API, nicht nur behauptete
Testen
Continous Deployment
• Deployment-Pipeline
Alles automatisieren!
• 1 Monolith leicht manuell deploybar, 100 Micro Services nicht
Paketierung
• Auf etablierte Standards setzen
• Init Skripte!
• Tools: DEB, RPM, ...
Installation
• Tools: Puppet, Chef, etc.
Deployment
Docker
• LXC basierte Virtualisierungslösung
• Ähnlich chroot (aber viel besser)
• Schlank und schnell
• Inhalte mit Git versioniert -> Änderungen an ‘VMs’ über git
Gilliam
• Management Plattform für Micro Services
• Basiert auf docker
• Vereinfacht Deklaration und Management
• Portverwaltung, Api-Mapping
• Deklarative Skalierung
Deployment als Plattformen
1 Linux-System <-> 1 Micro Service
Deployment
Komponententests
Entwicklungs/
Testsystem
Produktivsystem
Integrationstests
Dev-
Repo
Control-Center
- Deployment Steuerung
- Monitoring
- Analytics
Prod-
Repo
Echtzeit-Metriken
• Wichtig ist, was jetzt passiert
• Auf Fehler schnell und automatisch reagieren
• Tools: Coda Hale Metrics, Spring Boot Actuator
Logging
• Logs von 100 Services manuell durchforsten nicht möglich
• Logging zentral aggregieren
• Filterung, Echtzeit-Auswertung möglich
• Historie sichtbar, Trends erkennbar
• Tools: Logstash, Apache Flume, fluentd
Visualisierung
Monitoring
Problem: Security-Context über 100 Services
• Security ist auch ein Service
Lösung: IAMs
• Zentrale Verwaltung von Identitäten und Berechtigungen
• Credentials: Tokens, Assertions,
• OAuth, SAML
• OSIAM, Shibboleth
Security
• Inventarisierung vieler Services
• Hohe Anforderungen an Deployment-Prozess
• Hohe Anforderungen an Operations
• Netzwerklast
• Neue Art zu Denken und zu entwickeln
• Freiheit der Technologiewahl darf nicht zu Wildwuchs führen
Risiken und Probleme
Frameworks und Tooling
Spring als Standalone-App
• Inhalt: Servlet Container, “Starter” POMs, Tooling
Ergebnis: Fat-Jar mit main-Methode
• java-jar my-spring-boot-app.jar
Automatische Konfiguration
• Dependency hinzufügen reicht
Production-ready Services
• Actuator: Metriken, Healthchecks, Security Auditing
• Abfrage: JMX, REST, CRaSH
Spring Boot
Spring Boot - Maven
Spring Boot - Java
Asynchrones Netzwerk-Framework
• Non-blocking, event-driven, actor-like
Polyglott
• Java, JavaScript, Groovy, Clojure, Python, Ruby, Scala, …
Modular
• Module für alles
• Apps sind auch Module
(Verteilter) Event-Bus
• Kommunikation aller Verticles nur darüber
• Bis in Browser hinein
Vert.x
Vert.x - Web App
Vert.x - Event Bus
Einfaches, schlankes Java Micro Service Framework
Integration von
• Jetty
• Jackson/Jersey
• Metrics
• Hibernate
• Liquibase
Haupt Features
• Single-jar deplyoment
• Einfache Konfiguration
• REST Support
• Health Checks
• SSL out of the box
• Absicherung von Ressourcen
Dropwizard
http://martinfowler.com/articles/microservices.html
https://speakerdeck.com/timmo/micro-services-die-verheissungen-
konnten-eintreten
http://oredev.org/2013/wed-fri-conference/implementing-micro-
service-architectures
http://www.infoq.com/presentations/Micro-Services
http://projects.spring.io/spring-boot/
http://vertx.io/
https://dropwizard.github.io
http://gilliam.github.io/
Referenzen

Weitere ähnliche Inhalte

Was ist angesagt?

Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg
Lennart Passig
 
Der Arbeitsalltag in einer containerisierten Umgebung
Der Arbeitsalltag in einer containerisierten UmgebungDer Arbeitsalltag in einer containerisierten Umgebung
Der Arbeitsalltag in einer containerisierten Umgebung
x-celerate
 
Continuous Delivery @ FriendScout24 | Webinale 2012
Continuous Delivery @ FriendScout24 | Webinale 2012Continuous Delivery @ FriendScout24 | Webinale 2012
Continuous Delivery @ FriendScout24 | Webinale 2012
Michael Maretzke
 
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
OPEN KNOWLEDGE GmbH
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
OPEN KNOWLEDGE GmbH
 
Einführung in die Software-Qualitätssicherung
Einführung in die Software-QualitätssicherungEinführung in die Software-Qualitätssicherung
Einführung in die Software-Qualitätssicherung
Christian Baranowski
 

Was ist angesagt? (6)

Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg
 
Der Arbeitsalltag in einer containerisierten Umgebung
Der Arbeitsalltag in einer containerisierten UmgebungDer Arbeitsalltag in einer containerisierten Umgebung
Der Arbeitsalltag in einer containerisierten Umgebung
 
Continuous Delivery @ FriendScout24 | Webinale 2012
Continuous Delivery @ FriendScout24 | Webinale 2012Continuous Delivery @ FriendScout24 | Webinale 2012
Continuous Delivery @ FriendScout24 | Webinale 2012
 
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
Einführung in die Software-Qualitätssicherung
Einführung in die Software-QualitätssicherungEinführung in die Software-Qualitätssicherung
Einführung in die Software-Qualitätssicherung
 

Ähnlich wie micro services

DWX Developer Week 2015 - Microservice architecture applied
DWX Developer Week 2015 - Microservice architecture appliedDWX Developer Week 2015 - Microservice architecture applied
DWX Developer Week 2015 - Microservice architecture applied
Ramon Anger
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
Sandro Sonntag
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcos
Ralf Ernst
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application Framework
BATbern
 
Anatomie von Microservice Landschaften
Anatomie von Microservice LandschaftenAnatomie von Microservice Landschaften
Anatomie von Microservice Landschaften
Michael Plöd
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
OPEN KNOWLEDGE GmbH
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
QAware GmbH
 
BATbern41 Microservices@Enterprise
BATbern41 Microservices@EnterpriseBATbern41 Microservices@Enterprise
BATbern41 Microservices@Enterprise
BATbern
 
Cloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
Cloud-Native experience mit einer Container-Plattform im eigenen RechenzentrumCloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
Cloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
TEC Campus
 
Microservices - Do one thing well
Microservices - Do one thing wellMicroservices - Do one thing well
Microservices - Do one thing well
myposter GmbH
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
AboutYouGmbH
 
1. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.20231. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.2023
Johannes Kleinlercher
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickeln
Martin Seibert
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
Virttoo org
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of Life
Kremer Consulting
 
Vorlesung - Cloud Infrastrukturen - Einleitung | anynines
Vorlesung - Cloud Infrastrukturen - Einleitung | anyninesVorlesung - Cloud Infrastrukturen - Einleitung | anynines
Vorlesung - Cloud Infrastrukturen - Einleitung | anynines
anynines GmbH
 
Service Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonService Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-Marathon
Michael Hofmann
 
So hilft ein Enterprise Service Bus, Ordnung in Schnittstellen und Daten zu b...
So hilft ein Enterprise Service Bus, Ordnung in Schnittstellen und Daten zu b...So hilft ein Enterprise Service Bus, Ordnung in Schnittstellen und Daten zu b...
So hilft ein Enterprise Service Bus, Ordnung in Schnittstellen und Daten zu b...
Andrej Radonic
 
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
LeanIX GmbH
 
Public Cloud Erfahrungsbericht SBB
Public Cloud Erfahrungsbericht SBBPublic Cloud Erfahrungsbericht SBB
Public Cloud Erfahrungsbericht SBB
BATbern
 

Ähnlich wie micro services (20)

DWX Developer Week 2015 - Microservice architecture applied
DWX Developer Week 2015 - Microservice architecture appliedDWX Developer Week 2015 - Microservice architecture applied
DWX Developer Week 2015 - Microservice architecture applied
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcos
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application Framework
 
Anatomie von Microservice Landschaften
Anatomie von Microservice LandschaftenAnatomie von Microservice Landschaften
Anatomie von Microservice Landschaften
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
BATbern41 Microservices@Enterprise
BATbern41 Microservices@EnterpriseBATbern41 Microservices@Enterprise
BATbern41 Microservices@Enterprise
 
Cloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
Cloud-Native experience mit einer Container-Plattform im eigenen RechenzentrumCloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
Cloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
 
Microservices - Do one thing well
Microservices - Do one thing wellMicroservices - Do one thing well
Microservices - Do one thing well
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
 
1. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.20231. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.2023
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickeln
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of Life
 
Vorlesung - Cloud Infrastrukturen - Einleitung | anynines
Vorlesung - Cloud Infrastrukturen - Einleitung | anyninesVorlesung - Cloud Infrastrukturen - Einleitung | anynines
Vorlesung - Cloud Infrastrukturen - Einleitung | anynines
 
Service Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonService Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-Marathon
 
So hilft ein Enterprise Service Bus, Ordnung in Schnittstellen und Daten zu b...
So hilft ein Enterprise Service Bus, Ordnung in Schnittstellen und Daten zu b...So hilft ein Enterprise Service Bus, Ordnung in Schnittstellen und Daten zu b...
So hilft ein Enterprise Service Bus, Ordnung in Schnittstellen und Daten zu b...
 
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
 
Public Cloud Erfahrungsbericht SBB
Public Cloud Erfahrungsbericht SBBPublic Cloud Erfahrungsbericht SBB
Public Cloud Erfahrungsbericht SBB
 

Mehr von smancke

micro services architecture (FrosCon2014)
micro services architecture (FrosCon2014)micro services architecture (FrosCon2014)
micro services architecture (FrosCon2014)
smancke
 
crowdgovernance, laterale it governance mit agilen teams
crowdgovernance, laterale it governance mit agilen teams crowdgovernance, laterale it governance mit agilen teams
crowdgovernance, laterale it governance mit agilen teams
smancke
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
smancke
 
Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008
smancke
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)
smancke
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
smancke
 

Mehr von smancke (6)

micro services architecture (FrosCon2014)
micro services architecture (FrosCon2014)micro services architecture (FrosCon2014)
micro services architecture (FrosCon2014)
 
crowdgovernance, laterale it governance mit agilen teams
crowdgovernance, laterale it governance mit agilen teams crowdgovernance, laterale it governance mit agilen teams
crowdgovernance, laterale it governance mit agilen teams
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
 
Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 

micro services