Microservices versus modulaire monoliet: schaal maakt het verschil
Microservices-architectuur, gepopulariseerd door bedrijven als Netflix, wordt vaak gezien als de moderne standaard voor softwarearchitectuur. Het concept draait om het opsplitsen van applicaties in kleine, onafhankelijke services die elk een specifieke functie vervullen. Dit maakt het mogelijk om onderdelen individueel te schalen en te onderhouden.
Deze architectuur ontstond ruim tien jaar geleden in Silicon Valley vanuit de behoefte aan schaalbaarheid. Netflix bedient miljoenen gebruikers wereldwijd tegelijkertijd en moet kunnen schalen per regio. De infrastructuur moet bestand zijn tegen extreme pieken in gebruik en continuous deployment kunnen ondersteunen, zonder downtime.
De schaalgrootte van Netflix is echter een stuk groter dan de realiteit waar veel organisaties in ons land mee te maken hebben. Waar Netflix miljarden transacties verwerkt, hebben grote Nederlandse organisaties vaak te maken met enkele duizenden tot miljoenen transacties per dag.
Een modulaire monoliet biedt daarom een alternatief; deze architectuur combineert de voordelen van een monoliet (denk aan eenvoudigere deployment, betere dataconsistentie, lagere operationele complexiteit) met de flexibiliteit van modulaire opbouw. Het belangrijkste voordeel: modules kunnen later alsnog worden omgezet naar microservices, als de schaal dit werkelijk vereist.
Meer weten over de modulaire monoliet? In deze aflevering van Business Vooruit met IT bespreken een aantal collega’s deze ‘tegenbeweging’ en zoeken ze antwoord op de vraag: kunnen we het beste van beide werelden combineren?
Server-Driven UI: flexibiliteit versus complexiteit
Server-Driven UI is een architectuurpatroon waarbij de gebruikersinterface wordt aangestuurd vanuit de server. Bedrijven als Netflix, Reddit en Zalando passen dit toe om sneller updates te kunnen doorvoeren zonder app-releases.
Voor grote techbedrijven is het van belang om snel te kunnen experimenteren met UI-varianten en functies, zonder dat een app store reviewproces dat vertraagt. Nederlandse organisaties daarentegen brengen minder frequent updates uit en hebben zelden behoefte aan grootschalige A/B-tests. De complexiteit van een server-driven UI-architectuur kan daardoor in veel gevallen zwaarder wegen dan de voordelen.
Wat deze aanpak moeilijk maakt, is dat de backend kennis moet hebben van hoe de UI gerenderd moet worden. Dit leidt vaak tot het ontwikkelen van een eigen Domain Specific Language (DSL), wat niet alleen complex is, maar ook de onboarding van nieuwe teamleden bemoeilijkt. Daarnaast wordt debugging uitdagender: het is niet altijd direct duidelijk of een fout in de frontend of backend zit, doordat tracing lastiger is. Ook moeten er strategieën worden bedacht om de applicatie offline bruikbaar te houden. Tot slot brengt het verplaatsen van de logica naar de backend performance-uitdagingen met zich mee, aangezien de infrastructuur hierop aangepast moet worden en de meeste load niet langer door de client wordt gedragen, maar door de server.
Voor specifieke use-cases, zoals customer service portals of content-gedreven applicaties, kan server-driven UI waardevol zijn. Voor de meeste applicaties is een traditionele aanpak met moderne frameworks echter effectiever en makkelijker te onderhouden.
Rust: trending maar niet voor iedereen geschikt
Rust wordt gepresenteerd als de nieuwe programmeertaal voor high performing systemen, met sterke garanties voor memory safety en concurrent programming.
Voor techbedrijven met specifieke performance-eisen en grote ontwikkelteams is het zeker interessant om te investeren in nieuwe technologieën. Veel Nederlandse organisaties hebben vaak beperktere development teams en moeten pragmatischer omgaan met technologiekeuzes. De beschikbaarheid van developers en de onderhoudbaarheid van code zijn heel belangrijke factoren.
Voor veel Nederlandse organisaties bieden bewezen talen zoals C# of Java voldoende performance voor de meeste use-cases. Bijkomend voordeel: deze talen hebben een groot ecosysteem van developers en tools. Rust kan wel een verstandige keuze zijn als de memory footprint van groot belang is, maar de AOT (Ahead of time compilation) optie voor c#/java levert tegenwoordig een bijna gelijke footprint op.
Meer weten over Rust? In dit artikel legt Amy van Bijsterveldt uit waarom deze taal in rap tempo wordt omarmd door grote technologiebedrijven.
Nuchter en kritisch innoveren
Kortom: de Nederlandse software-industrie kan veel leren van Silicon Valley, maar niet elke trend is relevant voor elke organisatie. Door nuchter en kritisch te kijken naar de werkelijke behoeften van organisaties en de beschikbare resources, kunnen we betere keuzes maken in technologie en architectuur.