Kinderegget ; enklere, billigere og mye raskere Softwaredesign for Grid arkitektur Hvordan utnytte den nye plattformen? Ark 2012 Tormod Varhaugvik, SKD SITS, Oktober 2012 tormodv.blogspot.com
Utfordringen Helhet og Fremtidsrettet Årsversjoner Helhet Selvbetjening Handlingsrom Store volum Lang levetid Massiv spørring Hendelsesdrevet Designpakke; Domain Driven Design, Tuple Space, CQRS, BASE, SOA, ODS, XML-dokumenter og god gammel Java Skatteetaten 25.10.2012 2
Muligheter Markedssituasjon, nå og framover Kompetanse og infrastruktur Involvere markedet En mengde data som endres samlet Dokument Flerkjerne CPU Mange billige standard maskiner Vi må designe for parallellitet Skalere ut av boksen Ikke alle problemer passer Skatteetaten 25.10.2012 3
Softwaredesign Skatteetaten 25.10.2012 4
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 Skatteetaten 25.10.2012 5
Del opp problemet Aggregate design Nøkkel-objekt Tydelig Nøkkel-objekt tilgang, konsistens Aggregate og root innkapsling A B C Informasjon kan ikke sees på alene! Oppførsel må også med God innkapsling er egentlig bare god softwaredesign God tjenesteorientering Det gir forvaltbare og testbare komponenter Der gir uavhengige informasjonsmengder Uavhengighet gir parallellitet Nå har vi 3 dokumenter. Eks. Lønn, Saldo og Selvangivesle Skatteetaten 25.10.2012 6
Grid arkitektur: Monster minne Minne og prosessering som omfatter flere maskiner Disklager i bakkant Applikasjon A B Key Key Value Value C Key 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 Skatteetaten 25.10.2012 7
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 Superdokument <hode/> <prosess/> <aggregat/> <beslutning/> <avvik/> <logg/> http://tormodv.blogspot.com/2011/02/document-store-for-enterprise.html Skatteetaten 25.10.2012 8
Skattedomene Skatteetaten 25.10.2012 9
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 Skatteetaten 25.10.2012 10
XML dokumentstruktur Hode Sak Selvangivelse id, tidspunkt, gjelder, tilstand [privat, åpen, fjernet, erstattet] rapportert av, erstatter skjematype, gyldighetsperiode [inntektsår, datoperiode], fase [prognose, PSA, levert, fastsatt, klage] versjon tilstand [ny, behandles, ferdig ] post2.1.1 post3.1.12.7 post5 text verdi ref Id Nøkkel til dokumentet Lik for alle Tilstand på Selvangivelsen Spesifikk pr skjematype Avvik Logg avvikbeskrivelse gjelderposter brukernavn tidspunkt hendelse begrunnelse endredeposter Selvangivelse n Lik for alle Skatteetaten 25.10.2012 11
Proof of concept Skatteetaten 25.10.2012 12
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! Skatteetaten 25.10.2012 13
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 Skatteetaten 25.10.2012 14
Kjøremiljø 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? Maskin (server) Maskin (server) Maskin (server) Grid-node (JVM) Grid-node (JVM) Grid-node (JVM) PSA PSA PSA Saldo- og rentemeldinger Lønns- og trekkoppgaver Saldo- og rentemeldinger Lønns- og trekkoppgaver Saldo- og rentemeldinger Lønns- og trekkoppgaver Skattefamilie Skattefamilie Skattefamilie Skatteetaten 25.10.2012 15
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 Skatteetaten 25.10.2012 16
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 Skatteetaten 25.10.2012 17