SlideShare une entreprise Scribd logo
1  sur  66
ENKELHET, TESTBARHET OG
 SKALERBARHET MED GRID

           Proof of Concept

             Skatteetaten


             JavaZone 2012
 Tormod Varhaugvik og Trond Arve Wasskog
               12.09.2012
Målsetning
Skatteetatens arkitekturavdeling
 ønsket å gjennomføre Proof of
  Concept på ny plattform for
 liknings- og skatteprosessene
Overordnet målsetting var å senke
  forvaltningskostnadene, øke
endringsevnen og bygge systemer
  som i større grad vil svare på
    fremtidige utfordringer.
Primært bevise hypotesen om at
innsamling, fastsetting og skatt- og
   avgifts-beregning kan bygges
 vesentlig enklere og gi et enklere
            vedlikehold.
Sekundært bevise hypotesen om at
 systemene kan bygges for massiv
parallell-prosessering til en lavere
             kostnad.
Tilnærming
Testbarhet
Enkelhet
Vedlikeholdbarhet
Driftbarhet
Grid 101
Node 1           Node 2           Node 3




         A   B    C   D   E   F
Node 1   Node 2   Node 3

A    D   E   C    B    F
Node 1   Node 2   Node 3

A    D   E   C    B    F
Node 1                    Node 2   Node 3

    A        D             E       C    B       F



                           1
        1                                   1




1. Kjør distribuert jobb
Node 1                    Node 2   Node 3

    A        D             E       C    B       F



                           2
        2                                   2




1. Kjør distribuert jobb
2. Aggreger del-resultat
Node 1   Node 2   Node 3

A    D   E   C    B    F


B    C   A   F    D    E
Node 1   Node 2   Node 3

A    D   E   C    B    F


B    C   A   F    D    E
Node 2   Node 3

E   C    B    F


A   F    D    E


B   D    C   A
Node 1   Node 2   Node 3

A    D   E    C   B    F
Skatteberegning
      PoC
Prosesserings-              Prosesserings-           Prosesserings-          Prosesserings-
 Prosessering             modul                       modul                    modul                   modul




        Grid
(distribuert cache)




    Lagring
                                            XML                    XML                    XML
                                       Dokumentdatabase       Dokumentdatabase       Dokumentdatabase
Server
                                                        Legge (komprimert)
   Grid-node                                           Java-objekter i griden
 Beregnet skatt           ”Beregn skatt”
                                                       Generere java-objeker
Skattegrunnlag            ”Generer SG”
                                                           Parse XML-filer
Saldo- ogFodselsnr
          rente-        Part
                          ”Last S/R”
   meldinger
         08017212345    Person {Navn=”Per”, Partner=”...”, BarnAv=”..”}
                                                           Dekomprimere
          31124698765   Person {Navn=”Arne”, Partner=”...”, BarnAv=”..”}
Lønns- og24046934567
          trekk-                                              zip-arkiv
                          ”Last LTO’er”
                        Person {Navn=”Anne”, Partner=”...”, BarnAv=”..”}
   oppgaver
         16098745678    Person {Navn=”Lise”, Partner=”...”, BarnAv=”..”}
                                                           Lese zip-arkiver
     Parter               ”Last parter”                        fra disk

 Skattefamilie             ”Last skattefamilie”
Server            Server

  Grid-node         Grid-node




Saldo- og rente   Saldo- og rente
                                    ”Last S/R”
  meldinger         meldinger
Lønns- og trekk   Lønns- og trekk
                                    ”Last LTO’er”
  oppgaver          oppgaver

                      Parter
    Parter            Parter        ”Last parter”
 Skattefamilie     Skattefamilie    ”Last skattefamilie”
Server                            Server

 Grid-node                         Grid-node




                Saldo- og rente
                  meldinger
                Lønns- og trekk
                  oppgaver

                    Parter

Skattefamilie                     Skattefamilie
Server            Server

  Grid-node         Grid-node

Beregnet skatt    Beregnet skatt

Skattegrunnlag    Skattegrunnlag

Saldo- og rente   Saldo- og rente
  meldinger         meldinger
Lønns- og trekk   Lønns- og trekk
  oppgaver          oppgaver
    Parter            Parter
 Skattefamilie     Skattefamilie
Enkelhet
Domene
Spring Batch JPA EJB CDI   JTA   JSF

  Spring       Java EE
            Java SE
           Oracle RDBMS
Domene
  Grid



Java SE
Plain Old Java Objects
Map<UUID,Oppgave>
MultiTask task =
   new MultiTask(myCallable, members);

ExecutorService executorService =
   Hazelcast.getExecutorService();

executorService.execute(task);

Collection results = task.get();
Utviklingsarkitektur
Enkelhet
Sølvkule?
Aggregatdesign
<<aggregate root>>        <<value object>>
   Leveranse               LeveranseId


                         <<aggregate root>>
                               Oppgave                <<entity>>
                                                        Part


            <<value object>>         <<value object>>
                 Avvik                       PartId
Serialisering
Source: https://github.com/eishay/jvm-serializers
Idempotens
JobbInfo
Leveranse                   Oppgave
                                                          Status = READY
                                                                   FAILED
                                                                   RUNNING
UUID=3xh340b3               ID=17127123908
                    0..*                                  Status = READY
                                                          ...      SUCCESS
