SlideShare uma empresa Scribd logo
1 de 36
Dønn robuste batch-systemer ,[object Object]
Dønn robuste batch-systemer ,[object Object]
Det finnes ikke dønn  robuste systemer
Bjørn Nordlund ,[object Object],s.
Hva er robust(het) ,[object Object],[object Object],s.
Batch systemer s.
eksempelsystem ,[object Object],[object Object],[object Object],[object Object],[object Object],s.
System skisse s.
Ytterlige krav ,[object Object],[object Object],[object Object],[object Object],s.
Noe failover greier.. s.
Apache-Camel s.
Camel DSL in 1 slide s.
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Disclaimer: Alt herfra og ut vil inneholde feil Ikke stol på at koden min gjør det jeg sier. Test!
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Polling consumer
Competing consumer
Comepting consumer med move/rename på filsystem
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
 
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Feilhåndtering og transaksjoner for «hele» jobben
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Behandlingsstatus og optimistisk låsing (versionering)
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
 
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Let’s begin – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
DEMO?
NICS- Norwegian Interbank Clearing System ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Oppsummering – Bjørns 10 steg: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
Hvis dere skal huske 2 ting: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],s.
www.bbs.no ,[object Object],[object Object],s.

Mais conteúdo relacionado

Semelhante a dønn robuste batchsystemer (JavaZone2010)

JavaZone 2006 - Gode grep når prosjektet blir stort
JavaZone 2006 -  Gode grep når prosjektet blir stortJavaZone 2006 -  Gode grep når prosjektet blir stort
JavaZone 2006 - Gode grep når prosjektet blir stortEirik Torske
 
Du må vite hva som skjer i produksjon
Du må vite hva som skjer i produksjonDu må vite hva som skjer i produksjon
Du må vite hva som skjer i produksjonOle-Martin Mørk
 
Ikke test Puppet-koden din
Ikke test Puppet-koden dinIkke test Puppet-koden din
Ikke test Puppet-koden dinJan Ivar Beddari
 
Software Security: Hvordan bygge sikre systemer?
Software Security: Hvordan bygge sikre systemer?Software Security: Hvordan bygge sikre systemer?
Software Security: Hvordan bygge sikre systemer?Marie Elisabeth Gaup Moe
 

Semelhante a dønn robuste batchsystemer (JavaZone2010) (6)

JavaZone 2006 - Gode grep når prosjektet blir stort
JavaZone 2006 -  Gode grep når prosjektet blir stortJavaZone 2006 -  Gode grep når prosjektet blir stort
JavaZone 2006 - Gode grep når prosjektet blir stort
 
Du må vite hva som skjer i produksjon
Du må vite hva som skjer i produksjonDu må vite hva som skjer i produksjon
Du må vite hva som skjer i produksjon
 
Ikke test Puppet-koden din
Ikke test Puppet-koden dinIkke test Puppet-koden din
Ikke test Puppet-koden din
 
Smidig Utrulling
Smidig UtrullingSmidig Utrulling
Smidig Utrulling
 
Egen Feide tjeneste på 123
Egen Feide tjeneste på 123Egen Feide tjeneste på 123
Egen Feide tjeneste på 123
 
Software Security: Hvordan bygge sikre systemer?
Software Security: Hvordan bygge sikre systemer?Software Security: Hvordan bygge sikre systemer?
Software Security: Hvordan bygge sikre systemer?
 

dønn robuste batchsystemer (JavaZone2010)

Notas do Editor

  1. Jeg legger i dette at systemet skal tåle strømstans, utilsiktede feil fra kunde, feil i data, brann, bombe... Listen går så langt du vil. Du skal plassere deg et sted på aksen fra strømstans til atombombe. Hvor mye er du villig til å investere i infrastruktur, den arkitekturen jeg legger opp til skal ikke begrense deg, men utnytte infrastrukturen du har.
  2. Jeg har begrenset dette til batch systemer, mest fordi det er det jeg jobber mest med, og her jeg har hentet eksempelet og eksempelkoden fra, men jeg tror det meste jeg snakket om gjelder systemer generellt! Batch processing  is execution of a series of  programs  (" jobs ") on a  computer  without manual intervention. Også kalt en workflow. Systemet tar typisk et sett av data filer som input, prosesserer data, og produserer et set av output data. Dette Typisk oppsamling av ”batcher” av jobber som kjører asynkront på tid. Dette i motsetning til ”online” eller interaktive systemer. Dette blir kalt batch prosessering fordi input data er samlet i batcher på filer og prosessert som batcher av programmene.
  3. Jeg har tenkte å lage et lite batch system i løpet av presentasjonen, og har delt opp i 10 stort sett konkrete steg eller råd, som blir beskrevet, og så implementert i java. Vi har kun en veldig kort overordnet beskrivelse av systemet vi skal lage: vi skal lage et nytt bbs banksystem som skal oppdatere alle banker med kvitteringer. Det er sånn at det er flere datasentraler som sender inn betalingsbestillinger til bbs, som så vi utfører. Dette systemet skal rett og slett rapportere til bankene hva som betales. Vårt system kommer til å få filer med betalingstransaksjomer fra flere systemer på bbs via scp til en katalog på delt filserver. 3 ganger i døgnet skal vi sortere inkomne transaksjoner pr bank og sende de i filer til denne banken. Dette er overordnet de funksjonelle kravene, men som dere kanskje skjønner er fokuset her ikke de funksjonelle, men de ikkefunksjonelle kravene som dreier seg om robusthet.
  4. Vi skisser raskt opp en tenkt overordnet arkitektur for dette systemet..
  5. Til dette tenkte systemet har vi noen veldig strenge ikke-funksjonelle krav. La oss tenke oss at dette er et av de mest kritiske systemene i norge!
  6. Det virker som vi trenger noe failover på applikasjon, disk og database i det minste... Det vil i enkleste forstand si backup av alle data på to noder, og mulighet til å skifte til backup node. Så kan man legge mer automatikk ettersom man trenger, men vær ops på at det medfører kompleksitet. Jeg ønsker å kunne skalere opp og ned infrastrukturen etter behov. Dvs at applikasjonen skal kunne kjøre også på en lokal maskin uten failover, for eksempel for funksjonell testing.
  7. integration framework - open source - Lettvekts Hvorfor Camel? Utrolig god syntax for ruting, perfekt for å illustrere mine eksempler. Kort, konsis og lesbar kode. Du kan velge å implementere komponenter selv og kun bruke ruting språket. Core components fungerer veldig bra. Vær forsiktig med ikke-core components Camel er ikke en ESB Er camel svaret? Rammeverk som camel virker veldig bra.... .... nesten.. Problemet er som med alle andre rammeverk i denne kategorien er at man bruker så mye tid og krefter på det lille som ikke fungerer, samt at man mister litt kontroll på hva som skjer, så: Jeg tror ikke du bør bruke det
  8. Hvis dere har lest sammendraget i programmet så dere at jeg skal benytte camel for å illustrere poengene i denne presentasjonen. Jeg må understreke at vi ikke kjører camel i produksjon på BBS, men det er historiske grunner til det. Jeg har valgt camel her fordi det ikke påvirker de 10 prinsippene mine, men understøtter disse godt, og camel har en god DSL som gjør eksemplene svært lesbare og forståelige for dere. Jeg har utvidet camel med noen egne komponenter for å gjøre det helt likt måten vi har gjort det på i produksjonssystemer i BBS.
  9. Ikke checked exceptions, kast alle exceptions helt ut og catch alle på et sted – der du har transaksjonsgrensen. Men ikke glem å catch dem helt da!