Crowd Designing Microservices Architecture

39
Crowd Designing μ -Services Architecture Bas van Oudenaarde, 12 oct 2016

Transcript of Crowd Designing Microservices Architecture

Page 1: Crowd Designing Microservices Architecture

Crowd Designing µ-Services Architecture

Bas van Oudenaarde, 12 oct 2016

Page 2: Crowd Designing Microservices Architecture

Petje op Petje af

Stelling/vraag, vooraf stukje theorie/praktijk,

of achteraf

eerste Microservices

in gebruikGeen

Vraag: Zijn microservices een onderdeel in de huidige stack?

Page 3: Crowd Designing Microservices Architecture

Doel: Samen de randvoorwaarden & architectuur-schets

neerzetten voor een volgende microservice implementatie aan de hand van praktische

praktijk-cases

( Designing van een microservices architectuur is een Team sport )

Page 4: Crowd Designing Microservices Architecture

Trends…

Page 5: Crowd Designing Microservices Architecture

Petje op Petje af

Agile werken?

?

Page 6: Crowd Designing Microservices Architecture

Petje op Petje af

Architectuur-vorm?

Page 7: Crowd Designing Microservices Architecture

“DevOps triangle of succes”

Infra as Codeµ Services architecture

Page 8: Crowd Designing Microservices Architecture

Conways Law"Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization's communication structure." Conway, 1968

Page 9: Crowd Designing Microservices Architecture

Conways Law…

Trends, Agile Teams -> microservices architectuur

Omgekeerd geldt dit niet! Architectuur -> Teams

Page 10: Crowd Designing Microservices Architecture

Petje op Petje af

Polyglot Stacks; Agile Teams

Company-wide Development stack Team keuze

Page 11: Crowd Designing Microservices Architecture

Petje op Petje af

Domain (ownership):

Object shared tussen applicatie/componenten

no-shared object

Page 12: Crowd Designing Microservices Architecture

DDD of MDD: Bounded Context

Belangrijke stap: Full-Stack Teams en ownership business domain

Page 13: Crowd Designing Microservices Architecture

Petje op Petje af

µServices met SOA platform?

Page 14: Crowd Designing Microservices Architecture

• Doel: snelheid behouden / flexibel / schaalbaar • Systeem is de gehele architectuur

µServices met SOA platform?

Hoe schalen met Tibco platform? Multi-stack?

Hoe schaalt (state-fullness) bv database?

Vergeet Canonical Data Models; schaalt niet / slow / lastig in DDD context

( https://www.innoq.com/en/blog/thoughts-on-a-canonical-data-model/ https://www.linkedin.com/pulse/canonical-data-model-world-microservices-robert-zakrzewski )

Page 15: Crowd Designing Microservices Architecture

Application-layer

messaging-layer

‘Middleware’-layer

distributed key-value store

OS

infra-layer

Voorbeeld: Java-Stack, gehele stack orchestrating:

Messaging: bv. mqtt /

µServices µServicesµServices

Page 16: Crowd Designing Microservices Architecture

Application - messaging distributed

configuration mngt distributed

µServices

Schalen van messaging & config tussen verschillende nodes

Page 17: Crowd Designing Microservices Architecture

Application-layer

distributed key-value store

OSinfra-layer

Voorbeeld: Java-Stack, gehele stack orchestrating:

µServicesInterfacing

Proces

Domain

ServicesBackend / Integration

Agent / Swarm based: verantwoordelijk voor eigen Lifecycle (decentraal)

CoreOSAWS / on Prem

docker

Page 18: Crowd Designing Microservices Architecture

Agent / Swarm based:• Service discovery ( Consul / NGinx) • Bootstrapping -> Reactive !

• Life cycle mngt -> scaling, health

InterfaProcesDomaiServicBackeInterfaProcesDomaiServicBacke

InterfaProcesDomaiServicBacke

Application - messaging distributed

Page 19: Crowd Designing Microservices Architecture

CDM een must in ESB

Wat moeten we met CDM ?

One for All

Page 20: Crowd Designing Microservices Architecture

CDM niet nodig met Bounded Context?

Page 21: Crowd Designing Microservices Architecture

Macro-Micro:

In discussie marco-micro verwarring

macro-level: Integratie context, hoe beweging in te zetten naar µ Services

Page 22: Crowd Designing Microservices Architecture

Monoliet: • DDD: Bounded Context / Root aggregates • Modulair opgebouwd, modulair te bouwen • Wel in 1 repo (vaak) • Goed opletten vanwege interne API koppeling; meer ‘regelen’ qua afspraken dus…

Meer onafhankelijk, snelheid en ownership -> µ Services

Page 23: Crowd Designing Microservices Architecture

Petje op Petje af

Source Repo’s

Page 24: Crowd Designing Microservices Architecture

Petje op Petje af

Network as a Service?( SDx)

infra provisionbaar testbaar

“De

Page 25: Crowd Designing Microservices Architecture
Page 26: Crowd Designing Microservices Architecture

Petje op Petje af

Infra as Code?

Handmatig? semi-automatisch

wel scripts geen version control

Geen testen

“De

Page 27: Crowd Designing Microservices Architecture

Petje op Petje af

Services Versioning policies?

no versioning

versioning concept

(auto numbering)

Page 28: Crowd Designing Microservices Architecture

Services Versioning policies?…• Handig voor multi-team communicatie / planning

• Lazy Developers -> automatisch versioning • Lazy Developers -> Geen meta-flags

bv 1.0-SNAPSHOT • Lazy Developers -> Geen feature-branches, lastig branches; feature-toggles ook lastig; forward model

Page 29: Crowd Designing Microservices Architecture

Petje op Petje af

Versioning-context?

versioning, strak in relaties

geen expliciete versies in services

Kijk meer in geheel

(stofwolk)

Page 30: Crowd Designing Microservices Architecture

6

StelUPKbestaatuit4services:A,B,C,D

A

C D

B15 6

7 50

Label:upk1A

C D

B15 5

7 49

A

C D

B15 6

7 302

Label:upk2

Time

RegressionTestfailed

RegressionTestpassed

TargetLabelupk 1

Page 31: Crowd Designing Microservices Architecture

Petje op Petje af

Schieten we te ver door? nano-services

meer services, minder afhankelijkheden

Run-time depedencies?Let op: geen compile time decencies, alle componenten bouwen syntactisch los van elkaar

Page 32: Crowd Designing Microservices Architecture

A

C D

B

A:10,11,12,13,14,15,…

B:3,4,5,6…

C:1,2…

D:300,301,302,…

15 6

2 302

A

C D

B

relatiesomgeving

μService:

Continuous Delivery Context

Page 33: Crowd Designing Microservices Architecture

Petje op Petje af

Libraries gebruik?

DRY,gebruik libs

blijven services compatible indien Libs versies omhoog gaan en niet direct in alle services meegaan

Geen shared libs

Page 34: Crowd Designing Microservices Architecture

• Nightly build fix alle nieuwe libs in alle µ componenten• Geen versioning• n-1 beleid• Fout in Software Architectuur

Libraries gebruik…

Page 35: Crowd Designing Microservices Architecture

Wrapping up…

Page 36: Crowd Designing Microservices Architecture

“DevOps triangle of succes”

Infra as Codeµ Services architecture

Page 37: Crowd Designing Microservices Architecture

http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

On Prem vs Cloud

Page 38: Crowd Designing Microservices Architecture
Page 39: Crowd Designing Microservices Architecture

Op naar µ Biertje?