33
Microservices – die Architektur für Agile-Entwicklung? Christian Baranowski

Microservices – die Architektur für Agile-Entwicklung?

Embed Size (px)

Citation preview

Page 1: Microservices – die Architektur für Agile-Entwicklung?

Microservices – die Architektur für Agile-Entwicklung?

Christian Baranowski

Page 2: Microservices – die Architektur für Agile-Entwicklung?

Web - Application Mobile - Application

ApplicationServer

Presentation - LayerB

usiness - LayerD

ata - LayerDatabaseFilesystem …

external Services

Feature

Product Owner

User Stories

Developers & Testers

Scrum Master

Agile Entwicklung und Software Architektur

Page 3: Microservices – die Architektur für Agile-Entwicklung?

Web - Application Mobile - Application

ApplicationServer

Presentation - LayerB

usiness - LayerD

ata - LayerDatabaseFilesystem …

external Services

Product Owner

User Stories

Developers & Testers

Scrum Master

Agile Entwicklung und Software Architektur

Feature

Data Sprint Logic Sprint UI Sprint

Page 4: Microservices – die Architektur für Agile-Entwicklung?

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

-- Melvyn Conway, 1967

Page 5: Microservices – die Architektur für Agile-Entwicklung?

Agile Entwicklung und Software Architektur

Web - Application Mobile - Application

ApplicationServer

Presentation - LayerB

usiness - LayerD

ata - LayerDatabaseFilesystem …

external Services

Feature

Product Owner

UX Team

Middelware Team

DB Team

User Stories

Component Teams

Conway's Law in action

Page 6: Microservices – die Architektur für Agile-Entwicklung?

Agile Entwicklung und Software Architektur

Component Teams

Page 7: Microservices – die Architektur für Agile-Entwicklung?

Web - Application Mobile - Application

ApplicationServer

Presentation - LayerB

usiness - LayerD

ata - LayerDatabaseFilesystem …

external Services

Feature

Product Owner

User Stories

Agile Entwicklung und Software Architektur

Feature Feature

Epics

Feature Teams

Page 8: Microservices – die Architektur für Agile-Entwicklung?

… selbstorganisierte Teams

agile „Features Teams“ sind…

Page 9: Microservices – die Architektur für Agile-Entwicklung?

… Teams die über längere Zeit zusammen „Feature“ realisieren

agile „Features Teams“ sind…

Page 10: Microservices – die Architektur für Agile-Entwicklung?

… Teams die alle notwendigen Arbeiten zur Bereitstellung des „Feature“ verantwortet

agile „Features Teams“ sind…

Page 11: Microservices – die Architektur für Agile-Entwicklung?

… alle Teammitglieder zu 100% einem „Feature“ Team zugeordnet

in agilen „Features Teams“ sind…

Page 12: Microservices – die Architektur für Agile-Entwicklung?

Feature Teams and Agile • Manifesto for Agile Software Development

• Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

• Business people and developers must work together daily throughout the project.

• The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

• The best architectures, requirements, and designs emerge from self-organizing teams.

Page 13: Microservices – die Architektur für Agile-Entwicklung?

…designs emerge from self-organizing teams

Feature Team A Feature Team B Feature Team C

Business Expert

Business Expert

Business Expert

JavaMySQL

TomcatJava

OSGi

jQueryNodeJS

MongoDB

AngularJS

Page 14: Microservices – die Architektur für Agile-Entwicklung?

Microservice Architektur Feature Team A Feature Team B Feature Team C

http://martinfowler.com/articles/microservices.html

How big is a microservice? The largest sizes reported follow Amazon's notion of the Two Pizza Team

Page 15: Microservices – die Architektur für Agile-Entwicklung?

Monolithische und Microservice Architekturen

Page 16: Microservices – die Architektur für Agile-Entwicklung?

Loose Kopplung der einzelnen Services in Anwendungen ermöglicht die Aufteilung

der Software in mehrere getrennte Projekte.

Page 17: Microservices – die Architektur für Agile-Entwicklung?

Eine Microservice Architektur ermöglicht agile Lösungen durch die richtige Technologie für das richtige

Probleme. Kurz gesagt Polyglotte Lösungen und Plattformen!

Page 18: Microservices – die Architektur für Agile-Entwicklung?

Einzelne Services lassen sich getrennt Erstellen und in Betrieb nehmen dies

führt zu einfachen und schnellen Continuous Delivery Pipelines.

Page 19: Microservices – die Architektur für Agile-Entwicklung?

Die Teams sind für den gesamten Lebenszyklus des Service verantwortlich von der Entwicklung bis in den Betrieb.

Page 20: Microservices – die Architektur für Agile-Entwicklung?

Abstimmung zwischen den Teams beschränkt sich auf die

Vereinbarung der Schnittstellen und Schnittstellenverträge.

Page 21: Microservices – die Architektur für Agile-Entwicklung?

Abstimmung zwischen den Teams

gemeinsame Datenbank

Feature Team A Feature Team B

Page 22: Microservices – die Architektur für Agile-Entwicklung?

Abstimmung zwischen den Teams

REST API (Service)

Feature Team A Feature Team B

Page 23: Microservices – die Architektur für Agile-Entwicklung?

Abstimmung zwischen den Teams

Link

Feature Team A

Feature Team B

Page 24: Microservices – die Architektur für Agile-Entwicklung?

Abstimmung zwischen den Teams

MQ

Messaging

Feature Team A Feature Team B

Page 25: Microservices – die Architektur für Agile-Entwicklung?

Microservices Baukasten von Netflix

Service AService B

Service B

Eureka

ZuulRibbon Client

Ribbon Client

https://github.com/Netflix/eureka

https://github.com/Netflix/zuul

https://github.com/Netflix/ribbon

Hystrix

https://github.com/Netflix/Hystrix

Page 26: Microservices – die Architektur für Agile-Entwicklung?

Microservice Skalierung

Z axis

– dat

a par

titonin

g

Scale

by sp

litting

simila

r thing

s

X axis – horizontal duplication Scale by cloning

Y axis – functional decomposition

Scaling by splitting different things.

Quelle: THE ART OF SCALABILITY, MARTIN L. ABBOTT & MICHAEL T. FISHER

Page 27: Microservices – die Architektur für Agile-Entwicklung?

Microservices eignet sich nicht für jede Software Architektur. Der Architekturstil

richtet sich besonderes an große Lösungen z.B. Internet Dienste mit

besonderen Anforderungen an Skalierung.

Page 28: Microservices – die Architektur für Agile-Entwicklung?

Eine Microservice Architektur führt zusätzliche Komplexität in

eine Architektur ein, mit der umgegangen werden muss.

Page 29: Microservices – die Architektur für Agile-Entwicklung?

Eine monolithische Architektur ist einfach zu bauen und für

kleine Projekte geeignet.

Page 30: Microservices – die Architektur für Agile-Entwicklung?

Transaktion Management in einer Microservices Architektur mit

unterschiedlichen Datenbanken ist eine große Herausforderung.

Page 31: Microservices – die Architektur für Agile-Entwicklung?

Polyglotte Plattform können auch zu einem Technologie

Dschungel führen.

Page 32: Microservices – die Architektur für Agile-Entwicklung?

Es gibt neben Microservices auch andere Möglichkeiten z.B. Plugin Architekturen wie OSGi die es

ermöglichen Teile getrennt zu bauen.

Page 33: Microservices – die Architektur für Agile-Entwicklung?

Microservices – die Architektur für Agile-

Entwicklung?