Uitdagend afstuderen met schaalbare IoT-architectuur

Developer Bryan Koenders (26) realiseert graag complexe en uitdagende projecten. Het ontwikkelen van een schaalbare architectuur voor Internet of Things (IoT) toepassingen in een grote industriële omgeving was hem dan ook op het lijf geschreven. Hij neemt ons mee in de keuzes die hij maakte om tot de beste oplossing te komen.

Andere koek!

Voor Bryan was dit een boeiend afstudeerproject dat hij begin 2022 afrondde bij Covadis voor zijn deeltijdstudie HBO Software Development aan de HAN. Hierna is hij ook bij Covadis blijven werken. Na een eerdere MBO-studie had Bryan elders al ervaring opgedaan met IoT-toepassingen voor de agrarische sector. Maar dit nieuwe project was wel andere ‘koek’, vooral een grotere en complexere.

Bryan heeft onderzoek gedaan naar de architectuur voor een nieuw op te zetten architectuur voor IoT-gegevens bij klanten van Covadis. Het uitgangspunt was een casus waarin veel  (temperatuur)metingen worden uitgevoerd, maar nog zonder een reactief IoT-systeem. “Een achtergrondsysteem dat periodiek acties uitvoert op IoT-data kan flink trager worden of zelfs overbelast raken”, schetst Bryan.

Bovendien willen gebruikers het liefst werken met realtime data. Daarin lag de oplossing én de uitdaging. Als een systeem op een dag tienduizenden berichten verwerkt en de flexibiliteit en schaalbaarheid moeten omhoog, is al gauw een capaciteit nodig die vijf tot tien keer hoger ligt. Dit is gerealiseerd met een aparte realtime datastroom.

De oplossing

Na het onderzoeken van verschillende oplossingsrichtingen (o.a. Azure IoT Hub en het gekozen Azure Service Bus Sessions) en het ontwikkelen van prototypen koos Bryan voor deze casus uiteindelijk voor een Lambda-architectuur.

Vooral voor de verwerking van grote hoeveelheden data met twee verwerkingspaden: één voor continue realtime metingen en een batch-laag die periodiek alle data opnieuw verwerkt voor nog exactere uitkomsten. Dit is uiteindelijk de volledige waarheidsbron, maar het inzicht in de realtime data is ook waardevol voor gebruikers. “De trade-off is dat we realtime niet altijd het volledige antwoord hebben omdat sommige gegevens nog niet verwerkt zijn. Maar in de batchlaag wordt dit later opgelost.” 

Statefull dataverwerking

De Lambda-architectuur past niet bij elke oplossing. Het is complexer om op te zetten en het kost meer tijd, maar het zorgt wel voor het beste van beide werelden. Zo is de stap gemaakt naar statefull dataverwerking zonder dat er vertraging optreedt. Zo worden ook cumulatieve waarden – zoals temperatuurverloop in een bepaalde periode – goed verwerkt. Hierdoor wordt ook voorzien in de realtime behoefte én in een goed berekend en gecontroleerd eindresultaat.

Om dit allemaal te kunnen bouwen, is gebruikgemaakt van de kracht van verschillende Azure-oplossingen in het prototype dat er is gebouwd. De componenten die de berekeningen en andere verwerkingen doen, zijn gebouwd met behulp van Azure Function Apps. Dit zijn hele kleine componenten met code die losstaand van de rest van de oplossing kunnen worden op- en afgeschaald. Uitermate geschikt voor een systeem dat te maken heeft met problemen zoals piekbelasting.

Verder maakt de oplossing veel gebruik van de kracht van de Azure Service Bus. “Met een service bus kan je data versturen tussen verschillende componenten. De service bus lost hierbij een aantal problemen op, zoals het probleem dat een bepaalde service tijdelijk onbereikbaar is. De service bus heeft een ingebouwd systeem om de data opnieuw te versturen. Ik heb verschillende opties overwogen, maar deze implementatie van de service bus biedt alles wat nodig was.” Een belangrijke feature voor het systeem waren zogenaamde sessions. Hiermee dwing je af dat de data FIFO (first in, first out) wordt afgehandeld. Erg handig als de volgordelijkheid van data belangrijk is.

Boeiend vervolg

De schaalbare IoT-architectuur van Bryan is bij Covadis enthousiast ontvangen. Elementen uit de oplossing zijn ook al gebruikt bij klanten. Voor Bryan was zijn afstudeerproject boeiend, leerzaam en succesvol. Voor zijn collega’s was het een aangename kennismaking met de kwaliteiten en talenten van Bryan en zijn behulpzame houding. Hij heeft zijn HBO-studie afgerond en werkt sindsdien met veel plezier bij Covadis.

Bryan werkt nu aan boeiende nieuwe projecten die bij hem passen en bij de ontwikkeling die hij wil maken. Hij heeft bijvoorbeeld een passie voor auto’s en de auto-industrie. “Inmiddels werk ik aan een informatiesysteem voor demontage van auto-onderdelen. Het maakt duidelijk wat er met ieder onderdeel moet gebeuren. Het is geen IoT-systeem, maar heeft door de schaalbaarheid zeker overeenkomsten met mijn afstudeerproject. Maar wel met een nieuwe insteek en uitdaging. Zo kan ik me blijven ontwikkelen op een manier die bij mij past. Dat voelt geweldig. Het voelt ook eigenlijk niet als ‘werk’. Meer als een vriendenclub van gelijkgestemden, waar we samen boeiende dingen doen. Dat maakt dat ik me ontzettend thuis voel bij Covadis.”