Canary-releases met Actions
Implementeer Canary-releasepatronen om nieuwe functies geleidelijk beschikbaar te maken voor een deel van de gebruikers en daarbij prestaties en stabiliteit te monitoren.
Canary-releases met Actions is een gratis CI/CD met GitHub Actions en DevOps-pijplijnen-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject CI/CD met GitHub Actions en DevOps-pijplijnen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus CI/CD met GitHub Actions en DevOps-pijplijnen bevat in totaal 4 lessen.
Introductie tot canary-releases
Stel je voor dat je een nieuwe functie of update uitbrengt. Wat als er een fout in zit die al je gebruikers treft? Best eng, toch?
Canary-releases helpen dit risico te beperken door wijzigingen eerst geleidelijk uit te rollen naar een kleine groep gebruikers. Het is alsof je een "kanarie in een kolenmijn" stuurt om de lucht te testen voordat alle anderen naar binnen gaan.
Voordelen van canary-releases
Canary-releases bieden verschillende belangrijke voordelen:
- Minder risico: Beperk de impact van problemen tot een kleine gebruikersgroep.
- Feedback uit de praktijk: Verzamel productiegegevens over prestaties en stabiliteit.
- Snel terugdraaien: Als er problemen ontstaan, kun je snel alleen de kleine canary-groep of de volledige service terugdraaien.
- Gecontroleerde blootstelling: Vergroot geleidelijk het aantal gebruikers dat de nieuwe versie ziet naarmate je meer vertrouwen krijgt.
Canary tegenover blauw-groen
Misschien herinner je je blauw-groene implementaties, waarbij je het verkeer direct omschakelt tussen twee identieke omgevingen.
Canary-releases werken anders. In plaats van een directe omschakeling voeren ze een geleidelijke verschuiving van verkeer uit. Een nieuwe versie draait naast de oude en aanvankelijk ziet slechts een klein percentage gebruikers de nieuwe versie. Zo kun je deze uitvoerig controleren voordat je haar volledig uitrolt.
Hoe canary-releases werken
Dit is de basisstroom voor een canary-release:
- Nieuwe versie implementeren: Een nieuwe versie van je toepassing wordt geïmplementeerd op een kleine groep servers of instanties, naast de bestaande stabiele versie.
- Een kleine hoeveelheid verkeer routeren: Een load balancer of servicemesh wordt zo geconfigureerd dat een klein percentage (bijvoorbeeld 5-10%) van het gebruikersverkeer naar de nieuwe versie wordt gestuurd.
- Controleren: De prestaties, foutpercentages en feedback van gebruikers worden voor de canary-groep nauwlettend gecontroleerd.
- Promoveren of terugdraaien: Als alles er goed uitziet, wordt het verkeer geleidelijk verhoogd of wordt de nieuwe versie gepromoveerd naar 100%. Als er problemen optreden, wordt de canary teruggedraaid en wordt het verkeer teruggeleid naar de stabiele versie.
Orkestreren met GitHub Actions
GitHub Actions kan het volledige proces van een canaryrelease orkestreren. Het beheert het verkeer niet rechtstreeks (dat is de taak van je infrastructuur), maar activeert wel de stappen:
- Je toepassing bouwen en testen.
- De nieuwe versie implementeren in een canaryomgeving.
- Verkeersverschuivingen starten via API-aanroepen naar je load balancer of servicemesh.
- Wachten op monitoringresultaten of handmatige goedkeuringen.
- De canary promoveren of een rollback activeren.
Overzicht van een canaryworkflow
Een gebruikelijke GitHub Actions-workflow voor een canaryrelease kan er als volgt uitzien:
name: Canary Deployment
on: push
jobs:
build:
# ... build and test steps ...
deploy-canary:
needs: build
steps:
- name: Deploy to Canary Group
# ... call script/tool to deploy and shift 10% traffic ...
monitor-canary:
needs: deploy-canary
# ... wait for monitoring/approval ...
promote-or-rollback:
needs: monitor-canary
# ... conditionally promote to 100% or rollback ...Elke stap zou communiceren met je implementatietools.
De logica van een canaryuitrol simuleren
Hoewel GitHub Actions de orkestratie uitvoert, vinden de daadwerkelijke besluitvorming en implementatieopdrachten vaak plaats in scripts. Hier volgt een Python-voorbeeld dat de logica van een canaryuitrol simuleert. Stel je voor dat een Action dit script uitvoert:
def deploy_version(version, traffic_percent):
print(f"Deploying {version} to {traffic_percent}% traffic.")
if traffic_percent == 100:
print("Full rollout complete!")
elif traffic_percent > 0:
print("Canary deployed. Monitoring for stability...")
else:
print("Version removed (rollback).")
if __name__ == "__main__":
print("--- Starting Canary Workflow ---")
new_app_version = "v2.1-canary"
stable_app_version = "v2.0"
# Step 1: Deploy new version to 10% traffic
deploy_version(new_app_version, 10)
# Step 2: Simulate monitoring (e.g., waiting for metrics)
print("Monitoring canary performance...")
import random
canary_successful = random.choice([True, True, True, False]) # 75% chance of success
if canary_successful:
print("Canary looks good! Proceeding to full rollout.")
# Step 3a: Promote new version to 100%
deploy_version(new_app_version, 100)
else:
print("Canary issues detected! Rolling back.")
# Step 3b: Rollback to stable version
deploy_version(stable_app_version, 100)
print("--- Canary Workflow Finished ---")Je canary monitoren
Effectieve monitoring is cruciaal. Je GitHub Actions-workflow kan op verschillende manieren integreren met monitoringsystemen:
- API-aanroepen: Vraag monitoringtools (bijvoorbeeld Datadog en Prometheus) op naar belangrijke meetwaarden.
- Gezondheidscontroles: Vraag periodiek de health-endpoints van de toepassing op.
- Handmatige poorten: Pauzeer de workflow voor menselijke beoordeling en goedkeuring.
- Tijdgebonden wachttijden: Wacht een bepaalde periode totdat de meetwaarden stabiel zijn.
De workflow gebruikt deze signalen vervolgens om te bepalen of de canary wordt gepromoveerd of een rollback wordt uitgevoerd.
Voorwaardelijke promotie of rollback
Na de monitoringfase gebruikt GitHub Actions voorwaardelijke logica om de volgende stap te bepalen. Je kunt if-instructies gebruiken in de definities van je taak of stap.
promote-or-rollback:
needs: monitor-canary
if: success() && needs.monitor-canary.outputs.canary_ok == 'true'
steps:
- name: Promote Full Rollout
# ... command to shift 100% traffic to new version ...
rollback:
needs: monitor-canary
if: failure() || needs.monitor-canary.outputs.canary_ok == 'false'
steps:
- name: Rollback to Stable
# ... command to shift 100% traffic to old version ...Zo wordt automatisch gereageerd op de prestaties van de canary.
Controle van een canaryrelease
Je hebt geleerd wat de voordelen en werking van canaryreleases zijn. Laten we je begrip testen.
Samenvatting: canaryreleases met Actions
In deze les heb je geleerd over canaryreleases, een krachtige implementatiestrategie om nieuwe softwareversies geleidelijk uit te rollen naar een deel van de gebruikers.
- Canaryreleases beperken het risico en leveren feedback uit de praktijk.
- GitHub Actions orkestreert het bouwen, de implementatie naar de canary, de monitoring en de stappen voor voorwaardelijke promotie of rollback.
- Effectieve monitoring en voorwaardelijke logica zijn essentieel voor succesvolle canarypijplijnen.
Met canaryreleases kun je met meer vertrouwen en controle implementeren.
Leer CI/CD met GitHub Actions en DevOps-pijplijnen met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Canary-releases met Actions” gratis?
Ja — de volledige tekst van “Canary-releases met Actions” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus CI/CD met GitHub Actions en DevOps-pijplijnen wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus CI/CD met GitHub Actions en DevOps-pijplijnen bevat in totaal 4 lessen.
Wat leer ik in “Canary-releases met Actions”?
Implementeer Canary-releasepatronen om nieuwe functies geleidelijk beschikbaar te maken voor een deel van de gebruikers en daarbij prestaties en stabiliteit te monitoren. Je oefent met CI/CD met GitHub Actions en DevOps-pijplijnen door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met CI/CD met GitHub Actions en DevOps-pijplijnen te beginnen?
Ervaring vooraf is niet nodig. CI/CD met GitHub Actions en DevOps-pijplijnen op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Canary-releases met Actions”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over CI/CD met GitHub Actions en DevOps-pijplijnen?
Ja. Elke les over CI/CD met GitHub Actions en DevOps-pijplijnen bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Blue/Green-deployments
- Canary-releases met Actions
- Rollbacks en disaster recovery
- Feature flags en progressieve rollouts