”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
                                                evn   e
• Helhet                                 r ings
                                     End
• Selvbetjening
                                                           Handlingsrom

• Store volum                       Forv
                                        altni
                                              ngsk
• Lang levetid                                    o   st

• Massiv spørring
• Hendelsesdrevet



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

Skatteetaten                                                23.10.2012   2
Muligheter
                         • Markedssituasjon, nå og framover
                         • Kompetanse og infrastruktur
                         • Involvere markedet mengde data
                                            En
                                          som endres samlet




                                              Dokument


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

Skatteetaten                                        23.10.2012   3
Softwaredesign




Skatteetaten                    23.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                                              23.10.2012   5
Del opp problemet – ”Aggregate design”

Nøkkel-objekt
    Nøkkel-objekt
Tydelig tilgang,
konsistens og root”
   ”Aggregate                                                 Informasjon
innkapsling                                                  kan ikke sees
                                                C               på alene!
                                     B                       Oppførsel må
                   A                                          også med…




                                                               Nå har vi 3
     •God innkapsling er egentlig bare god softwaredesign     dokumenter.
     •God tjenesteorientering                               Eks. Lønn, Saldo
     •Det gir forvaltbare og testbare komponenter           og Selvangivesle
     •Der gir uavhengige informasjonsmengder
     •Uavhengighet gir parallellitet
    Skatteetaten                                                    23.10.2012   6
Grid arkitektur: Monster minne
                                             A
Minne og prosessering som                     Key         Value
  omfatter flere maskiner
    Disklager i bakkant

                                             B
                                              Key         Value
                          Applikasjon


                                             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                                                    23.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
• Superdokument                                                   <hode/>
• Alle dokumenter har skjema                                      <prosess/>
• Hva med funksjoner på tvers av                                  <aggregat/>
  aggregater/dokumenter?                                          <beslutning/>
• Søkemotor                                                       <avvik/>
                                                                  <logg/>

  http://tormodv.blogspot.com/2011/02/document-store-for-enterprise.html
Skatteetaten                                                                      23.10.2012   8
Skattedomene




Skatteetaten                  23.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                                        23.10.2012   10
XML dokumentstruktur
                  id,                                                                  Nøkkel til
                                        tidspunkt,
  Hode            gjelder,              tilstand [privat, åpen, fjernet, erstattet]   dokumentet
                  rapportert av,        erstatter
                  skjematype,
                  gyldighetsperiode [inntektsår, datoperiode],
                  fase [prognose, PSA, levert, fastsatt, klage]                             Lik for alle
   Sak            versjon
                  tilstand [ny, behandles, ferdig ]

                  post2.1.1                                                            Tilstand på
  Selv-                          text                                                 Selvangivelsen
angivelse                        verdi
                                 ref Id
                  post3.1.12.7                                                               Spesifikk pr
                  …
                  post5                                                                      skjematype


                                                                                      Selvangivelsen
  Avvik           avvikbeskrivelse
                  gjelderPoster

                  brukernavn
  Logg            tidspunkt
                  hendelse
                  begrunnelse
                                                                                             Lik for alle
                  endredePoster
   Skatteetaten                                                                                     23.10.2012   11
Proof of concept




Skatteetaten                      23.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                                                       23.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                                                                    23.10.2012   14
Kjøremiljø

• Alle noder er funksjonelt like                          • Flokkoppførsel
• Hver node har sin andel data                            • Elastisitet, omkonfigurasjon
      • Skattefamilie samlokalisert                       • Overvåkning (teknisk)
• ”Grid” skjermer teknisk kompleksitet                    • Konsistens (funksjonelt)
 (partisjonering, søk, jobber, redundans, overflow,
 lagring, failover, indekser, med mer.)                   • ”Rett på jernet”, ikke virtualiser
• Transparent for logikken                                • 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        Saldo- og rentemeldinger         Saldo- og rentemeldinger

         Lønns- og trekkoppgaver         Lønns- og trekkoppgaver          Lønns- og trekkoppgaver

         Skattefamilie                   Skattefamilie                    Skattefamilie



 Skatteetaten                                                                                  23.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                                                                      23.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                                                                 23.10.2012   17

