Web Services

Wees er zuinig mee...

Een Web Service op basis van het SOAP protocol en XML is een fraaie methode om gegevens uit te wisselen tussen twee servers, onder gebruik making van standaard internet protocollen als HTTP. 

Twee  programmeurs van ons St. Petersburg waren er zo enthousiast over dat ze er in 2002 zelfs een boek over geschreven hebben (te koop bij Amazon): "Web Services Development With Delphi, Platform interoperability, Data Exchange with XML and SOAP, Data Encryption. By Peter Darakhvelidze and Eugene Markov, ISBN 1-931769-08-7"). Wij weten (helaas) dus waar we over praten.

Met Web Services kan je op een schijnbaar eenvoudige manier systemen aan elkaar koppelen. Voor programmeurs lijkt het sterk op het aanroepen van een subroutine in een programma. Systemen als .Net zijn intern geheel gebaseerd op Web Services. 

Maar de praktijk valt vies tegen.

Wat hebben we zoal geleerd?   

Web Services betekent  veel extra vervelend werk
Onze programma's bleken door Web Services juist behoorlijk ingewikkelder te worden. Ons simpele idee was dat we een XML bestandje klaar zetten, Web Service aanroepen, wat fouten afhandelen en klaar.
Oh, wat waren we dom, wat heeft dat veel tijd, geld en weekends extra werk gekost.
Want zo werkt het niet met Web Services.  Want wat denk je dat we vergeten zijn? Juist, die vervelende gebruikers.  En zoals je weet denken die niet  logisch en gestructureerd, die werken niet netjes achter elkaar.  Die snappen niet dat ze de volgorde van onze Web Service moeten aanhouden, en daar hun wijze van werken op moeten afstemmen. Die doen alles door elkaar. En die gebruikers zitten niet achter ons systeem, maar achter een ander systeem. Een systeem dat wij vaak niet controleerden of beheerden.

Voordat we het wisten zaten we  tientallen verschillende web boodschappen heen en weer te sturen, allemaal met een eigen inhoud. En elk van die booschappen kon natuurlijk weer fout gaan, wat vervolgens afgehandeld moest worden. 
En gebruikers zijn erg goed in het laten doorvoeren van kleine wijzigingen.
Ja, vaak droomden wij weer van de goede oude tijd, toen alles nog op één systeem draaide, zonder applicatieservers, toen de wereld nog overzichtelijk was. 

Web Services zijn tergend langzaam
Als je even nadenkt over wat een computer allemaal extra moet doen, wordt het elke programmeur terstond duidelijk dat Web Services langzaam moeten zijn. En het zal je niet verbazen: Web Services zijn ongelofelijk traag. Nee, niet als je aan het programmeren bent, maar later als die gebruikers allemaal tegelijk al die gegevens zitten in te kloppen.  Of als dat fraaie batch proces gevuld wordt met grote hoeveelheden data.  Het aantal round trips tussen client, via de applicatieserver naar de database server is al snel enorm.  En daar zit hem de vertraging. En wie beginnen dan te klagen? Juist weer die ongestructureerd werkende gebruikers!

Web Services zijn moeilijk te beheren
In CMMI (een Amerikaanse ontwikkelmethode die wij gebruiken) wordt veel aandacht besteed aan het beheer van Interfaces. Bij Web Services gaan we hierin geregeld in de fout. Het gemene van Web Services is dat het zo eenvoudig lijkt, je kan immers XML onbeperkt uitbreiden met nieuwe velden. Maar vaak heeft dat ook invloed op bestaande velden. De organisatie hiervan is een project op zich, waarbij veel vergaderingen en vooral veel managers nodig zijn. 
En ondanks al die managers lukt het nooit om twee systemen op hetzelfde moment aan te passen. Onze arme programmeurs moeten dan ook vaan twee of drie versies van web services onderhouden. Elke versie is net een beetje anders.

Security 
In de dagelijkse praktijk zou op voordeur van zijn huis een papiertje plakken, met instructies waar precies je geld en je mooie  laptop ligt. De dief heeft alleen nog een sleutel of wat breekijzers nodig.
Maar bij Web Services is dat voorgeschreven: Web Services publiceren  hun interface. Maar hiermee is een groot beveiligingsprobleem geïntroduceerd. Je geeft onverlaten een keurige instructie, met aanwijzingen hoe ze moeten binnendringen.  

De Web Services Moraal
De moraal van dit verhaal is dat je niet lukraak met Web Services moet strooien. Minimaliseer Web Services tot het hoogst noodzakelijke: alleen op die punten waar een extern systeem toegang moet krijgen. En hou dan rekening met een behoorlijke ingewikkelde interface, waarbij veel boodschappen heen en weer worden gestuurd. Web Services kosten dus veel tijd en geld.

Nog steeds enthousiast over XML? Lees dan verder over SOAP

©1996-2008 Lizatec
<  XML hoe gebruiken? SOAP Gebruiken?   >