Transcript
Page 1: Kinderegget; enklere, billigere og mye raskere

”Kinderegget”; enklere, billigere og mye raskereSoftwaredesign for Grid arkitektur• Hvordan utnytte den nye plattformen?Ark 2012

Tormod Varhaugvik, SKD SITS, Oktober 2012tormodv.blogspot.com

Page 2: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 2

Utfordringen – Helhet og Fremtidsrettet

• Årsversjoner• Helhet • Selvbetjening

• Store volum• Lang levetid• Massiv spørring• Hendelsesdrevet

• Designpakke; Domain Driven Design, Tuple Space, CQRS, BASE, SOA, ODS, XML-dokumenter og god gammel Java

Endringsevne

Forvaltningskost

Handlingsrom

Page 3: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 3

Muligheter

• Flerkjerne CPU• Mange billige standard maskiner • Vi må designe for parallellitet• Skalere ”ut av boksen”• Ikke alle problemer passer

• Markedssituasjon, nå og framover• Kompetanse og infrastruktur• Involvere markedet

Dokument

En mengde data som endres samlet

Page 4: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 4

Softwaredesign

Page 5: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 5

Kompleksitet

• Du kan ikke flykte fra kompleksitet

• Kan ikke pakkes inn og late som ingenting

• Kompleksitet har ett omfang, og det må holdes samlet

• Testbarhet, testbarhet og testbarhet

• Tas dette feil, vil kompleksiteten komme som en rikosjett

Page 6: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 6

Del opp problemet – ”Aggregate design”

Nøkkel-objekt”Aggregate root”

Nøkkel-objekt”Aggregate root”

Nøkkel-objektTydelig tilgang, konsistens oginnkapsling

•God innkapsling er egentlig bare god softwaredesign•God tjenesteorientering•Det gir forvaltbare og testbare komponenter•Der gir uavhengige informasjonsmengder•Uavhengighet gir parallellitet

AB

C

Informasjon kan ikke sees

på alene!Oppførsel måogså med…

Nå har vi 3 dokumenter.

Eks. Lønn, Saldo og Selvangivesle

Page 7: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 7

Grid arkitektur: Monster minne

Applikasjon

Minne og prosessering som omfatter flere maskiner

Disklager i bakkant

C

B

AKey

Key

Key

Value

Value

Value

• Frikoble fra datalaget• Sammensetting skjer i Applikasjon • Forretningslogikk skjer i Applikasjon • Nøkkelobjektet kan være sammensatt • Applikasjon er upåvirket av volum og krav til svartid• Big Data

Page 8: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 8

Lagringsarkitektur - Dokument

• Tenke Aggregat-design (info+use) • Forretningslogikk styrende• Endringsevne og testbarhet

• Robust, konsistent og skalerbar• Redusert I/O og mindre låsing

• Superdokument• Alle dokumenter har skjema• Hva med funksjoner på tvers av

aggregater/dokumenter?• Søkemotor

http://tormodv.blogspot.com/2011/02/document-store-for-enterprise.html

<hode/><prosess/><aggregat/><beslutning/><avvik/><logg/>

Superdokument

Page 9: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 9

Skattedomene

Page 10: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 10

Helhetlig skatteprosess

• Enhetlig prosessering rundt ett stort datalager• Dyrker forretningsmessig likhet• Løpende saksbehandling

• Skille funksjonalitet fra informasjon• Skille informasjonen fra hverandre• Skille funksjonalitet fra hverandre• Skille funksjonalitet fra infrastruktur• Unik eier av informasjon

• Tenk massivt arkiv med dokumenter• … hvor vedtakene ligger utenfor• Testbar = Forvaltbar• Essensiell kompleksitet er nå innkapslet

Page 11: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 11

XML dokumentstruktur

id, gjelder, rapportert av, skjematype, gyldighetsperiode [inntektsår, datoperiode],

Hode tidspunkt, tilstand [privat, åpen, fjernet, erstattet] erstatter

avvikbeskrivelsegjelderPoster

Avvik

brukernavntidspunkthendelsebegrunnelseendredePoster

Logg

fase [prognose, PSA, levert, fastsatt, klage]versjontilstand [ny, behandles, ferdig ]

