Patterns for service design

30
Patterns for Service Design Peter HJ van Eijk Independent coach/trainer cloud and other digital infrastructures

Transcript of Patterns for service design

Page 1: Patterns for service design

Patterns for Service Design

Peter HJ van EijkIndependent coach/trainer

cloud and other digital infrastructures

Page 2: Patterns for service design

(micro) service oriented architecture

Page 3: Patterns for service design

Suwinet:Closed community SaaS in 2002

many actorscomplicated support structure

Routering en Nummerplan SUWInet (end2end)194.104.14.0/27 vrij194.104.14.32/27 ABP/USZO ethernet194.104.14.64/27 SFB FR194.104.14.96/27 CADANS FR194.104.14.128/27 GUO FR194.104.14.160/27 GAK FR194.104.14.192/27 UWV vrij194.104.14.224/27 niet gebruiken

194.104.15.0/27 vrij194.104.15.32/27 GVI ..CADANS194.104.15.64/27 ARBVO/CWI FR194.104.15.96/27 Pink Roccade FR194.104.15.128/27 GEMnet .. PinkR194.104.15.160/27 SUWI Helpdesk.. PinkR194.104.15.192/27 SK (suwinet.nl) ethernetomvat routers, servers en client NAT pool.

RoccadeVPN backbone

Laan NOI netwerk194.104.15.160/27

BKWI centrale voorzieningen194.104.15.96/27

SUWI koppel LAN194.104.15.192/27

GAK DMZ

CV

CS

"ex

tern

e" n

etw

erk

192.

168.

140.

0/26

CVCS interne prod netwerk192.168.155.128/25

Internet ProviderVersatel

Client Workstation

FirewallFilter

Internet ProviderKPN

DNS servercadans.nl

DNS serverguo.nl

DNS serverlisv.nl

Internet Provider UUnet

DNS servers

.nl

CVCSproxy.cvcs.nlCryptocom

CVCS Homepagemincvcs.cvcs.nl

ftp.cvcs.nlmailhost.cvcs.nl

192.168.140.58

SUWI BKWI infra

Test servertest.suwikoppel.nl194.104.15.200

FirewallFilter

spoor1-html-integratietest.extranet.gak.nlspoor1-html-acceptatietest.extranet.gak.nlspoor1-html-productie.extranet.gak.nlspoor1-xml-integratietest.extranet.gak.nlspoor1-xml-acceptatietest.extranet.gak.nlspoor1-xml-productie.extranet.gak.nltest.extranet.gak.nl194.104.14.160/27

Inkijk server

Inkijk servers

CWI DMZ

Client Workstation

FirewallFilter

FirewallFilter

Inkijk server

194.104.15.222

HelpdeskWorkstation

sfb DMZ

Client Workstation

FirewallFilter

FirewallFilter

spoor1-html-integratietest.extranet.sfb.nlspoor1-html-acceptatietest.extranet.sfb.nlspoor1-html-productie.extranet.sfb.nlspoor1-xml-integratietest.extranet.sfb.nlspoor1-xml-acceptatietest.extranet.sfb.nlspoor1-xml-productie.extranet.sfb.nltest.extranet.sfb.nl194.104.14.64/27

Inkijk server

uszo DMZ

Client Workstation

PIX FirewallFilter

FirewallFilter

spoor1-html-integratietest.extranet.uszo.nlspoor1-html-acceptatietest.extranet.uszo.nlspoor1-html-productie.extranet.uszo.nlspoor1-xml-integratietest.extranet.uszo.nlspoor1-xml-acceptatietest.extranet.uszo.nlspoor1-xml-productie.extranet.uszo.nltest.extranet.uszo.nl194.104.14.32/27

Inkijk server

guo DMZ

Client Workstation

FirewallFilter

FirewallFilter

spoor1-html-integratietest.extranet.guo.nlspoor1-html-acceptatietest.extranet.guo.nlspoor1-html-productie.extranet.guo.nlspoor1-xml-integratietest.extranet.guo.nlspoor1-xml-acceptatietest.extranet.guo.nlspoor1-xml-productie.extranet.guo.nltest.extranet.guo.nl194.104.14.128/27

Inkijk server

cadans DMZ

Client WorkstationsFirewallFilterIntern

