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

Tiende Meetup: Microservices

Embed Size (px)

Citation preview

Page 1: Tiende Meetup: Microservices

Crowd Designing µ-Services Architecture

Bas van Oudenaarde, 12 oct 2016

Page 2: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

Trends…

Page 5: Tiende Meetup: Microservices

Petje op Petje af

Agile werken?

?

Page 6: Tiende Meetup: Microservices

Petje op Petje af

Architectuur-vorm?

Page 7: Tiende Meetup: Microservices

“DevOps triangle of succes”

Infra as Codeµ Services architecture

Page 8: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

Conways Law…

Trends, Agile Teams -> microservices architectuur

Omgekeerd geldt dit niet! Architectuur -> Teams

Page 10: Tiende Meetup: Microservices

Petje op Petje af

Polyglot Stacks; Agile Teams

Company-wide Development stack Team keuze

Page 11: Tiende Meetup: Microservices

Petje op Petje af

Domain (ownership):

Object shared tussen applicatie/componenten

no-shared object

Page 12: Tiende Meetup: Microservices

DDD of MDD: Bounded Context

Belangrijke stap: Full-Stack Teams en ownership business domain

Page 13: Tiende Meetup: Microservices

Petje op Petje af

µServices met SOA platform?

Page 14: Tiende Meetup: Microservices

• 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: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

Application - messaging distributed

configuration mngt distributed

µServices

Schalen van messaging & config tussen verschillende nodes

Page 17: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

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

• Life cycle mngt -> scaling, health

InterfaProcesDomaiServicBackeInterfaProcesDomaiServicBacke

InterfaProcesDomaiServicBacke

Application - messaging distributed

Page 19: Tiende Meetup: Microservices

CDM een must in ESB

Wat moeten we met CDM ?

One for All

Page 20: Tiende Meetup: Microservices

CDM niet nodig met Bounded Context?

Page 21: Tiende Meetup: Microservices

Macro-Micro:

In discussie marco-micro verwarring

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

Page 22: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

Petje op Petje af

Source Repo’s

Page 24: Tiende Meetup: Microservices

Petje op Petje af

Network as a Service?( SDx)

infra provisionbaar testbaar

“De

Page 25: Tiende Meetup: Microservices
Page 26: Tiende Meetup: Microservices

Petje op Petje af

Infra as Code?

Handmatig? semi-automatisch

wel scripts geen version control

Geen testen

“De

Page 27: Tiende Meetup: Microservices

Petje op Petje af

Services Versioning policies?

no versioning

versioning concept

(auto numbering)

Page 28: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

Petje op Petje af

Versioning-context?

versioning, strak in relaties

geen expliciete versies in services

Kijk meer in geheel

(stofwolk)

Page 30: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

Continuous Delivery Context

Page 33: Tiende Meetup: Microservices

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: Tiende Meetup: Microservices

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

Libraries gebruik…

Page 35: Tiende Meetup: Microservices

Wrapping up…

Page 36: Tiende Meetup: Microservices

“DevOps triangle of succes”

Infra as Codeµ Services architecture

Page 37: Tiende Meetup: Microservices

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

On Prem vs Cloud

Page 38: Tiende Meetup: Microservices
Page 39: Tiende Meetup: Microservices

Op naar µ Biertje?