Sak

post2.1.1textverdiref Id

post3.1.12.7…post5

Selv-angivelse

Lik for alle

Lik for alle

Spesifikk pr skjematype

Selvangivelsen

Tilstand påSelvangivelsen

Nøkkel til dokumentet

Page 12: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 12

Proof of concept

Page 13: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 13

Realiserbart!

• Erfaring med Smalltalk viste meget stor effektivitet når man kunne ha forretningslogikk horisontalt

• Ekte objektorientering• Lekker og veldikeholdbar kode (DSL)• Kommer langt med en enkel programmeringsmodell

• Erfaring med domene-orientert distribuert system viser at meldinger til sammen bygger opp ett system

• En Moduls data kan bygges opp ”fra ingenting”• Fikk kontroll på datamodellen og forretningshendelser• Dokumentene er grensesnitt mellom Modulene• En stor datamodell kan (og bør) deles opp i Aggregater

• Likhet med Finans og Gambling er slående• Det John Davies / Cameron Purdy har messet om lenge!

Page 14: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 14

Proof of Concept mål

• Enkel; ved at regler, informasjon og prosess er tettest opp mot forretningsbegrep

• Testbar; ved at moduler lar seg teste hver for seg i en tydelig verdikjede

• Skalerbar; ved at volum og svartider lar seg løse ved kjøp av mer hardware, og ikke igjennom å skrive om regler, informasjon eller prosess

http://tormodv.blogspot.com/2011/09/tax-norways-proof-of-concept.html

?

Page 15: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 15

Kjøremiljø

23.10.2012 15

Maskin (server) Maskin (server) Maskin (server)

Grid-node (JVM)

Skattefamilie

Lønns- og trekkoppgaver

Saldo- og rentemeldinger

PSA

Grid-node (JVM)

Skattefamilie

Lønns- og trekkoppgaver

Saldo- og rentemeldinger

PSA

Grid-node (JVM)

Skattefamilie

Lønns- og trekkoppgaver

Saldo- og rentemeldinger

PSA

• Alle noder er funksjonelt like• Hver node har sin andel data

• Skattefamilie samlokalisert

• ”Grid” skjermer teknisk kompleksitet(partisjonering, søk, jobber, redundans, overflow, lagring, failover, indekser, med mer.)

• Transparent for logikken

• Flokkoppførsel• Elastisitet, omkonfigurasjon• Overvåkning (teknisk)• Konsistens (funksjonelt)• ”Rett på jernet”, ikke virtualiser• Hva hvis strømmen går?

Page 16: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 16

Estimert fullskala produksjon

• 28.000 Selvangivelser i sekundet (ca 3 minutter)• 56.000 Skatteberegninger i sekunder (ca 90 sekunder)

• 5.100.000 Selvangivelse & Skatt og Skattekort• 80.000.000 Grunnlagsdata & Underskjemaer• 120 Gb RAM netto• 370 Gb RAM brutto med 1x redundans og indekser• 12 Servere (Intel i7) a 32 Gb• Last av XML fra fil: 6000tps => 5 timer

• Ekstrem ytelse ikke så viktig i seg selv, men gir handlingsrom• Kost ca 400.000 i servere og 1 million i lisens• Forretningsnær og vedlikeholdbar kode kan yte sykt bra

http://tormodv.blogspot.com/2012/01/tax-norways-poc-results.html

Page 17: Kinderegget; enklere, billigere og mye raskere

23.10.2012Skatteetaten 17

Softwaredesign er gull

• Ta det på alvor, det er lov å tenke seg om• Fysiske lover kan ikke knekkes,

… men ting kan gjøres smart• Isoler foretningslogikk fra teknisk arkitektur

• Kompleksitet er din største trussel• Software må skrives om for å dra nytte av ”dette nye i skyen”• Testbarhet, enkelhet og parallellitet går hånd i hånd

• Gull også for de som ikke har store datamengder• Frikoble fra tregt datalager

Lev deg inn i DDD. POJO er din beste venn

http://tormodv.blogspot.no/2012/02/module-and-aggregate-design-in-cah.html


Recommended