Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt...

31
© 2014 FNT GmbH FNT SOFTWARE Vom Monolith zur Microservice-Architektur Ein Praxisbericht von FNT Michael Vögeli, Ulrich Vigenschow 6. Juli 2017

Transcript of Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt...

Page 1: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

FNT SOFTWARE

Vom Monolith zur Microservice-Architektur –

Ein Praxisbericht von FNT

Michael Vögeli, Ulrich Vigenschow

6. Juli 2017

Page 2: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Über uns

Michael Vögeli

B. Sc. Computer Science

Über zehn Jahre Erfahrung in der Softwareentwicklung

Seit fast zehn Jahren bei FNT in Ellwangen

Ulrich Vigenschow

Diplom-Informatiker (FH)

13 Jahre in der Softwareentwicklung tätig

Seit 11 Jahren bei FNT

06.07.2017 2

Page 3: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

FNT Software

17-07-06 3

FNT ist ein führender Anbieter eigener integrierter Softwareprodukte für die Dokumentation und

das Management von IT- und Telekommunikationslösungen sowie Rechenzentren weltweit.

Page 4: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Motivation

06.07.2017 4

Erste Versuche bereits anno 1378

Zerlegung eines Monolithen – aber richtig!

Page 5: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Ausgangssituation

Vorstellung des Systems FNT Command

06.07.2017 5

Data Center

Infrastructure

Management

Asset &

Configuration

Management

IT Infra-

structure

Management

Cable

Management

Telecom-

munication

Resource

Inventory

Automobilindustrie

Banken

Versicherungen

Kliniken

Produzierendes Gewerbe

Öffentliche Einrichtungen

Universitäten & Forschung

Flughäfen

Chemie & Pharma

Energieversorger

Telekommunikationsanbieter

Medien & Broadcasting

Page 6: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

06.07.2017Über FNT Software

6

Location Munich Site MoscowData Center New YorkFacility

Managed

Application

Managed

ServerManaged

StorageVoiceVideo Data

Services

ERP CRMLinux

Soft SwitchVideo ServerWindows WebApplications

Virtual Switch

Virtualized

Server Virtualized

Storage

Virtualized

ServerVirtualization

LANStorage

Network MPLSSDHLogical

RackRouter

AntennaCell towerUPS

Humidity Sensor

Fire Detector CableServerPhysical

Business Services

Data Center

Services

Telecommunication

ProductsBusiness

Applications

Ausgangssituation

Vorstellung des Systems FNT Command

Page 7: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Ausgangssituation

Vorstellung des Systems – Die Historie

06.07.2017 7

NFM C6000 FNT Command 9

Restrukturierung

HTML 5 /

Microservices

1996 2012 201620062003

FNT Command 12

Page 8: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Ausgangssituation

Die Architektur

Frontend wie Backend sind Modular aufgebaut

Module werden zur Compile-Zeit eingebunden

Modulabhängigkeiten im Backend durch

Modulübergreifende Fachlichkeit

Monolithische Oracle – Datenbank

Umfangreiche Implementierungen auf allen Ebenen

ActionScript: 350.000 LOC

Java: 1.500.000 LOC

PL/SQL: ~ 200.000 LOC

Kundenanpassungen

06.07.2017 8

Mod

n…

ActionScript – Common Components

Java – Common Components

Oracle

JDBC

Mod

3

Mod

2

Mod

1

Mod

n…Mod

3

Mod

2

Mod

1

SOAP

Page 9: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Ausgangssituation

Problemstellung

06.07.2017 9

Eingeschränkte Plattformunabhängigkeit

Aufwendige Qualitätssicherung

Harte technische Kopplungen

zwischen den einzelnen Schichten

Verwobene Strukturen auf allen Ebenen

Page 10: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Zielsetzung

Webapplikation mit Server Backend/Persistenz

HTML5 Client

Plattformunabhängiger Betrieb

Datenbankunabhängigkeit

Cloud / On-Premise Betrieb

Skalierbarkeit

Austauschbarkeit

Einfache fachliche Erweiterbarkeit

Kurze Entwicklungszyklen in kleinen Teams

06.07.2017 10

Page 11: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Neue Architektur

Analyse des Bestandssystems

Design Structure Matrix (DSM)

Fachliche Abhängigkeiten

Ermittlung technischer Abhängigkeiten

06.07.2017 11

Strategien zur Auflösung von Abhängigkeiten

Lose Kopplung

Richten der Abhängigkeit

Visualisierung mittels Abhängigkeitsgraph

Page 12: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Neue Architektur

Modularisierung Layered

Modularisierungsvarianten

Migrationsstrategien

06.07.2017 12

Persistence

Business Logic

Common Service Adapter

API UI Service

Persistence

Business Logic

API UI Service

Persistence

Business Logic

API

UI Ext. Tools

Big Bang

Layerweise

Modulweise

Bottom Up

Top Down

Page 13: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Neue Architektur

06.07.2017 13

Geht das

