Internet of things (IoT) zal de komende jaren een snelle groei doormaken. De hoeveelheid en verscheidenheid aan op de cloud aangesloten apparaten die sensor data uitspugen waarop analyse kan worden losgelaten en waarmee business processen geoptimaliseerd kunnen worden zal een enorme vlucht nemen. Nieuwe architecturen zullen hier voor nodig zijn, en microservices zijn waarschijnlijk een blijvertje.
De grote hype rond IoT is net begonnen en we kunnen verwachten dat er op het gebied van it-investeringen veel zal gebeuren in deze hoek. Wie wil er niet veel beter processen kunnen besturen en de marge op het geleverde product of de geleverde dienst zo hoog mogelijk maken. Fijnmazig inzicht krijgen in wat er precies gebeurt in de hele productie- of dienstenketen en zo betrouwbaar mogelijk kunnen voorspellen wat er gaat gebeuren is goud waard.
In een IoT-architectuur zijn de volgende componenten van belang:
– De things; de op de cloud aangesloten dingen die zonder menselijke tussenkomst (veelal sensor) data genereren en die, in sommige gevallen, weer input terug kunnen krijgen om actie te ondernemen.
– De (cloud)infrastructuur en diensten om de volgende acties te kunnen ondernemen:
- Ontvangen van de grote hoeveelheden data, gegenereerd door de things.
- Opslaan van deze data.
- Analyseren van deze data, real-time maar ook door middel van predictive analysis.
- Genereren van ‘business events’ als gevolg van deze analyses.
- Orkestreren van deze business events door middel van integratie logica.
- Eventueel terugsturen van data naar de things, zodat deze actie kunnen ondernemen.
– De (cloud)applicaties die de business events kunnen afhandelen en weer nieuwe business events kunnen genereren.
De things zijn meestal kleine machines met hun eigen processor, besturingsysteem en sensoren en wat ‘hard-wired’ logica. Er kan mee gecommuniceerd worden door middel van lichtgewicht api’s. In feite zijn het dus microservices. Ze zijn namelijk volledig autonoom, draaien in hun eigen process space en leveren een kleine dienst. Een thing is dus de ultieme vorm van een microservice!
Om de grote hoeveelheden gegenereerde data snel en efficiënt te kunnen verwerken is een architectuur nodig die ‘lightweight mediation’ ondersteunt; snel, met zeer weinig overhead de gegenereerde events kunnen distribueren naar de juiste ontvangers. Zo’n ontvanger kan bijvoorbeeld een NoSQL-database zijn, maar ook een machine learning service. De NoSQL-database slaat de events op en kan deze weer ontsluiten richting andere geïnteresseerden. Dit maakt offline analyse mogelijk. De machine learning service kan, door middel van vooraf ontwikkelde modellen, bepalen of er op basis van het gegenereerde event en de voorgaande events eventueel een actie moet worden ondernomen. Dit zal leiden tot een business event. Indien het laatste het geval is, zal deze actie als event worden gepubliceerd en zal de lightweight mediation laag het verder afhandelen. Dit alles is tijdkritisch en moet zo snel mogelijk gebeuren. Want vele volgende events komen er aan en moeten ook aandacht krijgen.
Het gegenereerde business event zal door de orkestratielaag verder verwerkt moeten worden. Hier kunnen meerdere businessapplicaties en diensten bij worden betrokken. Hier praten we niet meer over lightweight mediation, maar over een service bus of applicatie integratie middleware. Het tijdkritische is hier veel minder van belang; wat hier belangrijk is, is gegarandeerde afhandeling en transactionaliteit. Ook is hierbij de traceerbaarheid van belang. Deze orkestratielaag is iets wat we vaak al hebben draaien. Denk hierbij aan de traditionele integratie middleware zoals Microsoft BizTalk Server, Tibco of WebSphere Message Broker (en vele anderen). Deze orkestratielaag kan zowel in de cloud als, vaak nog, on-premises draaien.
Bij de lightweight mediation laag draait het om de volgende taken:
– Lightweight transformatie (bijvoorbeeld JSON naar XML en vice versa).
– Routering.
– Toepasssen van policies voor security.
– Lightweight service compositie.
In de lightweight mediation laag is mijns inziens geen plaats voor zaken als message batching, zware XSLT-transformaties en longrunning transactions. Hier is het van belang om in microservices te denken, die ook daadwerkelijk lichtgewicht, enkelvoudige taken kunnen uitvoeren en die door middel van lichtgewicht compositie aan elkaar kunnen worden geregen.
Ik voorzie een blijvende hybride integratie wereld. Niet omdat EAI alleen on-premises kan draaien of omdat we graag integratie oplossingen willen laten landen in de cloud, maar omdat cloudintegratie in een IoT wereld om Microservices en lightweight mediation gaat, en dat die wereld aan bestaande (vaak on-premises) infrastructuur moet worden gekoppeld door middel van transacties en orkestratie. Hybride integratie draait wat mij betreft dus om het koppelen van een Microservices architectuur aan traditionele integratie middleware, ongeacht waar deze laatste draait. Het zal hierbij een uitdaging worden om end-to-end run- en designtime governance toe te gaan passen. Maar dat we dat nodig gaan hebben is zeker.
IoT is de grote aanjager van microservices en integratiespecialisten zullen beide integratievarianten onder de duim moeten gaan zien te krijgen!