Crowd Designing Microservices Architecture

Post on 16-Apr-2017

134 views 0 download

Transcript of Crowd Designing Microservices Architecture

Crowd Designing µ-Services Architecture

Bas van Oudenaarde, 12 oct 2016

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?

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 )

Trends…

Petje op Petje af

Agile werken?

?

Petje op Petje af

Architectuur-vorm?

“DevOps triangle of succes”

Infra as Codeµ Services 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

Conways Law…

Trends, Agile Teams -> microservices architectuur

Omgekeerd geldt dit niet! Architectuur -> Teams

Petje op Petje af

Polyglot Stacks; Agile Teams

Company-wide Development stack Team keuze

Petje op Petje af

Domain (ownership):

Object shared tussen applicatie/componenten

no-shared object

DDD of MDD: Bounded Context

Belangrijke stap: Full-Stack Teams en ownership business domain

Petje op Petje af

µServices met SOA platform?

• 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 )

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

Application - messaging distributed

configuration mngt distributed

µServices

Schalen van messaging & config tussen verschillende nodes

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

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

• Life cycle mngt -> scaling, health

InterfaProcesDomaiServicBackeInterfaProcesDomaiServicBacke

InterfaProcesDomaiServicBacke

Application - messaging distributed

CDM een must in ESB

Wat moeten we met CDM ?

One for All

CDM niet nodig met Bounded Context?

Macro-Micro:

In discussie marco-micro verwarring

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

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

Petje op Petje af

Source Repo’s

Petje op Petje af

Network as a Service?( SDx)

infra provisionbaar testbaar

“De

Petje op Petje af

Infra as Code?

Handmatig? semi-automatisch

wel scripts geen version control

Geen testen

“De

Petje op Petje af

Services Versioning policies?

no versioning

versioning concept

(auto numbering)

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

Petje op Petje af

Versioning-context?

versioning, strak in relaties

geen expliciete versies in services

Kijk meer in geheel

(stofwolk)

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

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

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

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

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

Libraries gebruik…

Wrapping up…

“DevOps triangle of succes”

Infra as Codeµ Services architecture

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

On Prem vs Cloud

Op naar µ Biertje?