Lange tijd was de cloud gewoon het water waarin ik zwom. Ik provisionde managed Kubernetes, klikte door de console, plakte een Terraform-module die iemand anders had geschreven, en shipte. Het werkte. De rekening kwam elke maand binnen, de dashboards bleven groen, en ik vroeg me geen seconde af wat er onder de motorkap draaide. Ik vertrouwde het zoals je een lift in een gebouw vertrouwt. Je drukt op de knop en de deuren gaan open.

Toen viel er op een middag een managed service om, en ik zat daar met niks om te debuggen. Geen host om in te SSH’en, geen log die ik mocht lezen, geen laag die ik kon openpeuteren. De statuspagina zei “investigating”. Dat was de volledige omvang van mijn agency: een statuspagina verversen die iemand anders beheerde.

Ik host inmiddels vrijwel alles zelf. Kubernetes op refurbished mini-PCs. GitLab op eigen hardware. Vault voor secrets, plus monitoring, logging, de hele mikmak. Mensen vragen waarom, want managed cloud is makkelijker en AWS, Azure en Google doen het schaalbaar en betrouwbaar. Het eerlijke antwoord begon op die bevroren middag, en het kostte me even om er woorden voor te vinden.

Het korte woord is agency. Het langere antwoord is deze hele post.

De middag dat de black box dicht bleef

Niks aan die outage was dramatisch. Een managed component waar ik van afhing reageerde niet meer, mijn app begon errors te gooien, en ik ging doen wat ik altijd doe als er iets stuk is: de oorzaak zoeken.

Dat lukte niet. Het ding dat faalde leefde achter een abstractie waar ik geen toegang toe had. Ik zag het symptoom en verder niks. Ik opende een support ticket en wachtte, wat een nette manier is om te zeggen dat ik op mijn handen zat terwijl mijn eigen systeem kapot was en ik er niks aan kon doen.

Wat me dwarszat was niet de downtime. Downtime gebeurt. Wat me dwarszat was het gevoel dat ik geen relatie had met mijn eigen infrastructuur. Ik had niet alleen het draaien ervan uitbesteed, maar ook het begrijpen ervan. Toen het kapot ging had ik geen draadje om aan te trekken, omdat ik nooit in de buurt van de draadjes was gelaten.

Dat is de splinter. Black boxes voelen als splinters onder de huid. Ik moet begrijpen wat ik draai, en een systeem dat ik niet kan inspecteren is een systeem waar ik alleen tegen kan bidden.

De vraag die ik had ontweken

Met dat ticket open moest ik iets ongemakkelijks toegeven. Ik had mezelf wijsgemaakt dat de cloud een keuze was, terwijl het eigenlijk een default was die ik nooit had onderzocht. Iedereen gebruikte het, dus ik gebruikte het. De trade-off was echt, ik had er alleen nooit naar gekeken.

Hier is die trade-off, simpel gezegd. Managed services verbergen complexiteit, en het verbergen van complexiteit is precies hun waarde. Je betaalt ze om niet aan de moeilijke delen te hoeven denken. Maar de complexiteit verdwijnt niet. Hij verhuist naar achter een muur die je niet over mag klimmen. Op een goede dag is die muur gemak. Op een slechte dag is het een gevangenis, en ontdek je de tralies op het slechtst denkbare moment.

Voor context over hoe mijn brein werkt, zie Werken met een AuDHD-brein.

Mijn AuDHD-brein maakte de splinter onmogelijk te negeren. Als er iets kapot gaat wil ik de daadwerkelijke oorzaak, niet “het ligt aan AWS”. Verborgen complexiteit voelt voor mij niet rustgevend, het voelt als een jeuk die ik niet kan bereiken. De autisme-kant wil mijn omgeving vormen naar hoe ik werk in plaats van andersom, en “computer says no” is waar managed services dat gesprek meestal beëindigen. De ADHD-kant leert door te bouwen en te breken, niet door docs te lezen, en een black box geeft je niks om uit elkaar te halen.

Dus de echte vraag was niet “is de cloud goed of slecht”. Het was: draai ik op managed infrastructuur omdat ik daarvoor gekozen heb, of omdat ik nooit gestopt ben om te kiezen? Die middag was het eerlijke antwoord het tweede. En zodra je een default ziet voor wat hij is, kun je het niet meer ontzien.

Wat sovereignty volgens mij echt betekent