spoor1-html-integratietest.extranet.cadans.nlspoor1-html-acceptatietest.extranet.cadans.nlspoor1-html-productie.extranet.cadans.nlspoor1-xml-integratietest.extranet.cadans.nlspoor1-xml-acceptatietest.extranet.cadans.nlspoor1-xml-productie.extranet.cadans.nltest.extranet.cadans.nl194.104.14.96/27

Inkijk server

lisv DMZ

FirewallFilter

gvi-spoor1-html-integratietest.extranet.lisv.nlgvi-spoor1-html-acceptatietest.extranet.lisv.nlgvi-spoor1-html-productie.extranet.lisv.nlgvi-spoor1-xml-integratietest.extranet.lisv.nlgvi-spoor1-xml-acceptatietest.extranet.l isv.nlgvi-spoor1-xml-productie.extranet.lisv.nltest.extranet.lisv.nl194.104.15.32/27

Inkijk servers

begin2002

To Be

GEMnet Adoorn194.104.15.128/27

PinkRocc Adoorn194.104.15.96/27

+GemNet+ Laan NOI

CVCSWolk

192.168.140.64/26?

HelpdeskWorkstation

MinisterieWolk

CVCS-Ministerie

Handhaven tot?

GemnetWolk

CWI interneWAN

145.84/16?

FrameRelayKPN

CVCS Inbel:loket aan huis

192.168.140.30

CVCS pilotWorkstation

CVCS pilotWorkstation

CVCS pilotWorkstations

GSD LAN

Workstation

CVCS DNS servercvcs.nl

192.168.140.1

.129 Mincvcs, DNS, Pibsys

.130 TIB en FTP server

.132 Mailserver

BeveiligdeInternettoegang

BeveiligdeInbel (BinBel)voorziening

FirewallFilter

DNS serveruszo.nl

DNS serversfb.nl ?

DNS servergak.nl

DNS serverarbeidsbureau.

nl

Internet ProviderEuronet

DNS serversuwinet.nl

Internet ExchangeAMS-IX

Internet ProviderXL server

Internet ExchangeAMS-IX

SUWI koppelingenTO BE situatie per begin2002FIle:Modified: 19 December 2001Peter van Eijk

Deze plaat beschrijft debelangrijkste technischeinfrastructurele componenten,waarvan de werking de SUWIketen beinvloed.Bilaterale contacten, enverbindingen alleen voorbeheer zijn veelal nietgetekend.Alle organisaties hebben inprincipe een Internetverbinding. Voor SUWIdoeleinden wordt deze alleengebruikt voor DNS lookup.

Op alle firewalls vindt inprincipe network addresstranslation plaats, op allerouters in principe niet.

NAT

NAT NAT

NAT

NAT - CVCSNAT - Ministerie

TIBserver

publiekeURL?

IB serverInlichtingenbureau.nl NAT

NAT

interneWAN

interneWAN

interneWAN

interneWAN

interneWAN

FirewallFilter

spoor1-ovz-rika.extranet.arbeidsbureau.nlspoor1-xml-rika.extranet.arbeidsbureau.nlspoor1-ovz-kolomtest.extranet.arbeidsbureau.nlspoor1-xml-kolomtest.extranet.arbeidsbureau.nlspoor1-ovz-suwitest.extranet.arbeidsbureau.nlspoor1-xml-suwitest.extranet.arbeidsbureau.nlspoor1-ovz-productie.extranet.arbeidsbureau.nlspoor1-xml-productie.extranet.arbeidsbureau.nltest.extranet.arbeidsbureau.nl194.104.15.64/27

RINIS is op deze plaatbuiten beschouwinggelaten.

home-spoor1-htm l-integratietest.suwinet.nlhome-spoor1-htm l-acceptatietest.suwinet.nlhome-spoor1-htm l-productie.suwinet.nlhome-spoor1-xml-integratietest.suwinet.nlhome-spoor1-xml-acceptatietest.suwinet.nlhome-spoor1-xml-productie.suwinet.nlhome-spoor1-deladm-integratietest.suwinet.nlhome-spoor1-deladm-acceptatietest.suwinet.nlhome-spoor1-deladm-productie.suwinet.nltest.suwinet.nl194.104.15.96/27

Routering en Nummerplan CVCS(extern alles via Firewall 192.168.140.58)192.168.155.128/25 PR CVCS intern productie192.168.155.64/26 PR CVCS internacceptatie192.168.140.0/26 PR CVCS extern netw192.168.140.64/26 CVCS netwerk adressen192.168.140.128/26 ?? client pool?192.168.140.192/26 CVCS externe servers