Kinderegget; enklere, billigere og mye raskere

  • 1.
    ”Kinderegget”; enklere, billigere ogmye raskere Softwaredesign for Grid arkitektur • Hvordan utnytte den nye plattformen? Ark 2012 Tormod Varhaugvik, SKD SITS, Oktober 2012 tormodv.blogspot.com
  • 2.
    Utfordringen – Helhetog Fremtidsrettet • Årsversjoner evn e • Helhet r ings End • Selvbetjening Handlingsrom • Store volum Forv altni ngsk • Lang levetid o st • Massiv spørring • Hendelsesdrevet • Designpakke; Domain Driven Design, Tuple Space, CQRS, BASE, SOA, ODS, XML-dokumenter og god gammel Java Skatteetaten 23.10.2012 2
  • 3.
    Muligheter • Markedssituasjon, nå og framover • Kompetanse og infrastruktur • Involvere markedet mengde data En som endres samlet Dokument • Flerkjerne CPU • Mange billige standard maskiner • Vi må designe for parallellitet • Skalere ”ut av boksen” • Ikke alle problemer passer Skatteetaten 23.10.2012 3
  • 4.
  • 5.
    Kompleksitet • Du kanikke 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 23.10.2012 5
  • 6.
    Del opp problemet– ”Aggregate design” Nøkkel-objekt Nøkkel-objekt Tydelig tilgang, konsistens og root” ”Aggregate Informasjon innkapsling kan ikke sees C på alene! B Oppførsel må A også med… Nå har vi 3 •God innkapsling er egentlig bare god softwaredesign dokumenter. •God tjenesteorientering Eks. Lønn, Saldo •Det gir forvaltbare og testbare komponenter og Selvangivesle •Der gir uavhengige informasjonsmengder •Uavhengighet gir parallellitet Skatteetaten 23.10.2012 6
  • 7.
    Grid arkitektur: Monsterminne A Minne og prosessering som Key Value omfatter flere maskiner Disklager i bakkant B Key Value Applikasjon 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 23.10.2012 7
  • 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 • Superdokument <hode/> • Alle dokumenter har skjema <prosess/> • Hva med funksjoner på tvers av <aggregat/> aggregater/dokumenter? <beslutning/> • Søkemotor <avvik/> <logg/> http://tormodv.blogspot.com/2011/02/document-store-for-enterprise.html Skatteetaten 23.10.2012 8
  • 9.
  • 10.
    Helhetlig skatteprosess • Enhetligprosessering 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 23.10.2012 10
  • 11.
    XML dokumentstruktur id, Nøkkel til tidspunkt, Hode gjelder, tilstand [privat, åpen, fjernet, erstattet] dokumentet rapportert av, erstatter skjematype, gyldighetsperiode [inntektsår, datoperiode], fase [prognose, PSA, levert, fastsatt, klage] Lik for alle Sak versjon tilstand [ny, behandles, ferdig ] post2.1.1 Tilstand på Selv- text Selvangivelsen angivelse verdi ref Id post3.1.12.7 Spesifikk pr … post5 skjematype Selvangivelsen Avvik avvikbeskrivelse gjelderPoster brukernavn Logg tidspunkt hendelse begrunnelse Lik for alle endredePoster Skatteetaten 23.10.2012 11
  • 12.
  • 13.
    Realiserbart! • Erfaring medSmalltalk 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 23.10.2012 13
  • 14.
    Proof of Conceptmå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 23.10.2012 14
  • 15.
    Kjøremiljø • Alle noderer funksjonelt like • Flokkoppførsel • Hver node har sin andel data • Elastisitet, omkonfigurasjon • Skattefamilie samlokalisert • Overvåkning (teknisk) • ”Grid” skjermer teknisk kompleksitet • Konsistens (funksjonelt) (partisjonering, søk, jobber, redundans, overflow, lagring, failover, indekser, med mer.) • ”Rett på jernet”, ikke virtualiser • Transparent for logikken • 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 Saldo- og rentemeldinger Saldo- og rentemeldinger Lønns- og trekkoppgaver Lønns- og trekkoppgaver Lønns- og trekkoppgaver Skattefamilie Skattefamilie Skattefamilie Skatteetaten 23.10.2012 15
  • 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 Skatteetaten 23.10.2012 16
  • 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 Skatteetaten 23.10.2012 17