Digital sovereignty betekent echte controle hebben over je eigen infrastructuur, data en processen. Het tegenovergestelde is afhankelijkheid, en afhankelijkheid heeft een specifieke vorm:

  • Je data staat bij een provider die de voorwaarden kan wijzigen wanneer het hem uitkomt
  • Je infrastructuur draait op een platform dat je niet begrijpt
  • Vendor lock-in maakt vertrekken duur genoeg dat je het nooit doet
  • Prijzen stijgen en je hebt geen alternatief om naartoe te lopen

Ik wil hier voorzichtig zijn, want dit verandert makkelijk in paranoia, en dat is het niet. Sovereignty gaat over keuzes hebben. Het is de vrijheid om te vertrekken als iets niet meer voor je werkt, en het systeem goed genoeg begrijpen dat vertrekken überhaupt mogelijk is. Een afhankelijkheid van iets dat je niet kunt inspecteren of beheersen is een kwetsbaarheid, punt. Geen morele fout, een kwetsbaarheid, op dezelfde manier als een ongepatchte service dat is.

Dus ik maakte een keuze. Niet om tegen de cloud te ageren, maar om er niet langer in af te drijven. Om de dingen waar ik van afhang te draaien op hardware die ik bezit, met software die ik kan lezen, zodat ik als er iets kapot gaat een draadje heb om aan te trekken.

De gesloten container in de ruimte

Er is een scenario waar ik steeds op terugkom, en ik heb het apart uitgewerkt als het ruimtecontainer gedachtenexperiment. Je wordt wakker in een afgesloten container die door de ruimte drijft. Alles wat je nodig hebt om in leven te blijven zit met je opgesloten, maar er gaat niks in en niks uit. Wat doe je dan?

Je begint de systemen te leren. Hoe de zuurstof wordt geschrobd en hergebruikt, hoe het water wordt gefilterd, waar de stroom vandaan komt. Je wilt elk component kennen, want de prijs van een black box in die container is je leven.

Mijn homelab is geen overlevingscapsule, en ik verbeeld me niet dat het er een is. Maar het instinct vertaalt zich naadloos. Ik wil de systemen waar ik van afhang begrijpen, tot op de laag waar ik ze zou kunnen repareren als het moest. Island mode, een paar secties verderop, is hetzelfde idee met een aan-uitknop erbij.

Hoe die keuze er in de praktijk uitziet

Mijn huidige stack draait op refurbished mini-PCs. Commodity hardware, geen dure servers:

ComponentOplossing
KubernetesK3s met embedded etcd
GitOpsArgoCD (App-of-Apps pattern)
CI/CDGitLab (self-hosted)
SecretsHashiCorp Vault
PolicyKyverno
MonitoringPrometheus + Thanos
LoggingLoki
TracingTempo
DashboardsGrafana
CNICilium (eBPF)
StorageLonghorn + MinIO
Certificatescert-manager
AuthKeycloak

Alles is GitOps-managed. Configuratie leeft in Git, ArgoCD synchroniseert het naar de clusters, en het geheel is declaratief, reproduceerbaar en auditeerbaar. Als ik wil weten waarom iets is zoals het is, ligt het antwoord een git log verderop.

Island mode

Eén ontwerpprincipe drukte ik harder door dan de rest: island mode capability. Mijn clusters moeten blijven functioneren zonder internetverbinding. In de praktijk betekent dat lokale container registry mirrors, geen harde afhankelijkheden van externe APIs, alle secrets lokaal in Vault, en documentatie die op de cluster leeft in plaats van op de website van iemand anders.

Ik verwacht eigenlijk niet dat het internet verdwijnt. Het punt van de constraint is wat hij met het ontwerp doet. Een systeem dat afgesneden kan overleven is een systeem dat je tot op de bodem begrijpt, omdat je elke afhankelijkheid hebt moeten verwijderen die je niet kon verantwoorden. Offline-capabel en goed begrepen blijken dezelfde eigenschap met twee verschillende petten op.

De rekening voor dit alles

Ik verwijderde de makkelijke weg en bouwde opnieuw op hardware die ik bezit, en die herbouw kwam met een prijskaartje. Doen alsof dat niet zo is zou hier een reclame van maken, dus hier is de eerlijke factuur.

Tijd. Je bent je eigen ops team. Cluster upgrades, security patches, incident response, dat is nu jouw avond. Het kost echte uren, vooral aan het begin. Ik betaal het af met automatisering: K3s upgrades automatiseren, GitOps voor consistentie, en Kyverno policies die de misconfiguraties blokkeren die ik anders om middernacht zou maken.

Kennis. Je moet echt weten wat je doet. Kubernetes, networking en security hebben elk een steile curve, en self-hosting geeft je alle drie tegelijk. Ik zie dit als het deel van de rekening dat ik graag betaal. De kennis die ik koop door mijn eigen stack te draaien maakt me beter in het dagelijkse werk, omdat ik de abstracties begrijp wanneer ik ook de implementaties eronder heb gezien.