Page 4: Patterns for service design

Why patterns?(Micro) Services design is hardProtocols are hardService management is hardDesigning cooperation is hard

Language ….

Page 5: Patterns for service design

Basic service pattern example

6

Query:Can I get a drink please?

Ack: Yes you can, it will arrive shortly

Reply: Here is your drink

Ack: Thank you, this is what I wanted

Page 6: Patterns for service design

Interaction pattern breakdown

8

Query

Ack

Provider

Client

AckReply Query: Can I get a drink please?

Ack: Yes you can, it will arrive shortlyReply: Here is your drinkAck: Thank you, this is what I wanted

Often combined

Often implicit

Query: ask for a commitmentAck: acceptance of commitmentReply: request to accept (acquittal)Ack: acceptance of completion

Page 7: Patterns for service design

SemanticsSpeech act theory: language controls a process, or creates a shared reality, each of which can be about information or about a physical process

“I now pronounce you husband and wife”

Rooted in Deontic logic (obligations, commitments, permissions)

Page 8: Patterns for service design

Example TCP/IP

ConnectQ: can you reserve buffer space for a connection?R: yes we can, here is your initial window sizeA: thank you, here is your initial window size

TransmissionQ: please accept this dataA: thank you, I will forward it, here is your new window size

Rinse and Repeat

Page 9: Patterns for service design

Example customer serviceQ: Can I get a new App / Macbook / User account / IYFG?

A: Yes you can

R: Here it is

Etc.

Page 10: Patterns for service design

Service elements:consumer actions and provider responses

Every service has multiple components/elements, i.e.• Access resource (login, get webpage, …)• Create resource (server, virtual disk, mailbox, …)• Modify resource (bigger disk/mailbox, new functional module, add friend,

…)• Create user (provisioning)• Create account• Talk to a sales representative• Negotiate and set up contract• Reset password• Delete account• Delete data (deprovisioning)

Generally: anything that can be governed by a permission or can lead to a commitment

12Extra note: can you group these in phases: contract, provision, use..

Page 11: Patterns for service design

Intermediary patterns have 3 or more actortypes

An intermediary adds value between client/server, source/sinkI.e. index, filter, conversion, (de)couple

Bron

Bron

Bron

Afnemer

Afnemer

Afnemer

Intermediair

Page 12: Patterns for service design

PubSub interaction pattern

Subscribe

Ack

IntermediaryClient

Ack

Publish

ProviderProvide

rProvider

ClientClient

Intermediary holds source and subscriber directories. Notice the various commitments that can be made.

Subscribe

AckIssue

Page 13: Patterns for service design

Pattern composition

• Tell me the current state, • subject to authorization intermediary, • then subscribe me to changes.

Page 14: Patterns for service design

Big issue: what is an obligation?

Page 15: Patterns for service design

Inspired by Cfengine21 "/var/cfengine/bin/." 22 create => "true", 23 perms => usystem("0700");

Turns out to be a nice model/formalism to express interaction patterns in:

• Clear notion of autonomy• Less confusion about commitment and

obligations

Page 16: Patterns for service design

SemanticsPromise Theory (Burgess, Bergstra)“Autonomous agents make promises”

“A promise is a strongly stated intention to provide a service, which may or may not be kept” (Jeff Sussna)

“I promise that the dir will have permissions 0700 or report my failure”

Page 17: Patterns for service design

Service interaction example

24

Query:Please promise me to bring a drink

Ack: I promise to bring you a drink in a short while

Reply: Please promise me that you are satisfied and will pay

Ack: I promise to pay you for the drink

Page 18: Patterns for service design

Service Agreement Items

27

SecurityConfidentialityMaintenance

Continuity

CapacityFunctionalitySupport

PromiseWe promise to prevent unauthorized accessWe promise to keep your information safeWe promise to maintain according to vendor best practicesWe promise to make sure that there is a spare copy of your data

off siteWe promise to add resources as neededWe promise to apply updates and improvementsWe promise to have trained staff that reacts timely and

professionally

Item

And of course a lot of additional financial and legal items.

Page 19: Patterns for service design

The chain gangCEO A to CEO B: please promise to me that Alice can talk to Bob when I have a service request

CEO B to Bob: please promise to me that you promise to Alice to pick up the phone when she calls