...                         ...


      Behandle                                            Persistent lager
      Leveranse
        Jobb




         0        100 000             200 000   300 000          400 000



         0          5s                 10s        15s                20s
Asynkronitet
1400

           1200

           1000
Oppgaver


           800

           600                          Write-through
                                        Write-behind
           400

           200

             0
                  1   2         3   4
                          Tid
Konsistens
DEMO
Resultater
Kjørende løsning for forhåndsutfylt
 selvangivelse og skatteberegning
  basert på reelle grunnlagsdata
Implementasjon som dekker
skatteregler for 70% av Norges
          befolkning
RESULTAT PSA-GENERERING



                                antall/min
            500,000
                                                   435,143
            450,000
            400,000
            350,000
                                      287,678
            300,000
            250,000
            200,000
            150,000   123,646
            100,000
             50,000
                 0
                        1                2           3
                                    Antall noder
Hva betyr det når
   vi har …?
5 100 000
   selvangivelser,
skatteberegninger og
    skattekort ...
...og
80 000 000
grunnlagsdata og
 underskjermaer
Jo, vi trenger …
370 GB RAM
   120 GB RAM netto
+ redundans og indekser
=
12 servere
á 32 GB RAM
Men da kan vi til
 gjengjeld ...
... lage selvangivelser
for hele landets befolkning på...
3 minutter
... og gjøre
skatteberegning
for alle sammen på...
1,5 minutter
... med en årlig
infrastrukturkostnad på
   1 400 000,-
SPØRSMÅL OG SVAR
Enkelhet testbarhet og skalerbarhet med grid i skatteetaten

Contenu connexe

En vedette (8)

Intro to Learning Analytics
Intro to Learning AnalyticsIntro to Learning Analytics
Intro to Learning Analytics
 
XynIgnite FAT BURNING SYSTEM
XynIgnite FAT BURNING SYSTEMXynIgnite FAT BURNING SYSTEM
XynIgnite FAT BURNING SYSTEM
 
Sugar europe
Sugar   europeSugar   europe
Sugar europe
 
Week3
Week3Week3
Week3
 
Mercury instalation
Mercury instalationMercury instalation
Mercury instalation
 
Cement markets in Europe
Cement  markets in EuropeCement  markets in Europe
Cement markets in Europe
 
Bnv 4097 Hiistory of Residential Buildings in Britain
Bnv 4097  Hiistory of Residential Buildings in BritainBnv 4097  Hiistory of Residential Buildings in Britain
Bnv 4097 Hiistory of Residential Buildings in Britain
 
Week12
Week12Week12
Week12
 

Similaire à Enkelhet testbarhet og skalerbarhet med grid i skatteetaten (8)

20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar
 
20140128 Firstpoint seminar - Tid For Oppgradering
20140128   Firstpoint seminar - Tid For Oppgradering20140128   Firstpoint seminar - Tid For Oppgradering
20140128 Firstpoint seminar - Tid For Oppgradering
 
Javascript tar hevn
Javascript tar hevnJavascript tar hevn
Javascript tar hevn
 
Presentation Mapreduce Bjornnordlund
Presentation Mapreduce BjornnordlundPresentation Mapreduce Bjornnordlund
Presentation Mapreduce Bjornnordlund
 
AWS på kartet
AWS på kartetAWS på kartet
AWS på kartet
 
Technical Deep Dive into MidoNet
Technical Deep Dive into MidoNetTechnical Deep Dive into MidoNet
Technical Deep Dive into MidoNet
 
Solide systemer med unit of work
Solide systemer med unit of workSolide systemer med unit of work
Solide systemer med unit of work
 
The Client Strikes Back
The Client Strikes BackThe Client Strikes Back
The Client Strikes Back
 

Plus de ilmyggo

Plus de ilmyggo (8)

GodeMinerTilSlettSpill-JavaZone.pdf
GodeMinerTilSlettSpill-JavaZone.pdfGodeMinerTilSlettSpill-JavaZone.pdf
GodeMinerTilSlettSpill-JavaZone.pdf
 
JavaZone 2021: Året da åpen kildekode ble diskutert på Stortinget! av Trond A...
JavaZone 2021: Året da åpen kildekode ble diskutert på Stortinget! av Trond A...JavaZone 2021: Året da åpen kildekode ble diskutert på Stortinget! av Trond A...
JavaZone 2021: Året da åpen kildekode ble diskutert på Stortinget! av Trond A...
 
Lov og rett i skyen JavaZone 2018
Lov og rett i skyen JavaZone 2018Lov og rett i skyen JavaZone 2018
Lov og rett i skyen JavaZone 2018
 
Bekk Teknologiradar 2018 - Modige ledere
Bekk Teknologiradar 2018 - Modige ledereBekk Teknologiradar 2018 - Modige ledere
Bekk Teknologiradar 2018 - Modige ledere
 
Atom Feeds Gruser JMS
Atom Feeds Gruser JMSAtom Feeds Gruser JMS
Atom Feeds Gruser JMS
 
Tis not agile
Tis not agileTis not agile
Tis not agile
 
Arkitektur på vondt og godt
Arkitektur på vondt og godtArkitektur på vondt og godt
Arkitektur på vondt og godt
 
Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010
 

Enkelhet testbarhet og skalerbarhet med grid i skatteetaten