Introducing Nikita

Så langt har det vært veldig mye om prosjektet fra et overordnet perspektiv, nå må vi konkretiserer det litt mer. Jeg liker veldig godt fri programvare og dette kommer hovedsaklig fra et pedagogisk perspektiv og der er fri programvare fantastisk når det gjelder deling og videreutvikling av kunnskap. En konkret implementasjon av en ide som en programvare kan bety mye for forståelsen av den ideen. En standard kan fort mistolkes, men når du lager en programvare så er det ikke rom for en mistolkning. En implementasjon kan også påpeke svakheter og det vil da være lettere å ha en diskusjon om systemet faktisk løser de problemene systemet skal løse. Dette prosjektet bygger på fri programvare og vil resultere i fri programvare.

Prosjektet begynner med valg av en tjenestebuss. Mule pekte seg ut som en populær tjenestebuss, men jeg ble allikevel advart mot å bruke den. Dette var mest pga en personlig preferanse rundt dokumentasjon. Jeg leste meg raskt opp på dette med tjenestebusser og siden jeg forholder meg til fri programvare så var det ikke så mange å velge fra. Etter litt lesing valgte jeg Apache ServiceMix. Litt fordi en del av de andre teknologiene jeg ønsket å jobbe med kom fra Apache så jeg tenkte det kunne være like greit å forholde meg til Apache, men ServiceMix er også brukt som basis for JBOSS Fuse så hvis noen ønsker å ta dette prosjektet videre så er det mulig å gjøre det med teknologi der vi vet det finnes support. Så valget baserer seg mer på at det er det som føles riktig, og er ikke basert på en grundig undersøkelse. I utgangpunktet trodde jeg at ServiceMix var noe jeg ville programmere med, men har til slutt skjønt at ServiceMix er et produkt jeg skal jobbe med. ServiceMix er bygget på Apache Karaf som er en container for kjøring av programmer. Jeg tror dette er egentlig noe jeg har lett etter hele programeringslivet mitt og ble veldig glad da jeg fant det. Karaf gir deg en container som gjør at du kan bygge programvare inn i det. Hvis programmet trenger en liten webserver så kan du feks bruke jetty. Karaf lar deg gjør enkle ting som starte/stoppe programmene dine i containeren. Karaf kommer jeg definitivt bruke i senere prosjekter.

Det virker som om det mangler bøker om ServiceMix, så jeg kjøpte Instant Apache ServiceMix How-to, for å lære mer om ServiceMix. Ofte synes jeg Internett resurser blir for overfladiske og forventer en del forehåndsforståelse for å gjøre noe praktisk og nyttig. Bøker bruker mer tid til å gå i dybden. Boken er forsåvidt bra, men er egentlig bare en veldig overfladisk gjennomgang av hva ServiceMix er og hvordan du bruker det. Noe av det jeg kommer til å gjøre de nærmeste dagene er å komme i gang med ServiceMix basert på oppskriftene i boken. Det er mulig at jeg hadde høyere forventinger til ServiceMix fordi jeg egentlig ikke forsto hva ServiceMix gjorde.

ServiceMix skal være tjenestebussen i nikita. En tjenestebuss kan gjøre en del ting. Det første er å holde orden på kommunikasjonen og hvem som kommuniserer med hvem og hvordan. Her ser jeg for meg at all tredjeparts kommunikasjon til et fagsystem kan bli tvunget via tjenestebussen. Bussen skal også kunne omforme data. Så et system som bruker en SOAP-basert meldingsformat kan kommunisere med en tjeneste som bruker en REST-basert meldingsformat. Dette skjer ved at kommunikasjon går gjennom bussen og omforming fra feks JSON til SOAP skjer i bussen. Bussen blir en sentral node som ser nesten all datatrafikk. Faktisk gjør ServiceMix ingen av de ovennevnte tingene dvs omformingen osv, det blir håndtert av noe som heter Apache Camel.

Camel kan gjøre en del ting som å håndtere innkommende trafikk og route det til riktig sted og omforme et dataobjekt fra et format til et annet feks XML til JSON. Prosjektet vil innlemme ServiceMix og Camel men foreløpig ser det ut som om det vil brukes i liten grad. Det er fordi casen jeg bruker er begrenset til en domene og en snevert probleAmstilling innenfor det domenet. Det brukes allikevel i prosjektet fordi uten det har jeg egentlig bare en liten del av en tjenesteorientert arkitektur som kan ta tak i interoperabilitetsproblematikken. Foreløpig har jeg ingen god case på interoperabilitet, men det er noe som kan komme senere.

ServiceMix støtter Apache CXF, som er en bibliotek som går på webservices og det er noe som helt klart blir en sentral del av prosjektet. Både ServiceMix og Camel støtter/bruker Apache CXF, så jeg er usikker hvor de skal brukes. Det kan være at når du bruker Camel på toppen av ServiceMix så er det opplagt at det er Camel og Apache CXF som gjelder. Hvis du har en mindre komplisert arkitektur holder det kanskje med ServiceMix og Apache CXF.

Tanken så langt er at alle systemer og grensesnitter håndteres av tjenestebussen. Det jeg er ut etter er et sted i arkitekturen der prosessbeskrivelser, innsynsforespørsler, interoperabilitetsproblematikken og datakvalitet kan behandles. Dette blir en sentral node i arkitekturen og med dette får du de klassiske problemene med sentralisering. Hvis bussen blir hacket kan potensialt alt lekke ut og det kan også bli noe problemer med tanke på resursbruk og hvordan systemet kan skalere. Men dette er en forskingsprosjekt, ikke en kommersiell produkt. Disse spørsmålene ville måtte svares hvis det skulle realiseres som et kommersiell produkt.

Framover kommer jeg til å jobbe med følgende. Få ServiceMix i gang med Camel og viser en enkel transformasjon av data. Ta tak i en definert grensesnitt og få den i gang på toppen av Camel. Se nærmere på domeneforståelse og  brukerhåndtering. Jeg regner de fleste kommuner bruker ActiveDirectory så jeg må jobbe med noe som gjenskaper den funksjonalisten, utan at jeg må selv bruke ActiveDirectory.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *