woensdag, mei 28, 2008

Wat SOA kan leren van Web 2.0

Je hoort het steeds vaker; SOA (Service Oriented Architecture). Veelal binnen grote, complexe organisaties. Dit is op zich niet zo verwonderlijk: grote organisaties hebben door de jaren heen veel geïnvesteerd in hun ICT-huishouding (denk aan organisaties als de Belastingdienst, de Informatiebeheer Groep, maar ook aan gemeentelijke, provinciale en landelijke overheden). Het argument van ‘sunk costs’ èn het bij voortduring aanpassen van hun systemen aan steeds veranderende marktomstandigheden, dwingen deze organisaties tot interoperabiliteit en hergebruik van hun ICT-systemen.

SOA lijkt hierop een antwoord te geven: an architectural style that supports loosely coupled services to enable business flexibility in an interoperable, technology-agnostic manner. SOA consists of a composite set of business-aligned services that support a flexible and dynamically re-configurable end-to-end business processes realisator using interface-based service descriptions (John Reynolds).

De mensen die ik spreek inzake het verloop van SOA projecten, trekken vrij snel een bedenkelijk gezicht – onbekend maakt onbemind? Onderzoek lijkt een dergelijke houding te rechtvaardigen. "It has become clear to me that SOA is not working in most organisations (...) They (software architecten, developers – FR) just can’t sell SOA to the business. They have yet to demonstrate how all this infrastructure yields any business value." (Anne Thomas Manes)

SOA is een probleem omdat veel van de aanwezige applicaties niet zijn ontworpen en niet zijn ontwikkeld om te ‘praten’ met andere applicaties (interoperabiliteit). De complexiteit, en daarmee het afbreukrisico, heeft te maken met:
  • de migratie van applicaties naar platformen
  • het gebruik van complexe standaarden en protocollen (bijvoorbeeld SOAP)
  • interoperabiliteit en hergebruik
  • een bedrijfsbrede software architectuur die als uitgangspunt overeind dient te blijven,
  • het feit dat de samengestelde applicaties nog steeds de applicaties-in-zichzelf zijn.
Kortom, SOA gaat uit van een top-down benadering (aanwezige, expliciete of impliciete, software architectuur als uitgangspunt), waarbij veel technische hoogstandjes (registries, repositories, SOA Management, XML gateways en ESB) nodig zijn om interoperabiliteit en hergebruik te bewerkstelligen. En dat binnen de organisatorische perceptie van een discutabele accountabiliteit (wat gaat het daadwerkelijk meer opleveren dan alleen minder ontwikkelkosten)!

Zolang we tussen de afgesloten silo’s en containers blijven rondzwalken en slechts met veel moeite deuren open weten te krijgen, blijven we teleurgesteld.... hoe mooi datgene ook is dat uit die containers kan komen!

Web 2.0
SOA heeft een andere window-of-opportunity nodig. Hiervoor dienen we naar de andere kant van het spectrum te kijken; de kant van de consument, namelijk Web 2.0.

Daar waar SOA zich richt op de ‘empowerment’ van de bestaande systemen, richt Web 2.0 zich op de ‘empowerment’ van de (eind)gebruiker. Web 2.0 toepassingen hebben de volgende kenmerken:
  • Applicaties worden ontwikkeld als platformen
  • Simpele standaarden en protocollen voor uitwisseling en integratie (RSS, REST, Syndicatie, widgets en Open API’s)
  • Zonder interoperabiliteit en herbruikbaarheid is er geen applicatie.
  • Ontwikkeling van de applicatie vindt plaats middels het netwerkeffect en virale adaptatie.
  • Focus ligt op een rijke gebruikerservaring (mashups, RIA).

Web 2.0 gaat uit van een bottom-up benadering; de eindgebruiker krijgt de beschikking over allerlei mogelijkheden om het platform (de applicatie) aan eigen voorkeuren en voor eigen doelstellingen en behoeften aan te passen.

