Date post: | 21-Jun-2015 |
Category: |
Technology |
Upload: | tormod-varhaugvik |
View: | 449 times |
Download: | 1 times |
Skatteetatens målarkitektur Softwaredesign for «in-memory» arkitektur
Hvordan utnytte den nye plattformen? Oslo Software Architecture, 2013.02.27
Tormod Varhaugvik, SKD SITS, Februar 2013
tormodv.blogspot.com
2/27/2013 NTA – Equity –transparent and live risk assessment 2
The Governmental Financial Institution
• Tax Norway
• 110 billion € in revenue from a population of 5 million
• 610 million € in operating cost
• 6.000 employees, 10.000 users, supported by 120 systems
• 700 working in IT
• Status
• Enterprise Architecture program started 2009
• This Architecture was defined and committed in 2010
• We have managed to change a large Government Organisation
• Major projects are now building the future
• We are establishing a private Cloud
• Me
• Some sort of Architect in the Enterprise Architecture practice
• Technical background, Enterprise Application domain since 1993
27.02.2013 Skatteetaten 3
Utfordringen – Helhet og Fremtidsrettet
• Helhet
• Automatisert
• Hendelsesdrevet
• Selvbetjening
• Store volum
• Lang levetid
• Massiv spørring
• Kjøremiljø, Container
• In-memory, BIG-data
• IaaS, PaaS, SaaS
Handlingsrom
Forenkle
Standardisere
Systemenes livsløp
• 8% investering, 92% i levetiden
• Markedsstøtte i levetiden
• COTS - ”Commercial of The Shelf”
• Varige egenskaper • ”Noen skal betale skatt av noe”
• Skiftende egenskaper • ”Hva skal betales i skatt”
• Eie egen kompleksitet • Logikk, informasjon og prosess
• Testbar
27.02.2013 Skatteetaten 4
Hva er det med siloen?
• Ikke mat siloen!
• Selvsentrisk
• Lite samarbeidsvillig
• Lite endringsvillig
• Eser utover tiltenkt funksjon
• Lite testbar
• Ingen forstår den
• Bærer ikke konsistens, oppetid, ytelse og endringsevne
• Størrelse er ikke synonymt med silo
• Kan ikke kjøpe en treningsdress og forvente forbedring
27.02.2013 Skatteetaten 5
En håndterbar Portefølje
• Bestem systemer • Funksjonelt, teknisk og organisatorisk
• God tjenesteorientering
• Domain Driven Design
• Bestem unik eier av informasjon
• Del opp problem innad i system • … for å oppnå parallellitet
• Tid er løs kobling
• Store oppgaver trenger store systemer
• Ulike systemer trenger ikke lik arkitektur
• Federerte Samarbeidende Systemer
27.02.2013 Skatteetaten 6
27.02.2013 Skatteetaten 7
Etterlevelse Part
Målarkitektur
Fastsetting Innkreving
Prosess
Tilgang Dokument
! Ekstern kommunikasjon
27.02.2013 Skatteetaten 8
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
27.02.2013 Skatteetaten 9
Softwaredesign
(For in-memory og Big Data) Domain Driven Design, CQRS, SOA, ODS,
BASE, Tuple Space, XML-dokumenter og god gammel Java
27.02.2013 Skatteetaten 10
Del opp problemet – ”Aggregate design”
Nøkkel-objekt
”Aggregate root”
Nøkkel-objekt
”Aggregate root”
Nøkkel-objekt
Tydelig tilgang,
konsistens og
innkapsling
•God innkapsling er egentlig bare god softwaredesign
•God tjenesteorientering
•Det gir forvaltbare og testbare komponenter
•Der gir uavhengige informasjonsmengder
•Uavhengighet gir parallellitet
A B
C
Informasjon
og oppførsel
henger
sammen!
Nå har vi 3
dokumenter.
Eks. Lønn, Konto
og Selvangivesle
27.02.2013 Skatteetaten 11
«In-memory»: Monster minne
Applikasjon
Minne og prosessering som
omfatter flere maskiner
Disklager i bakkant
C
B
A
Key
Key
Key
Value
Value
Value
• Frikoble fra datalagret (disk)
• Sammensetting skjer i Applikasjon
(B kan inngå i flere sammenhenger)
• Forretningslogikk skjer i Applikasjon
• Nøkkelobjektet kan være sammensatt
• Applikasjon er upåvirket av volum og krav til svartid
27.02.2013 Skatteetaten 12
Dokument - Lagringsarkitektur (Big Data)
• Robust, konsistent og testbar
• Redusert I/O og mindre låsing
• Uavhengig og skalerbar
• Historisk korrekt
• Superdokument
• Alle dokumenter har skjema
• Fra samfunnet, på standard formater
• Fra samfunnet, når det skjer
• Søkemotor
• Hva med funksjoner på tvers av
aggregater/dokumenter?
• «Utilityspråk» som SQL? http://tormodv.blogspot.com/2011/02/document-store-for-enterprise.html
<hode/>
<prosess/>
<aggregat/>
<beslutning/>
<avvik/>
<logg/>
Superdokument
27.02.2013 Skatteetaten 13
Skattedomene
(Domain Driven Design, Tuple Space, CQRS, BASE, SOA, ODS,
XML-dokumenter og god gammel Java)
27.02.2013 Skatteetaten 14
Skatteetatens målbilde (Fastsetting)
• Enhetlig prosessering rundt ett stort datalager
• Tenk massivt arkiv med dokumenter
• … hvor vedtakene ligger utenfor
• Fakta ett sted, gjenbruk i flere dimensjoner
• Uavhengig funksjonalitet og informasjon
• Gjenbrukbar, løs koblet og eksakt
• Unik eier av informasjon
• Testbar = Forvaltbar
• Dokumentene er grensesnittene
• Migreringsvennlig
• Hvilken prosesseringsarkitektur skal vi velge?
• Hvilken lagringsarkitektur skal vi velge?
Dette blir nå implementert.
1. versjon er i produksjon.
Snart: Alle lønnsslipper live.
Tilby: 24/7 spørring til NAV.
27.02.2013 Skatteetaten 15
Tekniske egenskaper
• Parallelliserbar • Skill utvalg…
• … fra behandling
• … fra lagring av resultat
• Prosessfokus • Automatisk saksbehandling
• Manuell saksbehandling
• Kontinuerlig tilrettelegging
• Åpne standarder • Kapsle inn forretningslogikk
• xml, java, kontainer, web
• Leverandør / plattformuavhengig
• Plattform i utvikling
• Objektorientert • Rik semantikk, DSL
• xml 1:1 med java (aggregatet)
• Test og drift • Automatisk / avgrenset test
• Omkjøring ifbm feilretting
• Simulering / ”dry run”
http://tormodv.blogspot.com/2010/12/continual-data-hub-architecture-and.html
27.02.2013 Skatteetaten 16
XML dokumentstruktur
id,
gjelder,
rapportert av,
skjematype,
gyldighetsperiode [inntektsår, datoperiode],
Hode tidspunkt,
tilstand [privat, åpen, fjernet, erstattet]
erstatter
avvikbeskrivelse
gjelderPoster
Avvik
brukernavn
tidspunkt
hendelse
begrunnelse
endredePoster
Logg
fase [prognose, PSA, levert, fastsatt, klage]
versjon
tilstand [ny, behandles, ferdig ] Sak
post2.1.1
text
verdi
ref 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
27.02.2013 Skatteetaten 17
Proof of concept
27.02.2013 Skatteetaten 18
Utfordringen => Proof of concept
• Hvordan skifte kurs?
• Beslutningstagerne kan ikke dette
• Skape felles forståelse rundt arkitekturdiskusjoner og valg
• Å redusere risiko i planlegging og estimering
• Innsalg og troverdighet
• 1000 ganger ytelse?
• Hardware < 10%?
• Kodeforvaltning < 30%?
• => Særlig!
Okt ’09: Utfordringen VA
Mars ’10: Godkjent VA
Mai ’11: Gjør PoC
Jan ’12: PoC Suksess!
Mars ’12: Endre kurs…
http://tormodv.blogspot.com/2011/09/tax-norways-proof-of-concept.html
27.02.2013 Skatteetaten 19
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!
27.02.2013 Skatteetaten 20
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
?
27.02.2013 Skatteetaten 21
Kjøremiljø
27.02.2013 21
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?
Deployment-arkitektur (årsversjoner)
Skatteetaten
Maskin (server) Maskin (server) Maskin (server)
Node
Web server (v 1) 2009
Node
Web server (v 1)
Node
Web server (v 1)
Node Node
Node Node
Node Node
2010
2011
Web-server
http://intern.skd.no/selvangivelse/{fnr}/2009
http://localhost:2009/selvangivelse/{fnr} [{... 2009 JSON}]
[{... Gen. JSON}]
Hvor går linja for endringsevne?
• )
27.02.2013 Skatteetaten 23
Level Strategy
Domain code (schemas, POJOs,tests) In project
Libraries (internal, external) Branching (VCS, Copy)
Compiler Virtual image (dev/build)
JVM Virtual image (runtime)
OS Virtual image (runtime)
Virtualization software Fixed version
Hardware Fixed hardware
27.02.2013 Skatteetaten 24
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 (800 poster, 14 skatter)
• 80.000.000 Grunnlagsdata & Underskjemaer (5000 info, 7000 regler)
• 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
27.02.2013 Skatteetaten 25
Konseptet innfrir!
• Forretningsnær og vedlikeholdbar kode kan yte sykt bra
• Funksjonelle tester som regneark
• Kode som fagperson kan forstå
• Informasjonsmodellen er også viktig
• Åpne standarder gir verktøy, komponenter og markedsstøtte
• Handlingsrom for valg av kjøreplattform, skalere ved behov
• In-memory – Processing Grid (~GemFire, HazelCast)
• In-memory – Data Grid (~Terracotta)
• Distributed database – Big Data (~Hadoop)
• Omskriving er høyst oppnåelig
• La POJO utvikling være styrende, ikke xml-definisjoner
putSumPost("3.4", sum(post("3.1.14"), minus(post("3.3.13"))))
putSumPost("3.5.1",hvis(post("3.3.7.3")).er(kr(0)).brukDa(hvis(post("3.5.1.1")).ikke
Er(kr(0)).brukDa(post("3.5.1.1"))))
27.02.2013 Skatteetaten 26
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
Bakgrunn og lenker
• http://domaindrivendesign.org/library/vernon_2011
• http://tormodv.blogspot.com/2011/02/comment-on-restful-soa-or-domain-driven.html
• http://www.infoq.com/minibooks/domain-driven-design-quickly
• http://heroku.com
• http://www.regjeringen.no/nn/dep/fin/pressesenter/pressemeldingar/2012/enklare-for-
naringslivet-med-edag.html?id=682401
• http://tormodv.blogspot.com/2010/11/concept-for-datastore-and-processing.html
• http://tormodv.blogspot.com/2011/02/document-store-for-enterprise.html
• http://tormodv.blogspot.com/2012/01/tax-norways-poc-results.html
• http://tormodv.blogspot.no/2011/04/java-is-mature-software-teens-are-over.html
• http://tormodv.blogspot.no/2011/09/dont-let-enterprise-service-bus-lead-to.html
• http://tormodv.blogspot.no/2013/01/target-architecture-looking-good.html
• http://www.slideshare.net/tormodv
• http://www.tu.no/it/2012/10/19/1000-ganger-raskere-skatteoppgjor
27.02.2013 Skatteetaten 27