Week W23 · 1-7 juni 2026

Build AI. Run AI. Own AI.

Ik bouw dit niet in een lab, maar middenin mijn eigen leven als zzp'er en vader — en toch ontwerp ik elke keuze alsof er een enterprise-klant op leunt: multi-tenant vanaf dag 1, secrets die nooit een mens ziet, migraties die nooit terug kunnen. Dit is het logboek van die combinatie: zelf bouwen, zelf draaiend houden, zelf eigenaar blijven — inclusief de aanname, de misser en de prijs van elke keuze.

Deze week werk ik tegelijk aan twee soorten grenzen die op het eerste gezicht hetzelfde probleem lijken op te lossen, maar dat niet doen.

Het probleem dat opdook

Op 5 juni leg ik de basis voor `IS_SHARED_INSTANCE`: Terraform, een Prisma-extensie en een Flyway-script die moeten voorkomen dat gegevens van de ene klant zichtbaar worden in de context van een andere, op een gedeelde instance. Diezelfde dag zet ik ook een geïsoleerde dev-Compose-omgeving op voor de Codex-agent — een eigen set containers en poorten, los van mijn eigen werk. Allebei heten "isolatie," maar lossen niets met elkaar te maken problemen op.

De makkelijke weg die ik had kunnen nemen

Ik had kunnen aannemen dat de ene isolatiemaatregel het andere probleem ook wel een beetje mee oplost — of in het dagelijks werk de termen door elkaar gebruiken omdat ze toevallig in dezelfde week vielen.

De keuze die ik maakte en de strategie erachter

Ik hield ze expliciet apart. `IS_SHARED_INSTANCE` raakt de manier waarop de applicatie en de database klantdata van elkaar scheiden: een query of extensie die op het verkeerde moment de tenant-context mist. Het eigen Compose-project voor Codex raakt alleen hoe twee werkplekken naast elkaar kunnen draaien zonder containers of poorten te delen. De eerste gaat over vertrouwen in het product; de tweede over veilig naast elkaar kunnen bouwen.

Wat het kostte

Het schema moest twee keer gesynchroniseerd worden nadat een eerdere fix per ongeluk dubbele `user_id`-velden achterliet op twee tabellen — precies het soort fout die een tenantgrens juist moet voorkomen, nu zichtbaar in de migratie zelf voordat hij ooit productie bereikte.

Wat het nu oplevert en wat ik ervan leerde

"We hebben isolatie" zegt op zichzelf weinig als niet duidelijk is wát er geïsoleerd wordt: databasequeries, secrets, netwerken, containers of werkbestanden. Een fout in een tenantgrens kan klantdata blootleggen; een fout in de ontwikkelgrens verstoort vooral mijn eigen werk. Beide grenzen verdienen aandacht, maar niet dezelfde soort controle — en die scheiding blijft me door de rest van deze reeks achtervolgen, telkens wanneer "isolatie" weer ergens anders betekent.