Presentasjon som skal holdes på Software 2013. Presentasjonen inneholder gode designmønstre for å utnytte "skyen" representert ved Heroku og Skatteetatens målarkitektur: "Alle har høye forventninger. Dagens systemer kan ikke utnytte den nye plattformen. En softwarerevolusjon er nødvendig. Slik gir du din arkitektur en radikal ”makeover” med gode gamle designmønstre!"
2. Innovasjon fra Skatteetaten!
• Designet du nå skal få se, gir helt nye muligheter
• Satt sammen av erfaring, teknologi og gode mønstre
• Mange komplekse domener med sammensatt informasjon og
regler, kan fungere side om side i samme system
• I tillegg til å kunne yte svært mye bedre
• Og være mye lettere å forvalte
• Revolusjon for «Saksbehandlingssystemer»
• Vi bygger nå på denne måten
• Passer både In-Memory, BIG-data og PaaS
• Vi deler!
• Designet er dokumentert i en serie artikler på tormodv.blogspot.com
• Kildekoden fra PoC tilgjengelig på GitHub
Skatteetaten 06.02.2013 2
5. Hvordan representere virkeligheten?
Modellering Programmering
• Mellom-menneskelig • Maskin-instruksjon
• Ord og uttrykk fra den • Eksakt, stivbeint
virkelige verden • Formelt
• Litteratur • Tegn
• Illustrasjoner • Konkret, tid og rom
• Filosofi • Mekanisk sympati
• Arkitektur, modeller
Skatteetaten 06.02.2013 5
6. Maskin
• I/O!
• Fysiske realiteter, tid og rom
• Det tar tid å etablere data i en maskin
• Det tar enda mer tid å flytte data
• Eksakt, men feilbarlig
• Transaksjon;
å etablere en forretningsmessig konsistent tilstand
• Parallellitet en premiss
• Mekanisk sympati («gre teknologien med hårene»)
Skatteetaten 06.02.2013 6
7. Forvaltning
• Programvaredesign, Arkitektur!
• Kunnskap skalerer ikke
• Mange skal løse noe sammen, over tid
• Du kan ikke flykte fra kompleksitet
• Enterprise Application
• Kompleksitet må struktureres, slik at den blir forståelig
• Testbarhet, testbarhet og testbarhet
• Tas dette feil, gjør du vondt verre
Skatteetaten 06.02.2013 7
9. 50 år med tilnærming
• Operativsystem (~1960) • HTML (~1989)
• COBOL (~1959) • HTTP (~1995)
• Objektorientering (~1968) • Java (~1995)
• Relasjonsmodellen (~1969) • XML (~1998)
• The art of programming (~1968) • Java EE (~1999)
• Software engineering (~1968) • Integration patterns (~2002)
• Klient tjener (~1975) • REST (~2000)
• Virtual Machine (~1983) • SOA (BPEL/WS) (~ 1995/2001)
• Container (~1997) • Domain Driven Design (~2003)
• Case Verktøy (MDD) (~1982) • Eventually Consistent (~2000)
• CQRS (CQS, ~1988) • PaaS, Heroku (~2007)
• Design Patterns (GOF) (~1993) • XP / TDD (~1999)
• Corba (RMI) (~1991) • Agile (~2001)
• Lean (~1948)
Skatteetaten 06.02.2013 9
10. Noe for framtiden
• Operativsystem (~1960) • HTML (~1989)
• COBOL (~1959) • HTTP (~1995)
Smidig, men du må vite hvor du skal!
• Objektorientering (~1968) • Java (~1995)
Tjenesteorientering, men respekter domene!
• Relasjonsmodellen (~1969) • XML (~1998)
Testbar komponent, men ikke alt innholdet!
• The art of programming (~1968) • Java EE (~1999)
Riktig abstraksjonsnivå, men ikke glem mekanisk sympati!
• Software engineering (~1968) • Integration patterns (~2002)
• Klient tjener (~1975) • REST (~2000)
Standardisering, struktur og modularisering
• Virtual Machine (~1983) • SOA (BPEL/WS) (~ 1995/2001)
, er viktigere enn språket i seg selv!
• Container (~1997) • Domain Driven Design (~2003)
• Case Verktøy (MDD) (~1982) • Eventually Consistent (~2000)
• CQRS (CQS, ~1988) • PaaS, Heroku (~2007)
• Design Patterns (GOF) (~1993) • XP / TDD (~1999)
• Corba (RMI) (~1991) • Agile (~2001)
• Lean (~1948)
Skatteetaten 06.02.2013 10
12. Arkitekturmål
ved at regler, informasjon og
prosess er tettest mulig opp
Enkel mot forretningsbegrep
ved at moduler lar
seg teste hver for
seg i en tydelig Testbar
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
Skatteetaten 06.02.2013 12
13. Platform as a Service (Heroku)
• «Container» og «stack»
• Grensesnitt-container
(maskin og bruker)
• Arbeider-container
• Køer, Timere
• Logging og overvåkning
• HTTP (HTML/REST)
• Hendelses-drevet
• Orkestrering styres av
arbeider-container
Tilstand
• Datalager tilpasset struktur
• Datalager innkapslet av
grensesnitt-container(e) Heroku er valgt som eksempel på PaaS, og ment illustrerende.
Det er på ingen måte et valg eller anbefaling fra Skatteetaten.
Skatteetaten 06.02.2013 13
14. 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 aggregater.
•God tjenesteorientering Eks. Lønn, Konto
•Det gir forvaltbare og testbare komponenter og Selvangivelse
•Der gir uavhengige informasjonsmengder
•Uavhengighet gir parallellitet
Skatteetaten 06.02.2013 14
15. In-memory: Monster minne
A
Minne og prosessering som Key Value
omfatter flere maskiner.
Disklager i bakkant
B
Key Value
Applikasjon
C
Key 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
Området er preget av mange initiativ,
• Applikasjon er upåvirket av volum og krav til svartid forskjellige tilnærming og «branding».
Skatteetaten 06.02.2013 15
16. Big Data: Dokumenter
• 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
forskjellige tilnærming og «branding».
Området er preget av mange initiativ,
• Fra samfunnet, når det skjer
• Søkemotor Header
Key
Aggregate
• Hva med funksjoner på tvers av Value
Value
aggregater/dokumenter?
• «Utilityspråk» som SQL?
http://tormodv.blogspot.com/2011/02/document-store-for-enterprise.html
Skatteetaten 06.02.2013 16
17. 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 veldig eksakt
• Unik eier av informasjon
• Testbar = Forvaltbar
• Dokumentene er grensesnittene
Dette blir nå implementert.
• Hvilken prosesseringsarkitektur skal vi velge? 1. versjon er i produksjon.
Snart: Alle lønnsslipper live.
• Hvilken lagringsarkitektur skal vi velge? Tilby: 24/7 spørring til NAV.
• Private Cloud, IaaS, PaaS
Skatteetaten 06.02.2013 17