De canary staat live voor 10% van je gebruikers. Het dashboard is groen. Geen grote errors, geen paniek in Slack, de eerste reacties lijken prima.
En toch knaagt er iets.
Want wat zegt dat groene dashboard eigenlijk? Meet je of de server nog draait, of meet je of gebruikers hun taak nog kunnen afronden? Zie je alleen technische rust, of ook business-impact?
Dat is precies waar canary releases mis kunnen gaan. Klein uitrollen voelt veilig, maar klein is niet automatisch veilig. Als je niet weet waar je naar kijkt, kan een canary vooral vals vertrouwen geven.
De echte waarde zit in de metrics. Niet als dashboarddecoratie, maar als besluitcriteria. Welke signalen bepalen of je doorgaat, pauzeert of terugrolt?
Daarom draait een goede canary release niet om zoveel mogelijk grafieken, maar om de juiste metrics. Signalen die helpen beslissen of je doorgaat, pauzeert of terugrolt.
Waarom canary release metrics anders zijn dan gewone dashboards
Een normaal dashboard laat zien hoe je systeem draait. Een canary dashboard moet iets concreters doen: helpen beslissen of een nieuwe versie verder mag.
Dat verschil klinkt klein, maar in de praktijk maakt het veel uit. Bij canary testing kijk je niet alleen of er errors zijn. Je vergelijkt de nieuwe versie met de oude versie. Je zoekt naar afwijkingen die specifiek ontstaan door de release.
Daarom moet elke metric gekoppeld zijn aan een mogelijke actie:
- doorgaan met opschalen;
- rollout pauzeren;
- terugrollen;
- extra onderzoek doen.
Die beslissingen werken alleen als ze passen binnen je bredere release-aanpak. Lees daarom ook de basis over canary testing, CI/CD testen en DevOps voor testers.
Als een metric geen besluit beïnvloedt, hoort hij niet centraal in je canary-dashboard.
Dat klinkt streng, maar het maakt het werk juist rustiger. Je wilt tijdens een release niet tien grafieken verdedigen. Je wilt met elkaar kunnen zeggen: dit signaal betekent dit besluit.
Begin met een baseline
Een metric zonder baseline is ruis. Stel dat je error rate tijdens een canary release 0,8% is. Is dat goed of slecht? Dat weet je pas als je weet wat normaal is voor deze flow, dit tijdstip en deze gebruikersgroep.
Dit is zo'n punt dat teams vaak pas voelen wanneer ze midden in de release zitten. Iedereen kijkt naar hetzelfde percentage, maar niemand weet zeker of het een probleem is.
Een goede baseline beantwoordt drie vragen:
- Wat is normaal gedrag voor de oude versie? Zonder dat vergelijk je de canary met een gevoel, niet met bewijs.
- Hoeveel variatie is gebruikelijk? Sommige flows schommelen per tijdstip, klantgroep of externe koppeling, en die normale bandbreedte wil je niet verwarren met release-impact.
- Over welk meetvenster nemen we een beslissing? Een piek van één minuut vraagt iets anders dan een trend die tien minuten blijft doorlopen.
Vooral dat laatste wordt vaak vergeten. Een korte piek kan normaal zijn. Een aanhoudende verslechtering over meerdere meetvensters is iets anders. Spreek daarom vooraf af hoe lang je meet voordat je beslist.
Technische metrics die je altijd wilt zien
Je wilt natuurlijk weten of de nieuwe versie stabiel draait. Alleen: stabiel is geen gevoel. Je moet het op een paar vaste plekken kunnen zien.
Error rate
Begin hier niet te grof. Meet errors per endpoint, service of kritieke flow. Kijk niet alleen naar totale error rate, want een probleem in één belangrijke flow kan verdwijnen in het gemiddelde.
Dat gebeurt in de praktijk sneller dan je denkt. Een checkout-endpoint kan bijvoorbeeld duidelijk slechter worden terwijl de totale error rate rustig blijft, omdat er veel meer verkeer op onschuldige pagina's zit. Segmenteren maakt het probleem zichtbaar op de plek waar gebruikers het merken.
Latency p50, p95 en p99
Latency lijkt vaak overzichtelijk, tot je alleen naar het gemiddelde kijkt. Gemiddelde response time is zelden genoeg. p95 en p99 laten zien wat tragere gebruikers ervaren. Een canary kan op p50 gezond lijken terwijl een kleine groep gebruikers veel vertraging krijgt.
Dat verschil is belangrijk bij beperkte uitrol. Als 90% van de gebruikers nog prima door de flow komt, kan het gemiddelde geruststellend ogen. Maar juist de langzaamste groep vertelt je vaak of de nieuwe versie onder bepaalde omstandigheden vastloopt, bijvoorbeeld bij oudere devices, zwaardere accounts of drukke databasepaden.
Exception rate en log anomalies
Nieuwe exceptions zijn vaak signalen waar je even op wilt inzoomen. Let vooral op exceptions die alleen in de canary-groep ontstaan.
Niet elke exception is meteen een rollbacksignaal, maar nieuwe patronen verdienen aandacht. Zeker als ze gekoppeld zijn aan een kritieke flow, want dan zie je vaak eerder in de logs dat iets schuurt dan in de totale foutpercentages.
Saturation
Soms werkt een release functioneel prima, maar vraagt hij onder water veel meer van je systeem. Kijk daarom naar CPU, memory, database connections, thread pools en queue depth. Een release kan functioneel goed werken maar resources veel zwaarder belasten.
Dit is vooral belangrijk bij releases die "gewoon werken" maar onder water extra calls, queries of retries veroorzaken. De gebruiker ziet dan nog geen foutmelding, terwijl je systeem al richting een grens beweegt.
Retries en timeouts
Retries en timeouts zijn verraderlijk, juist omdat ze problemen tijdelijk kunnen maskeren. Voor gebruikers lijkt iets misschien nog te werken, terwijl je systeem intern al tekenen van instabiliteit laat zien.
Let daarom niet alleen op eindresultaat, maar ook op de weg ernaartoe. Een succesvolle betaling na drie retries is technisch misschien gelukt, maar voor de releasebeslissing is het wel een signaal dat de nieuwe versie extra druk zet op een koppeling.
En dat is precies het soort signaal dat je liever vroeg ziet dan later moet uitleggen.
Business metrics die technische dashboards vaak missen
En dan komt het ongemakkelijke deel: een technisch groene release kan alsnog slecht zijn voor gebruikers of business.
Dat voelt soms tegenstrijdig, zeker als alle infrastructuurmetrics netjes binnen de lijntjes blijven. Maar gebruikers ervaren geen CPU-grafiek, ze ervaren of hun taak lukt.
Denk hierbij bijvoorbeeld aan:
- login success, omdat een technische 200-response weinig zegt als gebruikers alsnog niet binnenkomen;
- checkout completion, omdat omzetverlies vaak eerder zichtbaar is in afgebroken flows dan in serverfouten;
- payment success, omdat betaalproblemen soms buiten je eigen applicatie ontstaan maar wel door je release getriggerd kunnen worden;
- ordervolume, omdat kleine conversiedalingen bij veel verkeer snel materieel worden;
- formulierconversie, omdat validatie- of UX-wijzigingen vaak geen technische errors geven;
- aantal failed transactions, omdat mislukte transacties direct iets zeggen over gebruikersimpact;
- cancellations, omdat gedrag na de release kan veranderen zonder dat er iets "kapot" lijkt;
- supporttickets of chats, omdat gebruikers soms sneller bij support uitkomen dan in je metrics.
Deze metrics moeten passen bij de release. Bij een nieuwe login-flow is login success een harde guardrail. Bij een checkout-release is payment success belangrijker dan algemene pageviews.
Eigenlijk is het punt heel simpel: meet wat de gebruiker probeert te doen, niet alleen wat de server doet.
Canary cohort vs control cohort
Je wilt voorkomen dat je de release de schuld geeft van iets dat eigenlijk ergens anders vandaan komt. Daarom beoordeel je een canary release het liefst door twee groepen te vergelijken:
- de canary cohort, gebruikers op de nieuwe versie;
- de control cohort, gebruikers op de oude versie.
Dat voorkomt verkeerde conclusies. Misschien stijgt de error rate door een externe providerstoring die alle gebruikers raakt. Of misschien daalt conversie door een marketingcampagne met ander verkeer. Zonder control-groep lijkt dat op een releaseprobleem, terwijl het dat misschien niet is.
Vergelijk daarom zoveel mogelijk binnen dezelfde periode en met vergelijkbare gebruikersgroepen.
Maak die vergelijking ook niet te theoretisch. Een canary-groep met vooral interne gebruikers, vaste klanten of één groot klantsegment kan een ander beeld geven dan normale productie. Als de groepen niet vergelijkbaar zijn, moet je dat expliciet meenemen in je besluit.
Van metrics naar beslissing
Metrics zijn pas echt nuttig als je weet welke beslissing eraan hangt.
Anders krijg je het bekende release-overleg waarin iedereen naar data kijkt, maar niemand weet wat die data betekent voor de volgende stap.
Een praktische beslisstructuur:
| signaal | actie |
|---|---|
| Metrics stabiel binnen afgesproken bandbreedte | Proceed: gecontroleerd opschalen |
| Lichte afwijking zonder duidelijke oorzaak | Pause: niet verder opschalen |
| Kritieke flow verslechtert | Rollback: verkeer terugzetten of feature uitzetten |
| Technische metrics groen, business metrics rood | Pause of rollback, afhankelijk van impact |
Leg deze afspraken vast vóór de release. Tijdens een incident is het te laat om rustig te discussiëren over definities.
Maak de acties concreet genoeg voor het moment zelf. "Let op latency" helpt minder dan "pauzeer opschaling als p95 twee meetvensters achter elkaar buiten de bandbreedte valt". Dan hoeft het team niet te raden wat de afspraak betekende.
Voorbeeld van een canary decision dashboard
Een dashboard hoeft niet indrukwekkend groot te zijn om goed te werken. Voor een checkout-release kan een eenvoudig beslisdashboard bestaan uit:
| categorie | metric | vergelijking |
|---|---|---|
| Stabiliteit | error rate checkout API | canary vs control |
| Performance | p95 latency checkout | canary vs baseline |
| Business | payment success | canary vs control |
| UX | frontend error events | canary vs control |
| Support | checkout-gerelateerde tickets | trend tijdens meetvenster |
Je hoeft dus niet alles te meten. Je moet de juiste signalen meten voor deze release.
Gebruik zo'n dashboard dus niet als algemene cockpit, maar als beslispaneel. Elk onderdeel moet antwoord geven op de vraag: mogen we verder, moeten we pauzeren of moeten we terug?
Metrics per type release
Niet elke canary release vraagt dezelfde metrics. Dat klinkt logisch, maar hier gaat het in de praktijk vaak mis: een API-release vraagt andere signalen dan een nieuwe betaalflow of frontendwijziging.
Bij een API-release kijk je vooral naar:
- foutpercentages per endpoint, omdat één instabiele route kan verdwijnen in het gemiddelde;
- response times per endpoint, omdat performanceproblemen vaak flow-specifiek zijn;
- contract- of schemafouten, omdat clients soms breken zonder dat de service volledig faalt;
- timeouts naar downstream services, omdat externe afhankelijkheden release-impact kunnen versterken;
- retrygedrag bij clients, omdat retries tijdelijk succes kunnen geven maar structurele druk opbouwen.
Bij een frontendwijziging kijk je eerder naar:
- JavaScript errors, omdat gebruikersinterfaceproblemen vaak niet als backend-error verschijnen;
- Core Web Vitals of vergelijkbare UX-signalen, omdat traagheid conversie kan raken voordat iets echt stuk is;
- rage clicks of vastlopende interacties, omdat gebruikersgedrag soms duidelijker is dan logs;
- formulierafhakers, omdat validatieproblemen vaak zichtbaar worden als verlaten flows;
- conversieverschil tussen canary en control, omdat je anders normale dagvariatie kunt verwarren met release-impact.
Bij een betaal- of checkout-release kijk je naar:
- payment success, omdat betaalproblemen direct vertrouwen en omzet raken;
- failed transactions, omdat mislukte transacties vaak concreter zijn dan algemene conversiedaling;
- duplicate orders, omdat retries of race conditions schade kunnen veroorzaken zonder grote errorpiek;
- checkout completion, omdat gebruikersimpact vaak begint bij afhaken;
- supporttickets met betaalproblemen, omdat gebruikers soms eerder signaleren dan dashboards.
Door metrics per release te kiezen voorkom je dat elk team hetzelfde generieke dashboard gebruikt. Dat scheelt ruis. Een canary dashboard moet passen bij het risico van de wijziging.
Hoe voorkom je vals vertrouwen?
Vals vertrouwen ontstaat wanneer een canary groen lijkt, maar je eigenlijk onvoldoende bewijs hebt.
Dat is misschien wel de lastigste variant, want er is geen duidelijk alarm. Alles voelt rustig, terwijl je nog niet genoeg hebt gezien.
Dat gebeurt bijvoorbeeld als de canary-groep te klein is, als het meetvenster te kort is of als je alleen technische metrics bekijkt. Het kan ook gebeuren als de canary-groep niet representatief is. Een interne groep power users zegt weinig over gewone klanten op mobiele verbindingen.
Voorkom vals vertrouwen daarom met drie afspraken:
- Bepaal vooraf welke gebruikersgroep representatief genoeg is. Anders test je misschien vooral een makkelijke groep.
- Spreek af hoeveel verkeer of hoeveel events minimaal nodig zijn. Zonder volume is een groene uitkomst soms gewoon toeval.
- Combineer technische metrics altijd met gebruikers- of businesssignalen. Zo voorkom je dat een technisch gezonde release alsnog gebruikers blokkeert.
Als die drie punten niet kloppen, is een groene canary vooral een geruststellend verhaal. Nog geen bewijs.
Wie kijkt naar de metrics?
Dit is zo'n praktische afspraak die makkelijk wordt overgeslagen. Een dashboard zonder eigenaar wordt namelijk niet gebruikt. Leg daarom vóór de release vast wie tijdens de canary meekijkt.
Niet omdat mensen hun werk niet doen, maar omdat verantwoordelijkheid onder druk snel diffuus wordt.
Minimaal wil je drie rollen:
- iemand die technische signalen interpreteert;
- iemand die gebruikers- of businesssignalen beoordeelt;
- iemand die de releasebeslissing neemt.
In kleine teams kan dat één persoon zijn, maar de verantwoordelijkheden moeten nog steeds expliciet zijn. Anders ontstaat precies op het verkeerde moment verwarring.
Checklist: zijn je canary metrics klaar?
Gebruik deze checklist vóór de rollout:
- Is de baseline bekend voor de belangrijkste technische metrics?
- Is duidelijk welke business metric de release kan raken?
- Vergelijk je canary-gebruikers met een control-groep?
- Zijn meetvensters vooraf afgesproken?
- Weet het team welke afwijking leidt tot pause of rollback?
- Zijn alerts gekoppeld aan actie, niet alleen aan informatie?
- Is er iemand verantwoordelijk voor interpretatie tijdens de rollout?
- Worden technische en business-signalen samen bekeken?
Als je op deze vragen geen helder antwoord hebt, is het te vroeg om de canary als veilig te beschouwen. Dan heb je misschien wel een deploymentstrategie, maar nog geen beslisstrategie.
Gebruik de checklist dus niet als administratief vinklijstje. Het gesprek erachter is belangrijker dan het vinkje zelf. Als niemand kan uitleggen waarom een metric in het dashboard staat, helpt die metric waarschijnlijk niet bij de releasebeslissing.
Voorbeeld: login-flow meten
Stel dat je een nieuwe login-flow uitrolt naar 10% van je gebruikers. Een generiek dashboard met CPU, memory en algemene error rate is dan niet genoeg.
Voor deze release wil je minimaal kijken naar:
- login success in canary versus control;
- authentication exceptions;
- p95 latency van login requests;
- frontend errors op het login-scherm;
- reset-password gebruik;
- supportvragen over inloggen.
Als CPU en memory stabiel blijven, maar login success in de canary-groep daalt, is dat een releasesignaal. Niet omdat het systeem plat ligt, maar omdat gebruikers hun taak minder goed kunnen uitvoeren.
Dat is precies waarom canary metrics dichtbij de user journey moeten blijven.
Veelgemaakte fouten bij canary metrics
De meeste fouten ontstaan niet omdat teams geen tools hebben. Ze ontstaan omdat het proces rond de metrics net te vaag blijft:
- Geen baseline vastleggen, waardoor elke afwijking los in de lucht hangt.
- Een te kleine sample gebruiken en toch harde conclusies trekken, waardoor toeval als bewijs wordt behandeld.
- Alleen technische metrics meten, waardoor gebruikersimpact te laat zichtbaar wordt.
- Business-impact te laat zien, bijvoorbeeld pas na supportmeldingen of omzetverlies.
- Te veel alerts instellen, waardoor niemand meer weet welk signaal actie vraagt.
- Geen meetvenster afspreken, waardoor teams blijven discussiëren over incident of ruis.
- Niet weten wie de beslissing neemt, waardoor de rollout doorloopt terwijl iedereen wacht op elkaar.
Canary testing vraagt dus niet alleen observability, maar ook discipline.
Die discipline hoeft niet zwaar te zijn. Het gaat vooral om vooraf afspreken wat je straks niet meer wilt hoeven uitzoeken.
Veelgestelde vragen
Wat is de belangrijkste metric voor een canary release?
Er is niet één universele metric. De belangrijkste metric hangt af van de release. Voor een betaalflow is payment success vaak belangrijker dan algemene serverbelasting. Voor een login-wijziging kijk je juist eerder naar login success, authentication errors en supportvragen over inloggen.
Hoe lang moet een canary meetvenster zijn?
Lang genoeg om normaal gebruikersgedrag te zien, kort genoeg om impact te beperken. Dat hangt af van verkeer, risico en type wijziging. Bij weinig verkeer heb je meestal meer tijd nodig voordat je iets zinnigs kunt zeggen.
Wat doe je als technische metrics groen zijn maar business metrics dalen?
Dan behandel je de release als verdacht. Pauzeer of rol terug, afhankelijk van impact en vooraf afgesproken criteria.
Moet je canary metrics automatiseren?
Waar mogelijk wel. Maar automatisering vervangt niet het vooraf bepalen van thresholds, eigenaarschap en besluitrechten. Automatisering helpt vooral als het team al weet welk signaal welke actie moet starten.
Conclusie
Canary release metrics zijn geen rapportage achteraf. Ze zijn je besliskader tijdens de rollout.
Meet daarom niet alles wat kan. Meet vooral wat bepaalt of je veilig kunt opschalen.
Wil je weten of jouw release-metrics sterk genoeg zijn voor canary testing? Laat ze toetsen voordat je volgende release live gaat.