noch besser?

Page 14: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Neue Architektur

Microservices

Abhängigkeitsgraph Context Map

Einzelne Fachlichkeiten (Domains) als „eigenständige Systeme“

Migrationsstrategie

Herauslösen von Domains

Bestandssystem als Legacy System

Schrittweise Ablösung des Bestandssystems durch neue Microservices

06.07.2017 14

Page 15: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Neue Architektur

Zusammenfassung

DDD und Microservices

Passt perfekt zusammen

Domains sind fachlich motiviert

fachliche Trennung wird durch die Architektur gestützt

Microservice Architektur - Vorteile für FNT

Betrieb einzelner Domains möglich

Kurze Entwicklungszyklen und kleine Teams möglich

Durch Virtualisierung unabhängig betreibbar

Cloud Betrieb möglich

06.07.2017 15

Page 16: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Architekturentwurf

Überblick – Backend

Microservices

Spring vs. Java EE

JMS Kommunikation

REST Schnittstelle

06.07.2017 16

Page 17: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Architekturentwurf

Überblick – Frontend

HTML 5 Frontend

Single-Page-Application

Angular 2 und Type Script

Modular aufgebaut

Shared Code

06.07.2017 17

Page 18: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Architekturentwurf

Überblick – Betrieb und Kommunikation

Tools für den Cloud-Betrieb

Service Discovery

Load Balancing

Circuit Breaker

API Gateway

Orchestrierung von

Domain Services

06.07.2017 18

Page 19: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Architekturentwurf

Im Inneren des Microservice

06.07.2017 19

HT

TP

REST API

Domain

Model

Page 20: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Architekturansatz

Abgleich der NFR – eingesetzte Techniken

Plattformunabhängigkeit

Datenbankabstraktion

Saubere Schnittstelle GUI Backend

Loose Kopplung, Erweiterbarkeit

Skalierbarkeit

06.07.2017 20

Page 21: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Migrationsstrategie

Splitten der Datenbank

Bounded Context

Replikationen

Eventual Consistency

06.07.2017 21

Page 22: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Migrationsstrategie

Splitten der Datenbank

Bounded Context

Replikationen

Eventual Consistency

06.07.2017 22

Page 23: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Migrationsstrategie

Splitten der Datenbank

Bounded Context

Replikationen

Eventual Consistency

06.07.2017 23

123

123

TopicIdentische UUID

Page 24: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Migrationsstrategie

Ablösung PL / SQL Code

Abzulösende Objekte

Packages

Trigger

Views

Vorarbeit: Prüfen und bewerten

Sind die Objekte noch erforderlich?

Gibt es Alternativen?

Entwerfen der Ablösungsstrategien

Integration spezialisierter Datenbanken

Anbindung zusätzlicher Systeme

06.07.2017 24

Page 25: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Architekturentwurf

Proof-of-Concept

06.07.2017 25

• Abdeckung

Fachlichkeit

• NFRs

• Wertvoller Input

• Solide Basis

• Erprobung des

Architekturansatzes

• externer Input

• Green Field Approach

• Solution Patterns

• How-Tos

• Guidelines

• Wissenstransfer

Page 26: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Herausforderungen

06.07.2017 26

Gemeinsamer Code Anderes Testkonzept

Context Map /

GovernanceDDD Experten

Aufbau der Developer

Workbench

Fokussierung auf die

Migration

Page 27: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Testkonzept

Wesentlich höhere Anforderungen an Continuous Integration

Neue Abhängigkeiten zwischen den Microservices

06.07.2017 27

Push

JobUP DOWN UP DOWN

Component E2E

UPDATE

Save Infrastructure

Page 28: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Herausforderungen

06.07.2017 28

Gemeinsamer Code Anderes Testing-Konzept

Context Map /

GovernanceDDD Experten

Aufbau der Developer

Workbench

Fokussierung auf die

Migration

Page 29: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Ausblick

Offene Punkte

06.07.2017 29

BetriebsumgebungenMassendaten-

verarbeitung

Fachliche

Transaktionen

Page 30: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

Fazit

06.07.2017 30

Erfahrungen

Große organisatorische

Herausforderung

Viele kleine

Startschwierigkeiten

Externes Know-how wichtig,

aber mit Maß und Ziel

PoC Fachlichkeit

Komplexität der Build-Pipeline

Schwierigkeiten

Gewinn

Fachliche Trennung

Domain-Teams

Cloud-Ready-Ansatz

Gute Integrationsmöglichkeit

für weitere FNT Produkte

Page 31: Vom Monolith zur Microservice Architektur Ein ... · 07.06.2017  · DDD und Microservices Passt perfekt zusammen Domains sind fachlich motiviert fachliche Trennung wird durch die

© 2014 FNT GmbH

06.07.2017 31

Noch Fragen?j

Wir stehen euch gerne Rede und Antwort!

Kommt an unserem Stand Nr. 18 vorbei,

erfahrt mehr über unser Projekt und FNT!