Microservices – die Architektur für Agile-Entwicklung?

  • View
    1.662

  • Download
    1

  • Category

    Software

Preview:

Citation preview

Microservices – die Architektur für Agile-Entwicklung?

Christian Baranowski

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

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

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

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

Agile Entwicklung und Software Architektur

Component Teams

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

… selbstorganisierte Teams

agile „Features Teams“ sind…

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

agile „Features Teams“ sind…

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

agile „Features Teams“ sind…

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

in agilen „Features Teams“ sind…

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.

…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

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

Monolithische und Microservice Architekturen

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

der Software in mehrere getrennte Projekte.

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

Probleme. Kurz gesagt Polyglotte Lösungen und Plattformen!

Einzelne Services lassen sich getrennt Erstellen und in Betrieb nehmen dies

führt zu einfachen und schnellen Continuous Delivery Pipelines.

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

Abstimmung zwischen den Teams beschränkt sich auf die

Vereinbarung der Schnittstellen und Schnittstellenverträge.

Abstimmung zwischen den Teams

gemeinsame Datenbank

Feature Team A Feature Team B

Abstimmung zwischen den Teams

REST API (Service)

Feature Team A Feature Team B

Abstimmung zwischen den Teams

Link

Feature Team A

Feature Team B

Abstimmung zwischen den Teams

MQ

Messaging

Feature Team A Feature Team B

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

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

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.

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

eine Architektur ein, mit der umgegangen werden muss.

Eine monolithische Architektur ist einfach zu bauen und für

kleine Projekte geeignet.

Transaktion Management in einer Microservices Architektur mit

unterschiedlichen Datenbanken ist eine große Herausforderung.

Polyglotte Plattform können auch zu einem Technologie

Dschungel führen.

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

ermöglichen Teile getrennt zu bauen.

Microservices – die Architektur für Agile-

Entwicklung?

Recommended