Revolusjon kamerater! Softwaredesign i "skyen"

18
Revolusjon kamerater! Fantastiske muligheter med ny plattform Software 2013 Tormod Varhaugvik, Skatteetaten, SITS, Februar 2013 http://tormodv.blogspot.com

description

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!"

Transcript of Revolusjon kamerater! Softwaredesign i "skyen"

Page 1: Revolusjon kamerater! Softwaredesign i "skyen"

Revolusjon kamerater!

Fantastiske muligheter med ny plattform Software 2013

Tormod Varhaugvik, Skatteetaten, SITS, Februar 2013

http://tormodv.blogspot.com

Page 2: Revolusjon kamerater! Softwaredesign i "skyen"

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

06.02.2013 Skatteetaten 2

Page 3: Revolusjon kamerater! Softwaredesign i "skyen"

06.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

Page 4: Revolusjon kamerater! Softwaredesign i "skyen"

06.02.2013 Skatteetaten 4

Design av Programvare

(når det blir STORT)

Page 5: Revolusjon kamerater! Softwaredesign i "skyen"

Hvordan representere virkeligheten?

Modellering

• Mellom-menneskelig

• Ord og uttrykk fra den

virkelige verden

• Litteratur

• Illustrasjoner

• Filosofi

• Arkitektur, modeller

Programmering

• Maskin-instruksjon

• Eksakt, stivbeint

• Formelt

• Tegn

• Konkret, tid og rom

• Mekanisk sympati

06.02.2013 Skatteetaten 5

Page 6: Revolusjon kamerater! Softwaredesign i "skyen"

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»)

06.02.2013 Skatteetaten 6

Page 7: Revolusjon kamerater! Softwaredesign i "skyen"

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

06.02.2013 Skatteetaten 7

Page 8: Revolusjon kamerater! Softwaredesign i "skyen"

06.02.2013 Skatteetaten 8

50 år med tilnærming

Page 9: Revolusjon kamerater! Softwaredesign i "skyen"

50 år med tilnærming

• Operativsystem (~1960)

• COBOL (~1959)

• Objektorientering (~1968)

• Relasjonsmodellen (~1969)

• The art of programming (~1968)

• Software engineering (~1968)

• Klient tjener (~1975)

• Virtual Machine (~1983)

• Container (~1997)

• Case Verktøy (MDD) (~1982)

• CQRS (CQS, ~1988)

• Design Patterns (GOF) (~1993)

• Corba (RMI) (~1991)

• HTML (~1989)

• HTTP (~1995)

• Java (~1995)

• XML (~1998)

• Java EE (~1999)

• Integration patterns (~2002)

• REST (~2000)

• SOA (BPEL/WS) (~ 1995/2001)

• Domain Driven Design (~2003)

• Eventually Consistent (~2000)

• PaaS, Heroku (~2007)

• XP / TDD (~1999)

• Agile (~2001)

• Lean (~1948)

06.02.2013 Skatteetaten 9

Page 10: Revolusjon kamerater! Softwaredesign i "skyen"

Noe for framtiden

• Operativsystem (~1960)

• COBOL (~1959)

• Objektorientering (~1968)

• Relasjonsmodellen (~1969)

• The art of programming (~1968)

• Software engineering (~1968)

• Klient tjener (~1975)

• Virtual Machine (~1983)

• Container (~1997)

• Case Verktøy (MDD) (~1982)

• CQRS (CQS, ~1988)

• Design Patterns (GOF) (~1993)

• Corba (RMI) (~1991)

• HTML (~1989)

• HTTP (~1995)

• Java (~1995)

• XML (~1998)

• Java EE (~1999)

• Integration patterns (~2002)

• REST (~2000)

• SOA (BPEL/WS) (~ 1995/2001)

• Domain Driven Design (~2003)

• Eventually Consistent (~2000)

• PaaS, Heroku (~2007)

• XP / TDD (~1999)

• Agile (~2001)

• Lean (~1948)

06.02.2013 Skatteetaten 10

Smidig, men du må vite hvor du skal!

Tjenesteorientering, men respekter domene!

Testbar komponent, men ikke alt innholdet!

Riktig abstraksjonsnivå, men ikke glem mekanisk sympati!

Standardisering, struktur og modularisering

, er viktigere enn språket i seg selv!

Page 11: Revolusjon kamerater! Softwaredesign i "skyen"

06.02.2013 Skatteetaten 11

Revolusjonen!

Page 12: Revolusjon kamerater! Softwaredesign i "skyen"

Arkitekturmål

ved at moduler lar seg teste hver for seg i en tydelig

verdikjede

ved at moduler lar seg teste hver for seg i en tydelig

verdikjede

06.02.2013 Skatteetaten 12

Skalerbar Skalerbar

Testbar Testbar

Enkel Enkel

ved at regler, informasjon og prosess er tettest mulig opp

mot forretningsbegrep

ved at regler, informasjon og prosess er tettest mulig opp

mot forretningsbegrep

ved at volum og svartider lar seg løse ved kjøp av mer hardware,

og ikke igjennom å skrive om regler, informasjon eller prosess

ved at volum og svartider lar seg løse ved kjøp av mer hardware,

og ikke igjennom å skrive om regler, informasjon eller prosess

Page 13: Revolusjon kamerater! Softwaredesign i "skyen"

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

• Datalager tilpasset struktur

• Datalager innkapslet av

grensesnitt-container(e)

06.02.2013 Skatteetaten 13

Tilstand

Heroku er valgt som eksempel på PaaS, og ment illustrerende.

Det er på ingen måte et valg eller anbefaling fra Skatteetaten.

Page 14: Revolusjon kamerater! Softwaredesign i "skyen"

06.02.2013 Skatteetaten 14

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

kan ikke sees

på alene!

Oppførsel må

også med…

Nå har vi 3

aggregater.

Eks. Lønn, Konto

og Selvangivelse

Page 15: Revolusjon kamerater! Softwaredesign i "skyen"

06.02.2013 Skatteetaten 15

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 Området er preget av mange initiativ,

forskjellige tilnærming og «branding».

Page 16: Revolusjon kamerater! Softwaredesign i "skyen"

Value

06.02.2013 Skatteetaten 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

• 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

Key

Aggregate

Header

Value

Om

rådet e

r pre

get a

v m

ange in

itiativ

,

fors

kje

llige tiln

ærm

ing o

g «

bra

ndin

g».

Page 17: Revolusjon kamerater! Softwaredesign i "skyen"

06.02.2013 Skatteetaten 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

• Hvilken prosesseringsarkitektur skal vi velge?

• Hvilken lagringsarkitektur skal vi velge?

• Private Cloud, IaaS, PaaS

Dette blir nå implementert.

1. versjon er i produksjon.

Snart: Alle lønnsslipper live.

Tilby: 24/7 spørring til NAV.

Page 18: Revolusjon kamerater! Softwaredesign i "skyen"

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

06.02.2013 Skatteetaten 18