Geld vooraf. Hardware kost iets. Refurbished mini-PCs zijn goedkoop, maar goedkoop is niet gratis, en het is een drempel als je vanaf nul begint. De lopende kosten vallen wel in mijn voordeel uit. Mijn hele homelab trekt minder stroom in een maand dan het huren van één managed Kubernetes cluster kost.

Geen SLA. Als het kapot gaat is er geen ticket om in te dienen en geen “dit is een AWS probleem” om je achter te verschuilen. Ik ben het. Wat het hele punt is. Ik wacht niet meer op een statuspagina. Ik open een shell en begin draadjes te trekken, en het debuggen is waar het begrip wordt opgebouwd.

Wanneer ik toch naar managed cloud zou grijpen

Ik maakte een keuze voor mijn situatie, en ik zou een hypocriet zijn als ik deed alsof het de enige juiste is. Managed cloud verdient zijn plek in tal van gevallen.

Een startup die dit kwartaal moet shippen moet focussen op het product, niet op infra, en kan leunen op managed services tot schaal of kosten gaan pijn doen. Een team waar niemand Kubernetes kent maakt een verstandige keuze met EKS, GKE of AKS, zolang ze de kennis blijven opbouwen zodat de keuze open blijft. Sommige compliance regimes zijn oprecht makkelijker te halen met certified managed services. En als je tien keer de capaciteit nodig hebt voor één Black Friday, is cloud elasticiteit echt geld waard.

De draad die door al deze gevallen loopt is dezelfde die ik jarenlang miste. Maak de keuze bewust. Kijk naar de trade-off, benoem wat je weggeeft en wat je terugkrijgt, en kies managed omdat het past, niet omdat het de stroming is van de rivier waar je toevallig in dreef.

Wat er veranderde, stilletjes

Ik draai nog steeds Kubernetes. Ik schrijf nog steeds YAML ’s avonds en jaag op de incidentele outage. Van buitenaf ziet er niet veel anders uit dan in de managed dagen, behalve dat de dashboards naar kasten in mijn eigen rack wijzen.

Wat veranderde is de relatie. Ik behandel mijn infrastructuur niet meer als een dienst waar ik op geabonneerd ben en het beste van hoop. Ik behandel het als een systeem waar ik verantwoordelijk voor ben en dat ik echt kan bereiken. Als er nu iets kapot gaat, is er altijd een draadje om aan te trekken, en eraan trekken leert me iets in plaats van me een statuspagina te laten verversen.

Drie dingen dragen dat voor mij. Begrijpen wint van vertrouwen, want als ik snap hoe iets werkt kan ik het repareren, tunen en aanpassen, en als ik het alleen vertrouw gok ik op de goodwill en competentie van iemand anders. Opties winnen van gemak, want managed services zijn heerlijk tot je wilt vertrekken, en de kosten van vertrekken zijn de kosten die ze de hele tijd stilletjes in rekening brengen. En leren wint van consumeren, want elk probleem dat ik zelf oplos wordt kennis die ik houd, terwijl elk probleem dat ik uitbesteed kennis is die ik huur.

Wil je iets hiervan zelf voelen, begin dan klein. Eén Raspberry Pi of een oude laptop, Docker Compose, nog geen Kubernetes, alleen containers, networking en storage. Voeg één service per keer toe en laat elke service je iets leren. Schrijf op waarom je koos wat je koos, want toekomstige jij heeft het nodig. Reken op dingen die kapot gaan, want in een homelab is de blast radius klein en zijn de lessen echt. En praat met andere mensen die hetzelfde doen, want iemand op een homelab forum is al tegen precies jouw muur aangelopen en heeft opgeschreven hoe hij eroverheen kwam.

Dit is geen voorschrift. Niet iedereen hoeft alles zelf te hosten, en heel veel mensen hebben gelijk om met open ogen op managed cloud te blijven. Het enige wat ik van iemand zou vragen is wat die middag van mij vroeg: laat de default niet voor je beslissen. Begrijp wat je weggeeft als je een systeem aan iemand anders overdraagt, en begrijp wat je krijgt.

Voor mij komt de splinter er nooit helemaal uit, en ik wil het niet meer. Het is het ding dat me naar de volgende laag eronder laat reiken. Sovereign infrastructure kost meer werk, en het koopt meer vrijheid, en nadat ik er een tijd op heb gedraaid kan ik me niet voorstellen dat ik terugga naar bidden bij een statuspagina.


Gerelateerde posts: