Persistent storage in containers: meer ‘bang for your buck

Organisaties, en de software en hardware die zij gebruiken, veranderen door de trend van containertechnologie. Toch is er één aspect dat tot dusver over het hoofd is gezien: storage. OpenEBS zorgt voor de volgende optimalisatieslag, door persistent storage in containers mogelijk te maken.

Van intern beheersysteem voor applicaties bij Google tot wereldwijde standaard voor applicatiemanagement. Maar weinig mensen hadden rond 2003 kunnen vermoeden dat dit systeem, toen nog onder de naam ‘Borg’, in de verschijningsvorm Kubernetes een IT-revolutie teweeg zou brengen. De manier waarop organisaties hun applicaties bouwen, is er ingrijpend door veranderd. Hetzelfde geldt voor de hardware waarop deze draaien en de mensen die de gebouwde applicaties in productie brengen. Dit is inmiddels algemeen bekend en breed geaccepteerd in de IT-wereld.

Kubernetes, en dan?
Wij hebben mensen in talloze organisaties gesproken die bezig zijn met het bouwen van cloud-native applicaties en Kubernetes. Drie dingen vielen daarbij op. Ten eerste is de software zelf enorm veranderd. Cloud-native applicaties zijn relatief complex, door het gebruik van verschillende protocollen en componenten die moeten samenwerken. In zekere zin heb je het dan over een gedistribueerd systeem. De software wordt bovendien zó geschreven dat deze kan falen. Het maakt niet uit waar: in een rack in een datacenter, in verschillende regio’s of virtuele omgevingen of bij verschillende providers. En dan is er schaalbaarheid, welke vroeger bepaald werd door het toevoegen van hardware, maar inmiddels opgesloten zit in de applicatie zelf. Veranderende programmeertalen, zoals Go Lang, Ballerina en Metaparticle, maken dit mogelijk.

Een tweede aspect is de mens. Het DevOps-persona is andersdan de traditionele ontwikkelaar, in de zin dat er een app gebouwd wordt in een infrastructuur die al cloud-native is. De DevOps-cultuur betekent het werken in relatief autonome teams, die niet alleen verantwoordelijk zijn voor de code zelf maar ook het bouwen, testen en deployen. En dan het derde aspect: de hardware. De Wet van Moore is nog steeds van kracht, maar de dimensie van schaalbaarheid verandert. Niet de kloksnelheid bepaalt de kracht, maar het aantal CPU-cores. Dit opent de deur naar het parallel uitvoeren van processen, iets waar bouwers van software steeds meer rekening mee houden. Maar er is één speler die nog over het hoofd wordt gezien: storage. De komst van Non-Volatile Memory Express (NVME) betekent dat er een protocol is dat impact heeft op de manier waarop cpu’s data wegschrijven naar devices. Oftewel: “Applications have changed and somebody forgot to tell storage”.

Persistent storage in containers
Het is nu mogelijk veel meer data dan voorheen weg te schrijven naar devices en dit ook persistentte doen. Cloud-native programmeertalen bevatten ook de mogelijkheden om het developers op dit vlak eenvoudig te maken (middels concurrency primitives). Bouwers van applicaties kunnen er dan bijna niet omheen dat storage verandert met de komst van containertechnologie en Kubernetes. De vraag is vooral hoe we ervoor zorgen dat we wél persistent workloads hebben, zonder terug te hoeven vallen op een centraal storage-systeem. De manier waarop wij dit doen is nagenoeg gelijk aan hoe Kubernetes de onderliggende infrastructuur abstraheert, maar dan op de datalaag. Het wordt eigenlijk een kwestie van routeren. De ontwikkelaar kan bepalen waar hij de data wil hebben en hoe. Bijvoorbeeld encrypted, gerepliceerd, gecomprimeert, wel of geen snapshot. Deze keuzevrijheid, ingegeven door de ‘DevOps way of working and thinking’ van verantwoordelijkheid en autonomiteit, brengt storage terug naar de developer.

Dit doen wij door middel van open-source software waar wij zelf ook aan bijdragen: OpenEBS. Wij schrijven storage-systemen zelf, volgens de DevOps-methodiek. Het draaien van storage binnen containers is relatief nieuw en zorgt ervoor dat de developer meer vrijheid krijgt bovenop de onderliggende storage-infrastructuur. Een groot voordeel is dat het online migreren van applicaties en data tussen verschillende cloudvendoren of on-premise systemen eenvoudiger wordt. Door de software-tussenlaag stroomt data immers naadloos mee. Dit geeft het DevOps-team nog meer vrijheid. Deze kan een keuze baseren op de databehoefte, niet op het onderliggende storage-systeem. Dat draait immers volledig in containers. Kortom: Container Attached Storage (CAS), geoptimaliseerd per workload met de developer ‘in control’. Een systeem dat draait in Kubernetes, met een focus op moderne NVME-hardware. Een ontwikkeling die het DevOps-teams nog meer slagkracht geeft. Oftewel, ‘more bang for your buck’. Wie wil dat nu niet?