De 6 eigenschappen van goede middleware software
We kunnen ons tegenwoordig geen wereld meer inbeelden waar we geen gebruik maken van allerlei cloud-based oplossingen en diensten. Ook op de werkplek heeft SaaS (Software-as-a-Service) definitief zijn intrede gemaakt. Hierdoor stijgt de vraag om verschillende cloud-based oplossingen met elkaar te laten communiceren. Niemand wil namelijk op 2 verschillende plaatsen dezelfde data gaan onderhouden.
Voor veel SaaS platformen zijn er standaard connectoren voorzien met andere SaaS platformen, maar vaak schieten deze functioneel nog te kort of is de exacte match tussen de 2 systemen niet beschikbaar. In dat geval kan het interessant zijn om te kijken naar een maatoplossing om de verschillende platformen met elkaar te verbinden. Naar dit soort 'middleware software' wordt ook vaak gerefereerd als een 'connector'. Het enige doel is hier om 2 andere systemen succesvol met elkaar te verbinden, waardoor deze software meestal geen eigen grafische interface heeft.
Bij Unikoo hebben we ervaring met het connecteren van cloud-gebaseerde oplossingen binnen uiteenlopende projecten. Zo hebben we voor een van onze klanten, actief in HR-technologie, connectoren gebouwd die het SAP SuccessFactors ecosysteem en het Spencer employee communication platform met elkaar verbinden. Hierbij hebben we ook integraties voorzien met het Play It Safe game based learning platform. Daarnaast werken we momenteel aan een op maat gemaakte integratie op het Monday.com platform in combinatie met het Teamleader CRM platform.
In deze blogpost bespreken we de eigenschappen waar wij veel aandacht aan besteden in onze aanpak van dergelijke maatoplossingen met middleware software.
1. Flexibel schaalbaar
Bij cloud-gebaseerde oplossingen is schaalbaarheid altijd een belangrijk aandachtspunt. Het aantal afnemers zal groter worden doorheen de tijd, waardoor je best al vanaf het begin streeft naar een vlot schaalbare oplossing.
In die schaalbaarheid is het echter belangrijk om ook rekening te houden met de beperkingen van de upstream en downstream applicaties: het kan niet de bedoeling zijn dat de middleware één van de systemen die het ontsluit gaat overbelasten omdat het te snel of te veel data probeert door te sturen. Queueing mechanismen kunnen hierbij een oplossing bieden zodat de middleware per systeem kan gaan bepalen welke data er wanneer wordt doorgestuurd.
2. Gestructureerd
Omdat middleware componenten zelden een grafische interface hebben, is het erg belangrijk om duidelijke herkenningspunten te voorzien in de structuur waaruit de software is opgebouwd. Je wil vermijden om vanaf het begin één groot script te creëren dat verantwoordelijk is voor alles en al snel niet meer onderhoudbaar is. Duidelijk afgelijnde componenten en functies met eenvoudige verantwoordelijkheden zijn daarbij key. De SOLID principes zijn hier dus zeker van toepassing.
3. Multi-tenancy
De meeste SaaS platformen zijn reeds voorzien op het concept van 'multi-tenancy'. Concreet betekent dit dat er meerdere klanten of accounts actief zijn op één en hetzelfde platform. Binnen SuccessFactors heeft bijvoorbeeld elk bedrijf zijn volledig afgeschermde omgeving, met enkel toegang tot zijn eigen data, maar achterliggend loopt dit vaak op éénzelfde cloudplatform.
Deze multi-tenancy moet dus vanaf het begin mee voorzien worden in het ontwerp van middleware software, waarbij het ook belangrijk is om rekening te houden met de GDPR wetgeving. Als je hier onvoldoende rekening mee houdt, kan dit achteraf vaak tot heel lastige en moeilijk oplosbare issues leiden.
4. Kosten-efficiënt
De klant betaalt vaak al licentiekosten voor de SaaS platformen die je probeert te connecteren. Aan een middleware component zijn logischerwijs ook kosten verbonden, maar het is belangrijk dat deze in verhouding staan tot de totaalkost en de business value die de klant hecht aan de integratie. Als het goedkoper is om iemand de data manueel te laten overzetten, heeft het geen zin om een connector te gaan bouwen.
Gelukkig beschikken we over oplossingen die ons toelaten om zeer efficiënt software te runnen en hierbij ook nog eens perfect schaalbaar te zijn. Binnen Unikoo maken we daarvoor graag gebruik van een serverless oplossing omdat deze toelaten om als klant enkel te betalen voor de capaciteit die je effectief verbruikt. Stel dat je connector elk uur gedurende 10 seconden actief is, dan is het toch te gek om daarvoor 24/7 te betalen. Serverless oplossingen bieden dus de mogelijkheid om naar een zuiver 'Pay-per-use' model te gaan, dat vele malen goedkoper is dan het klassieke dedicated of shared server model.
5. Event-driven
De combinatie van een vaak asynchrone werking, een serverless model en een sterke focus op schaalbaarheid maakt dat dit soort van oplossingen uiterst geschikt is voor een event-driven architectuur. Zonder te veel op de details in te gaan, bestaan event-driven systemen uit losse componenten die elkaar niet rechtstreeks aanspreken, maar enkel events genereren. Andere componenten kunnen er dan voor kiezen om deze events te consumeren en daar zelf op hun beurt actie mee te ondernemen. Zo krijg je zeer flexibele en schaalbare oplossingen die enkel actief zijn wanneer er effectief iets moet gebeuren (bv. wanneer er een event getriggerd wordt).
6. Goede monitoring en logging
Doordat er vaak geen grafische interface aanwezig is, zijn er ook geen eindgebruikers die een foutmelding te zien krijgen wanneer er iets misloopt. Het is dus van cruciaal belang dat je snel kan vaststellen wanneer de connector niet loopt zoals verwacht en dat je ook kan zien wat er aan de hand is. Wanneer er van een serverless oplossing gebruik wordt gemaakt is dit nog belangrijker aangezien je veel verschillende losse elementen hebt. Het opzetten van een goede logging strategie, in combinatie met een overzichtelijk monitoring dashboard kan hier een wereld van verschil maken.
Wil jij verschillende cloud-gebaseerde oplossingen met elkaar verbinden dankzij een middleware software en kan je hierbij onze hulp gebruiken? Neem vrijblijvend contact met ons op via hello@unikoo.be en wij bekijken hoe we je hierbij kunnen helpen!