Inzichten
Wat we onderweg tegenkwamen.
Geen tips-en-trucs. Verhalen uit het bouwen van echte producten, met de cijfers en de misrekeningen erbij.
-
Workers in PostgreSQL: retries, crashes en klantcontext
Eén worker voor alle klanten, gemeten in PostgreSQL 17 met psycopg: welke klantcontext de taak overleeft, waarom fouten niet tellen, wat een crash achterlaat.
Lees verder · 11 min lezen -
Auditlog per klant in PostgreSQL: wat een trigger kost
Een auditlog met triggers in PostgreSQL 17, nagemeten: rij- tegen statementtriggers, hele rijen tegen gewijzigde kolommen, en row-level security op het log.
Lees verder · 7 min lezen -
Eén klant verhuizen met logische replicatie en rijfilters
Eén klant naar een eigen PostgreSQL 17-database verhuizen met een gefilterde publicatie, gemeten: replica-identity-val, WAL-kosten, omschakelen, sequences.
Lees verder · 7 min lezen -
Eén klant verwijderen in PostgreSQL: cascade, batch of DROP
Eén klant uit een gedeelde PostgreSQL 17-database halen, gemeten: cascade, batches of een partitie droppen; locks, batchgrootte, schijf en wat blijft.
Lees verder · 7 min lezen -
Migraties op een gedeelde multi-tenant tabel in PostgreSQL
ALTER TABLE op een tabel die alle klanten delen, gemeten op PostgreSQL 17: de lockwachtrij, lock_timeout, herschrijvingen, NOT VALID, en tenant_id onder RLS.
Lees verder · 7 min lezen -
Eén klant exporteren met pg_dump en row-level security
pg_dump heeft geen WHERE, maar row-level security kan er een zijn. Getest op PostgreSQL 17: rijen van één klant, lekkende tellerstanden, terugzetten onder RLS.
Lees verder · 6 min lezen -
PgBouncer en RLS: klantcontext, SET LOCAL, gedeelde plannen
RLS achter PgBouncer in transactiemodus, nagemeten: welke klantcontext lekt, wat SET LOCAL buiten een transactie doet, en één plan voor alle klanten.
Lees verder · 9 min lezen -
Rol per klant of sessievariabele voor RLS in PostgreSQL
Row-level security in PostgreSQL 17 met een rol per klant of een sessievariabele, gemeten: SET ROLE bij 10.000 rollen, PgBouncer, injectie en definer-functies.
Lees verder · 7 min lezen -
Row-level security in PostgreSQL: wat kost het, nagemeten
Wat een RLS-beleid kost in PostgreSQL 17: volatiliteit van functies, de (select …)-omhulling, lidmaatschapsqueries en de leakproof-regel die je index uitzet.
Lees verder · 9 min lezen -
Takenwachtrij per klant in PostgreSQL: de luidruchtige buur
Eén klant zet 1.000 taken klaar, tien andere elk vijf: FIFO tegen round-robin met SKIP LOCKED in PostgreSQL 17, nagemeten, plus een plannerval van 10 s.
Lees verder · 8 min lezen -
Tellen per klant in PostgreSQL: count, schatting of teller
count(*) per klant in PostgreSQL 17, gemeten: waarom het voor de grootste klant 5× trager werd, wanneer schattingen fout zitten, wat een tellerrij kost.
Lees verder · 7 min lezen -
Uniek per klant in PostgreSQL: soft delete en RLS-lekken
Unieke constraints in multi-tenant PostgreSQL 17, getest: per klant of globaal, soft delete, hoofdletters, NULLs, ON CONFLICT en wat een dubbele sleutel lekt.
Lees verder · 6 min lezen -
Factuurnummers per klant in PostgreSQL, zonder gaten
Sequence, max()+1, SERIALIZABLE of een tellerrij: vijf manieren om facturen per klant te nummeren, nagemeten in PostgreSQL 17 op dubbelen, gaten en snelheid.
Lees verder · 9 min lezen -
PostgreSQL-indexen voor multi-tenant SaaS: tenant_id voorop
Vijf indexen, 1.000 klanten, één query, nagemeten in PostgreSQL 17: waarom tenant_id vooraan hoort, wat RLS met het plan doet en wanneer partitioneren loont.
Lees verder · 9 min lezen -
Een MCP-server op een bestaande SaaS: 17 tools in productie
Wat we leerden van een MCP-server op Pilot-Next: 14 lezende en 3 schrijvende tools, een toollijst van 11 KB, eerst een voorbeeld, en de datum die AI gokt.
Lees verder · 10 min lezen -
Multi-tenant SaaS op PostgreSQL: zes beslissingen
De zes keuzes die een multi-tenant SaaS in PostgreSQL vastlegt: isolatiemodel, RLS, indexen, bedragen, één klant terugzetten en migreren op schaal. Nagemeten.
Lees verder · 12 min lezen -
Row-level security in PostgreSQL: waar tenants lekken
RLS aanzetten is vijf regels SQL. Dit zijn de vijf manieren waarop hij daarna stilletjes uitstaat of eromheen lekt, elk nagemeten in PostgreSQL 17.
Lees verder · 10 min lezen -
Bedragen in PostgreSQL: numeric, integer of money?
Welk PostgreSQL-type bewaart geld exact? numeric, centen in integer of bigint en money naast elkaar, met de valkuilen die we testten en een controlequery.
Lees verder · 16 min lezen -
Multi-tenant architectuur: welk isolatiemodel kies je?
Database per klant, schema per klant of één database met tenant_id en row-level security: de modellen naast elkaar, en de drie vragen die de keuze beslissen.
Lees verder · 11 min lezen -
Drie SaaS-beslissingen die je later niet terugdraait
Klantscheiding, geld en rechten. Wat elk van de drie vooraf kost, wat het achteraf kost, en hoe je in tien minuten controleert hoe jouw product ervoor staat.
Lees verder · 6 min lezen -
Software laten bouwen met AI: zeven vragen vooraf
Wat je vraagt aan een partij die met AI-agents bouwt: van wie is de code, wie is aansprakelijk, hoe wordt er getest, en wie neemt het later over.
Lees verder · 8 min lezen -
Bedragen in een SaaS-product: centen, geen floats
De tweede onomkeerbare beslissing in een SaaS-product gaat over geld. Waarom een komma-getal je centen kwijtraakt, en waar het ook met centen misgaat.
Lees verder · 8 min lezen -
Rechten in een SaaS-product: rollen, geen vinkjes
De derde onomkeerbare beslissing: wie mag wat. Waarom een lijstje vinkjes per gebruiker na twintig klanten vastloopt, en wat er wel werkt.
Lees verder · 8 min lezen -
Een nachtploeg van AI-agents: onderhoud terwijl je slaapt
Elke nacht ruimt een ploeg agents dode code op, vult tests aan en meet de vindbaarheid. Hoe dat is opgezet, en waarom het alleen veilig is met vangrails.
Lees verder · 8 min lezen -
Multi-tenant vanaf dag één, of het wordt nooit meer goed
Drie beslissingen in een SaaS-product zijn later bijna niet meer recht te trekken. Klantscheiding is de eerste, en de duurste om over te slaan.
Lees verder · 7 min lezen -
Wat een SaaS-product bouwen met AI-agents echt kost
Twee producten, alleen gebouwd met AI-coding agents. Wat er sneller ging dan verwacht, wat er duurder was, en de fout die er drie keer doorheen glipte.
Lees verder · 7 min lezen
Laten we praten
Wat gaan we bouwen?
Eén gesprek is genoeg om te weten of we bij elkaar passen. Vertel wat je voor je ziet — wij zeggen hoe snel dat kan, en of wij daar de juiste partij voor zijn.