dønn robuste batchsystemer (javazone2010)
TRANSCRIPT
Dnn robuste batch-systemer
Dnn robuste batch-systemer
Bjrn Nordlund
Dnn robuste batch-systemer
Bjrn Nordlund
Det finnes ikke dnn robuste systemer
Bjrn Nordlund
My main goal with programming and system development is to make things simpler and more managable
s.
Hva er robust(het)
Wikipedia definisjon av robusthet:
Robustness is the quality of being able to withstand stresses, pressures, or changes in procedure or circumstance. A system, organism or design may be said to be "robust" if it is capable of coping well with variations (sometimes unpredictable variations) in its operating environment with minimal damage, alteration or loss of functionality.
s.Jeg legger i dette at systemet skal tle strmstans, utilsiktede feil fra kunde, feil i data, brann, bombe... Listen gr s langt du vil. Du skal plassere deg et sted p aksen fra strmstans 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.
Batch systemer
s.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 processingis execution of a series ofprograms("jobs") on acomputerwithout 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 kjrer 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.
eksempelsystem
Banken vil ha rapporter om alle sine transaksjoner for avstemming med det de tror de har sendt.
Vrt batchsystem skal kunne:
Ta i mot filer med transaksjonsdata p et recordformat fra alle betalingssystemer
Lagre disse i database
P klokkeslett plukke ut data, grupper pr bank og lage filer som sendes til disse bankene
s.Jeg har tenkte lage et lite batch system i lpet av presentasjonen, og har delt opp i 10 stort sett konkrete steg eller rd, 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 snn at det er flere datasentraler som sender inn betalingsbestillinger til bbs, som s vi utfrer. Dette systemet skal rett og slett rapportere til bankene hva som betales. Vrt system kommer til f filer med betalingstransaksjomer fra flere systemer p bbs via scp til en katalog p delt filserver. 3 ganger i dgnet 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 skjnner er fokuset her ikke de funksjonelle, men de ikkefunksjonelle kravene som dreier seg om robusthet.
System skisse
s.Vi skisser raskt opp en tenkt overordnet arkitektur for dette systemet..
Ytterlige krav
Ikke miste data
Ikke lese inn data dobbelt
Hy oppetid
Tle tryne
s.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!
s.Noe failover greier..
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 vr ops p at det medfrer kompleksitet.
Jeg nsker kunne skalere opp og ned infrastrukturen etter behov. Dvs at applikasjonen skal kunne kjre ogs p en lokal maskin uten failover, for eksempel for funksjonell testing.
Apache-Camel
s.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 sprket.Core components fungerer veldig bra.Vr forsiktig med ikke-core components
Camel er ikke en ESBEr 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 br bruke det
Camel DSL in 1 slide
s.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 kjrer camel i produksjon p BBS, men det er historiske grunner til det. Jeg har valgt camel her fordi det ikke pvirker de 10 prinsippene mine, men understtter disse godt, og camel har en god DSL som gjr eksemplene svrt lesbare og forstelige for dere. Jeg har utvidet camel med noen egne komponenter for gjre det helt likt mten vi har gjort det p i produksjonssystemer i BBS.
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Disclaimer:Alt herfra og ut vil inneholde feilIkke stol p at koden min gjr det jeg sier. Test!
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Polling consumer
Competing consumer
Comepting consumer med move/rename p filsystem
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.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!
Feilhndtering og transaksjoner for hele jobben
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Behandlingsstatus og optimistisk lsing (versionering)
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Lets begin Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
DEMO?
NICS- Norwegian Interbank Clearing System
Hy viktighet
Antall transaksjoner i 2009: 1 635 969 599
Belp i 2009: 53 316 430 238 816
Hyt volum
antall transaksjoner inn skal ogs ut
onlinegrensesnitt for enkelt transaksjoner
Hy ytelse
Korte frister for mottak/formidling og oppgjr
40 dager med historikk
s.
Oppsummering Bjrns 10 steg:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
Hvis dere skal huske 2 ting:
Steg #1: Embedded
Steg #2: Teste
Steg #3: Lese
Steg #4: Persistent tilstand
Steg #5: Feile
Steg #6: Idempotens
Steg #7: Schedulere
Steg #8: Sende
Steg #9: Applikasjonskonsoll
Steg #10: Overvke
s.
www.bbs.no
git clone git://github.com/bjornno/batchserver.git
Sprsml?
s.
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master subtitle style
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master text styles
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master text styles
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Tekst endres i Topp- og Bunntekst 13.09.2010
s.
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master subtitle style
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master subtitle style
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master subtitle style
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level