Kleine stapjes

Je kunt ervoor kiezen om vanuit jouw behoefte aan flexibiliteit de totale IT architectuur van de hele organisatie op de schop te nemen. Vaak is deze rigoreuze aanpak niet erg effectief. Je belandt al snel in een situatie waarin alle oude systemen nog minder flexibel en betrouwbaar zijn dan ervoor, en de prognose wanneer het nieuwe landschap bedrijfsklaar is wordt steeds verder naar achteren geschoven. De politieke steun daalt onder het nulpunt en iedereen moet zo ver uit zijn of haar comfort zone komen om met de nieuwe manier van werken vertrouwd te raken, dat ook bij de gebruikers iedereen klaagt. Dus hoe dan wel?
 
Stel je voor: het IT landschap is een huis, de web-site is een staande schemerlamp. Hoe voorkom je dat je schemerlamp vastzit aan je huis? Met een stekker en een stopcontact! Hoe voorkom je dat je web-site vastzit aan je IT landschap? Met een API. Dat staat voor Application Programming Interface. De belangrijke term hier is Interface, de Nederlandse vertaling is koppelvlak. Wij gebruiken de term koppelvlak omdat die term goed omschrijft waar het ons om gaat. Als we met techneuten gaan praten, dan gebruiken we natuurlijk als goede Marketeers de taal van onze doelgroep en noemen we het weer een API (ik zeg meestal éé-pie-aai, maar aapie vindt ook niemand gek).
 
Dus als je wilt dat bezoekers iets kunnen bestellen op je web-site, dan heb je een koppelvlak nodig met de catalogus en met het order-invoersysteem. Een IT architect kan je helpen om te bedenken met welke systemen je koppelvlakken nodig hebt en wat je minimaal van dat koppelvlak nodig hebt. Begin simpel. Het koppelvlak met de catalogus kan een wekelijkse export uit het ERP systeem zijn. Laat je helpen door een architect of analist om oplossingen te bedenken voor addertjes onder het gras (wat doe je als een klant een openstaande order heeft op een product dat uit de catalogus is verwijderd).
 
Laat IT vervolgens deze koppelvlakken bouwen tegelijk met een minimaal stukje web-site (web-app) dat dit koppelvlak gebruikt. Stuur daarbij op de principes van Scrum: bouw kleine afzonderlijk te gebruiken onderdeeltjes. Lever zo snel mogelijk iets op dat werkt. Begin klein en bouw het stap voor stap uit. Iedere stap moet waarde toevoegen. Idealiter worden het koppelvlak en de web-app door hetzelfde team gemaakt. Je kunt wel het koppelvlak met de catalogus en de bijbehorende web-app door één team laten maken en het koppelvlak met het order-invoersysteem en de bijbehorende web-app door een ander team.
 
Het koppelvlak wordt zo dicht mogelijk bij de applicatie(s) geplaatst dat het ontsluit en beschikbaar gesteld aan de buitenwereld (met voldoende beveiligingsmaatregelen natuurlijk). De web-app wordt in de cloud gehangen. Bij elke oplevering kijk je of de web-app nu de nieuwe functies heeft en of de informatie en de acties in de web-app consistent zijn met de gegevens in de rest van het IT landschap. Stel bij deze web-app nog geen eisen aan de vormgeving of de gebruikerservaring, dat is zonde van de tijd en energie die erin gaat zitten.
 
Als de benodigde koppelvlakken ver genoeg ontwikkeld zijn, kun je beginnen met een productie web-app voor een complete winkel. Wederom bij voorkeur door één team. Dit team kan starten door te kijken naar de web-apps die de eerdere teams hebben gemaakt. Deze demonstreren hoe de koppelvlakken moeten worden aangesproken. Het nieuwe team integreert de koppelvlakken en voegt vormgeving en een prettige gebruikerservaring toe (bijvoorbeeld, strakke opmaak met de kleuren en lettertypen van de huisstijl, uitklapbare menu’s, harmonica, tijdlijn, directe validatie van invoervelden, vertaalde labels, informatieve tooltips, etc.).
 
Laat ook een koppelvlak maken waarmee losse web-apps in de complete web-site geïntegreerd kunnen worden. Idealiter kun je bij elke web-app instellen welke URL de browser gebruikt om de web-app aan te spreken, bijvoorbeeld https://acme.nl/winkel/. Via het koppelvlak met de web-site kan dan worden ingesteld dat alle URLs die beginnen met https://acme.nl/winkel/ worden doorgestuurd naar de cloud instantie waarop de winkel web-app draait. Naarmate de site en de bezoekersaantallen groeien, kan het koppelvlak van de web-site worden uitgebreid, zodat het verkeer naar de web-site kan worden afgehandeld door meerdere cloud instanties (bij pieken kunnen dat er heel veel zijn) en dat er ook meerdere instanties van dezelfde web-app gestart kunnen worden waarover het zoeken in de catalogus en en plaatsen van orders verdeeld kan worden. Bij een goede voorbereiding hoeft de programmatuur voor de web-app hiervoor niet aangepast te worden. Mogelijk moeten de koppelvlakken naar de achterliggende systemen worden aangepast om, bij piekbelasting, de achterliggende systemen te beschermen, bijvoorbeeld door orders in een wachtrij te plaatsen en één voor één aan te bieden aan het order-invoersysteem.
 
Als het achterliggende systeem er nog niet is, begin dan met een koppelvlak waarbij het indienen van een verzoek en het ophalen van het antwoord gescheiden handelingen zijn (dat heet asynchroon). Dan kun je eerst een hele simpele achterliggende module laten maken waarbij elk verzoek handmatig wordt afgehandeld. Als deze module dan later vervangen wordt door een echt geautomatiseerd systeem, dan geeft een asynchroon koppelvlak ook meer mogelijkheden om de binnenkomende verzoeken betrouwbaar en snel over meerdere servers te verdelen.
 
Projecten die in één keer een grote stap proberen te maken hebben een griezelig kleine kans van slagen. Ik noem dat: meteen naar de bovenste trede van een trap proberen te springen. Je kunt alleen kleine stapjes maken als het IT landschap uit kleine modules bestaat. Om er zeker van te zijn dat je een module afzonderlijk kunt vervangen of verbeteren moet je goed nadenken over de koppelvlakken die deze module aanbiedt en aanspreekt. Dit is belangrijker dan van tevoren proberen te bedenken welke modules je allemaal nodig gaat hebben.
Advertenties

Gepubliceerd door

Jeroen van Maanen

I am an experienced Software Developer with a passion for communication and delivering Business Value. I prefer to use Open Source platforms and tools whenever possible.

Reageer

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit /  Bijwerken )

Google photo

Je reageert onder je Google account. Log uit /  Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit /  Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit /  Bijwerken )

Verbinden met %s