SOA buiten de muren
De principes van een servicegerichte oriëntatie zoals SOA zijn niet nieuw. Organisaties als Amazon, Google, Ebay maar ook een Twitter en Facebook, bewijzen het succes van SOA. Amazon met haar ‘cloud services’ op het gebied van dataopslag, rekencapaciteit en intelligentie. Google met haar gigantische bibliotheek aan Open API’s, data en functionaliteit. De widgets en mashups van Twitter worden meer gebruikt dan Twitter zelf. Kortom, veel succesvolle web(business)concepten zijn SOA concepten! De genoemde bedrijven exploiteren een SOA wereldwijd: Global SOA.


Openheid, interoperabiliteit en hergebruik zijn de ‘ziel’ van Web 2.0 applicaties. Deze bezieling zien organisaties ook graag in hun legacy systemen. Traditionele SOA technologieën, zoals SOAP, WSDL en XSD, zijn in veel situaties afdoende...maar voor hoelang? De beweging is richting het web. Eindgebruikers brengen al hun data en relaties naar het web. Organisaties maken in toenemende mate gebruik van SaaS (Software-as-a-Service). De exponentiele groei van Global SOA concepten, zoals ‘cloud services’, vormen op den duur een nieuwe organisationele realiteit.


SOA kan haar ogen niet sluiten voor het tempo en de omvang van deze bewegingen. Dit betekent dat er situaties zijn waarbij de oplossing niet ligt in het nog meer inbrengen van complexiteit om interoperabiliteit te bewerkstelligen, en de bestaande bedrijfsbrede software architectuur niet het meest geschikte kader vormt.

Is Web 2.0 de toekomst van SOA? Kortom, dienen we te spreken van een Web Oriented Architecture (WOA)?
Hiertoe zijn twee perspectieven van belang; een technologisch perspectief en het gebruikersperspectief.

Vanuit een technologisch perspectief zijn de belangrijkste verschillen;
- SOA hanteert relatief kleine en goed omschreven end-to-end koppelvlakken voor een grote diversiteit aan data. WOA hanteert een relatief breed scala aan open-ended koppelvlakken; een URI identified koppelvlak voor elke individuele resource (i.p.v. type resource).
- SOA gebruikt veelal SOAP als messaging laag (boven op HTTP), met als gevolg complexe, ondoorzichtige en case-specifieke problemen voor de ontwikkelaar. WOA gebruikt HTTP en hieraan gerelateerde uitwisselingsmechanismen (bijvoorbeeld REST).
- SOA hanteert een vendor georiënteerde top-down benadering waarin de applicatie centraal staat. WOA hanteert een bottom-up benadering waarbij gebruik gemaakt wordt van simpele procedurele talen en een XML-parser.
- SOA hanteert WS-Security en andere complexe veiligheidstandaarden (die niet in elke situatie nodig zijn). WOA maakt in de meeste gevallen alleen gebruik van HTTPS.
- Traditionele SOA's hebben een slechte performance binnen de browser en binnen mashups terwijl WOA in principe overal een goede performance geeft (in de browser of bijvoorbeeld binnen een AIR applicatie).

In de meeste discussies over SOA staan de applicaties centraal. Web 2.0 adresseert niet alleen de relatie tussen applicaties onderling en data, maar ook de sociale dimensie; de relaties tussen mensen. Het adresseren van het gebruikersperspectief, analoog aan de wijze waarop dit reeds op het web plaatsvindt, kan de huidige SOA praktijk verrijken. Veel software architecten en ontwikkelaars binnen de IT-afdelingen van grote organisaties keren zich af van de discussies rondom Web 2.0, juist vanwege het dominante sociale aspect. Dit is jammer, en men doet de eigen organisatie tekort en op den duur schade! Het succes van organisaties hangt af van de mate waarin men in staat is mensen binnen en buiten de organisatie met elkaar te verbinden en te binden.

Web 2.0 heeft geleid tot een nieuwe renaissance – de ‘bevrijding van de eindgebruiker’. Veel organisaties hebben hierdoor extra inkomstenbronnen weten aan te boren en er zijn geheel nieuwe bedrijven en bedrijfstakken ontstaan.

SOA kan die impact hebben binnen organisaties. Voorwaarde is dat men naast het technologisch paradigma een sociaal paradigma hanteert. Organisaties vormen een verzameling van mensen, van door mensen ontworpen en ontwikkelde systemen, van door mensen bedachte structuren en een door mensen gedeelde en gedragen cultuur. Wij kunnen besluiten om het anders te doen!!