Het programmeerbare netwerk om beter om te gaan met ongestructureerde big data
Big data is complex en veelal ongestructureerd. Hoe deze data is samengesteld, is uiteraard van belang voor ontwikkelaars die met de data aan de slag gaan, maar ook voor het netwerk en de wisselwerking tussen het netwerk en die data. Voor de flexibiliteit van gehoste services is programmeerbaarheid vereist, omdat data niet altijd de regels volgt.
Het netwerk en de op het netwerk gehoste services (zoals firewalls, load balancers en caches) zijn doorgaans gewend aan zeer duidelijk afgebakende gestructureerde data. Switches en routers zijn snel, omdat de gegevens waaraan ze beslissingen ontlenen altijd hetzelfde vaste schema hebben.
In datacenters die steeds meer vanuit de applicatie functioneren, worden de netwerkbeslissingen aangestuurd door die applicatie - en vaak de data die erin is vervat. Dit geldt met name voor netwerkservices van hogere orde (laag 4-7) die specifiek worden uitgevoerd op applicatiedata om de performance en beveiliging te verbeteren. Daarnaast geldt dit ook steeds meer voor ondersteunende DevOps-gerichte architectuurtopologieën zoals A/B-testen, Canary Deployments en Blue/Green Architectures.
Zulke data is meestal niet gestructureerd. Het mechanisme waarmee de ongestructureerde big data wordt overgedragen naar de applicatie brengt deze uiteindelijk ergens in een database onder. Alle data, gestructureerd of niet, gaat door een netwerk van services voordat het de voorlaatste bestemming bereikt.
Programmeerbaarheid is handig bij gestructureerde data, zeker wanneer complexere logica nodig is om beslissingen te nemen. Het is echter niet noodzakelijk. De functionaliteit is immers ook te integreren in een service die wordt gehost op het netwerk. Maar wanneer data ongestructureerd is en er geen standaard bestaat, is programmeerbaarheid in het netwerk nodig om te kunnen beschikken over architectuurcapaciteiten. Intermediary's kunnen zo worden geconfigureerd dat ze data extraheren en verwerken.
Om ongestructureerde data in een payload te krijgen, is programmeerbaarheid op het niveau van executable logic nodig. Eenvoudige, configureerbare opties zijn niet toereikend. Voor allerlei DevOps-gerelateerde architecturen en API-proxy-capaciteiten is programmeerbaarheid vereist, vanwege de extreme variabiliteit in de implementatie. Een intermediary of proxy kan gewoon niet kant en klaar zo'n enorme, bijna onbeperkte set mogelijkheden ondersteunen, omdat juist de definitie van de data niet gemeenschappelijk is. Zelfs als de data in de ogen van de ontwikkelaar gestructureerd is, is het toch ongestructureerd. Er is immers geen schema om het te beschrijven (denk aan JSON versus XML) en er is geen geaccepteerde, gepubliceerde norm.
Hoe meer ongestructureerde data door het netwerk passeert, des te meer is programmeerbaarheid in het netwerk nodig om de moderne architecturen mogelijk te maken die vereist zijn voor de ondersteuning.