Omegapoint

2009-09-13

SOA hos eBay

Sastry Malladi, distinguished architect på eBay, höll en föreläsning på årets JavaOne om företagets SOA-satsning under titeln SOA Deployment challanges in the real world.

Det presenterade materialet var i min mening kanske lite för ambitiöst, då föreläsaren under en timma täckte in både SOA på grundläggande konceptuell och applicerad nivå, samt försökte förklara de organisatoriska och tekniska utmaningar eBay själva stött på. Min gissning är att de flesta i publiken läst en bok eller ett par artiklar i ämnet och gärna besparat sig ytterligare slides med "SOA Benefits" och Lego-modeller.

Med detta sagt så fanns det dock en hel del mycket tänkvärd information om både de tekniska och organisatoriska utmaningarna. Jag tänkte i denna post koncentrera mig på de poänger som jag tyckte var mest intressanta, men vill samtidigt passa på att puffa för Malladis presentation som finns tillgänglig för SDN-medlemmar.

Teknik

Tekniskt så har eBay valt att implementera sin egen SOA-plattform, både, som det verkar, för att den hembyggda plattformen erbjuder bättre prestanda än existerande lösningar men inte minst för att kunna kontrollera komplexiteten i utvecklingsprocessen. Arkitekturen är baserad på ett pipeline-mönster där meddelandet passerar ett antal olika moduler (loggning, autentisering, etc) på väg in till tjänsteimplementationen, som således kan byggas utan logik för att hantera dessa steg.

Att placera loggning och authentisering i varsin handler kanske inte är direkt banbrytande, men att man gör samma sak med dataformat och transport finner jag däremot intressant. För många är SOA = Web services = SOAP+WS-* = XML + HTTP. eBays arkitektur är däremot mycket mer generös och tillåter, förutom XML, även format som JSON och Binary XML. Hemligheten ligger i användningen av JAXB.

Genom att låta en icke-XML parser implementera STAX-interfacet och sedan plugga in den i JAXB, kan JAXB "luras" att stödja godtyckligt markupspråk. Vilket dataformat som levereras bestäms av den anropande klienten, medan affärslogiken i tjänsten enbart arbetar mot JAXB objekten. På motsvarande sätt pluggar man in olika transportkanaler, som asynkron HTTP, synkron HTTP och serverintern leverans. Fiffigt!

Governance

eBay har, precis som många andra, konstaterat att de tekniska utmaningarna i ett SOA-fierat applikationslandskap är peanuts i jämförelse med de organisatoriska. Mycket av det som sas inom ramen för detta avsnitt var också "kända sanningar", som att man skall ha en governance-process, versionshantera tjänstekontrakt och datatyper, investera i utbildning och verktyg och så vidare. Två saker i presentationen väckte dock speciellt mitt intresse.

Den första var det tydliga ställningstagandet för "up front design and modeling". Jag tror de flesta idag tagit till sig poängen med "contract first", men jag tror också att det finns en kvardröjande tendens att bygga in sig i tjänstekontrakt som är för snäva och för anpassade för den första kunden, vilket i slutändan leder till försämrad återanvändningsbarhet och att man lika gärna skulle kunna ha löst problemet på ett ännu smidigare och helt skräddarsytt sätt. Genom att ta en, initialt, något högre kostnad för design av tjänstekontraktet kan man undvika sådana fallgropar.

Poäng nummer två berörde vikten av att hålla reda på vem som använder tjänsten och hur. I litteratur framhålls det ibland som en fördel att tjänsteproducenten i en tjänsteorienterad arkitektur inte behöver veta så noga vem konsumenten av tjänsten är. I min vy av verkligheten realiseras ofta denna ovetskap genom att ett word-dokument bollas runt tills det hamnar på gud-vet-vems skrivbord. Exakt vem som använder tjänsten är något som tjänsteproducenten antingen är helt ovetande eller endast svagt medveten om ända tills den dag en till synes oskyldig uppdatering av tjänsten driftsätts och telefonen börjar ringa. Malladi introducerar begreppet "Consumer Governance" som i sin snävaste tolkning handlar om processer för att på förhand godkänna anslutning till tjänsten och sedan under drift hålla reda på vem som faktiskt ansluter sig.

Sammanfattning

eBay ser ut att ha tagit sin satsning på en tjänsteorienterad arkitektur mycket seriöst. Det framstår som man investerat relativt mycket pengar i infrastruktur, verktyg och processer, dels för att kunna hålla ett högt tempo i nyutvecklingen men också för att göra de tjänster som utvecklas så tillgängliga och lättkonsumerade som möjligt.

Inga kommentarer:

Skicka en kommentar

Om Omegapoint

Omegapoint AB är ledande rådgivare och experter inom Systemarkitektur, Säkerhet och IT-ledning.

Twitter uppdateringar

Omegapoints kvitterström:

    Andra Omegapointbloggar