JavaZone 2010 - Så du ønsker å øke ytelsen ved å parallellprosessere - er koden din trådsikker da?
Vårt problem: fakturavolumet hadde vokst over hodet på vår Java batchapplikasjon. Etter iherdige forsøk for å øke ytelsen på vår serielle applikasjon, så parallellprosessering ut til å være eneste løsning.
Vår første utfordring var å finne hvordan vi skulle parallellprosessere. Skulle vi bruke flere instanser av applikasjonen eller tråder? Valget falt på å bruke tråder, men hvor skulle vi benytte tråder, og var koden vi skulle parallellisere trådsikker?
Kodebasen hadde vært utviklet over flere år, og ingen hadde dessverre fokusert nevneverdig på trådsikkehet. Neste steg på veien var derfor å analysere og dokumentere klassenes trådsikkerhet. Selve kodearbeidet gikk ut på å fjerne delt tilstand der det var mulig, og å dele opp og fyre i gang deloppgaver. Vår største utfordring var med en modul som måtte ha delt tilstand, og vi kommer til å presentere alle løsningene vi trodde ville virke, og den som til slutt fungerte.
Implementasjonen vår brukte deler av Java 5 concurrency-APIet og vi kommer også til å demonstrere vår bruk og verifisering av denne koden.
Vi hadde utviklet, verifisert, og ytelsestestet og valgte å produksjonssette. Dessverre oppstod mystiske feil i produksjon, og mistanken gikk straks til den nyinnførte trådingen. Vi fikk derfor også kost oss med den tidkrevende oppgaven med feilsøking av trådfeil.
Gjennom presentasjonen ønsker vi å presentere steg for steg hvordan vi gikk fram, hvilke feil vi gjorde, og bakgrunn for de valgene vi tok. Vi vil også presentere noen generelle utfordringer innenfor parallellprosessering, inkludert implementasjon, testing, feilsøking, APIer og profilingverktøy.
Aleksander Blomskøld
Aleksander Blomskøld jobber til daglig som utvikler hos BBS. Han har erfaring både fra webutvikling og javabasert batchprosessering. Aleksander er generelt nysgjerrig på alt innenfor teknologi og programmering.
Rita Nordtug
Rita Nordtug jobber til daglig som arkitekt og utvikler hos BBS. Hun har 10 års erfaring med utvikling og design av java applikasjoner, med fokus på smidig utvikling, ryddige og klart forståelige design og vedlikeholdbar kode.