CEO A CEO B

Alice Bob

Page 20: Patterns for service design

Risk and securityEvery promise is a risk:

failure deception

Security can also be about information leakage: I promise to not tell

Page 21: Patterns for service design

Apply toProtocol/collaboration designService Level AgreementConfig management (CFEngine)Risk managementSecurity assessments

Jeff Sussna: how can promise theory help digital service quality? (Slideshare)

Page 22: Patterns for service design

Does this sound familiar?Can this simplify things around at your end?

Then maybe we can have a chat

Peter van Eijk [email protected] @petersgriddle

Page 23: Patterns for service design
Page 24: Patterns for service design

- 33 -

Berichten hangen samen met verplichtingen om in de toekomst iets te doenDeze verplichtingen staan samengevat in “Service Level Agreements (SLA).” Deze beschrijven ook het toegestane gebruik van gegevens.

Berichten besturen verplichtingen

• Een bericht staat nooit op zichzelf, het betekent wat.

Tekst van het bericht FunctieMag ik de dagschotel? Verzoek, bestellingNatuurlijk, komt er zo aan Belofte, commitment

Verklaring, leveringAlstublieft, uw dagschotelDank u wel. Acceptatie, decharge

Berichten besturen een levering.Dat kan ook een levering van gegevens zijn.

InteractieBerichtenTransport

Infrastructuur

Page 25: Patterns for service design

- 34 -

Authentieke bronnen en Intake patronen

• Het “authentieke bron” patroon bestaat veelal uit–inkijk met autorisatie, –het nemen van een abonnement op wijzigingen, –en het terugmelden van discrepanties

• Het “intake” patroon bestaat veelal uit het –raadplegen van een index voor authentieke bronnen, –inkijk daarop,–voorleggen hiervan aan de client,–opvragen van aanvullende gegevens bij de client.

• Indexen zijn een authentieke bron van metagegevens.InteractieBerichtenTransport

Infrastructuur

Page 26: Patterns for service design

- 35 -

Gebruikers hebben rollen, bevoegdheden en verantwoordelijkheden

• Gebruikers wisselen berichten uit, en hebben dus verplichtingen over en weer.• Voorbeelden van gebruikers:

–Medewerkers–Intermediairs–Sectoren–Partijen–Vestigingen–Applicaties

• Gebruikersadministraties zijn een index over de gebruikers, en spelen een rol in de bericht verdeling (routering)

• Via gebruikersadministraties worden autorisaties toegekendInteractieBerichtenTransport

Infrastructuur

Page 27: Patterns for service design

- 36 -

Volledigheid en correctheid van patronen

• In de uitwerking staan ook alle speciale gevallen benoemd:

–Wat als het antwoord niet mogelijk is?–Wat als er geen antwoord komt? Time-out.

–Wat als de ontvanger het niet aankan?–Bijwerken van indexen–Stopzetten van abonnementen

• Volledig state diagram

IntakeRequest

ontvangen

VerzoekIndex

BronnenInformatie

Vraag bijBron 2

Vraagbij Bron 2

Clientbij

Intake

Info van bronnenis beschikbaar

Intake EventVerzonden

Intake EventOntvangen

OpvragenPopulatie

Index

Opvragenbronnen

Gesprek metClient met hulp

van IntakeApplicatie -

Verzend Intake resultaat

Ontvangstbevestiging

Antwoord vanalle bronnenbeschikbaar

Elk InteractieProtocol is

gebaseerd op eenState Diagram

(voorbeeld - Intake)

InteractieBerichtenTransport

Infrastructuur

Page 28: Patterns for service design

More

• http://markburgess.org/blog_cap.html

• Microservices.io Chris Richardson

Page 29: Patterns for service design

- 38 -

End to end bewaking van applicatie performance

• Meet wat er toe doet: respons en uptime

• Meet waar het er toe doet; van client tot server

• Vertaling naar tussenliggende SLAs is onderdeel van een leerproces

Zie presentatie Iping!

Norm is bijvoorbeeld:

99,5% van de gevallen transactie binnen 1 sec afgerond.

Page 30: Patterns for service design

Contractual framework• General terms and conditions• Service Agreements• Service Level Agreements (SLA)• Acceptable Use Policy (like a reverse SLA)

=> Contracts are the interfaces in the supply chain and should be matched to GRC requirements

39