dønn robuste batchsystemer (javazone2010)

Download dønn robuste batchsystemer (JavaZone2010)

If you can't read please download the document

Upload: bjorn-nordlund

Post on 12-Apr-2017

640 views

Category:

Documents


1 download

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