SysteemarchitectuurDevOps Engineer, Backend ontwikkelaar

Wat is Zero Downtime Deployment in de context van IT-systeemarchitectuur en hoe implementeer je het?

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord.

Zero Downtime Deployment is de praktijk van het bijwerken van een applicatie zonder onderbreking van de werking en zonder dat deze onbereikbaar is voor gebruikers. Dit wordt bereikt door oude instanties sequentially uit te schakelen en nieuwe instanties in te voeren.

Een voorbeeld van implementatie voor een stateless applicatie in de cloud (bijvoorbeeld met Kubernetes):

  1. Een nieuwe versie van de pods uitrollen zonder de oude te beëindigen.
  2. Controleren of de nieuwe instanties gezond zijn.
  3. Pas daarna het verkeer naar hen omleiden (blue-green/release of rolling update).
  4. Oude containers worden geleidelijk beëindigd na volledige zekerheid over de nieuwe versie.

Een voorbeeld van deployment.yaml met rolling update:

apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 4 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v2

Belangrijke kenmerken:

  • Vereist stateless services of gespecialiseerde strategieën voor statusmigratie.
  • Vaak geïmplementeerd via rolling update of blue-green deployment.
  • Voor zero downtime op het niveau van de database is migratie in meerdere fasen vereist (backward/forward-compatible schema's).

Vragen met een valkuil.

Is Zero Downtime Deployment onmogelijk bij het wijzigen van het datamodel?

Het is mogelijk als schema-migraties in twee stappen worden uitgevoerd: eerst wordt de code compatibel met zowel het oude als het nieuwe schema, daarna volgt de daadwerkelijke migratie en het verwijderen van legacy-code.

Als de applicatie stateless is, is zero downtime deployment altijd gegarandeerd?

Nee! Beperkende factoren kunnen externe status, time-outs van verbindingen, niet-verwerkte verzoeken of niet-ondersteunde reverse-incompatible veranderingen in de API zijn.

Is Zero Downtime Deployment alleen nodig voor grote bedrijven?

Nee. Zelfs voor kleine start-ups en SaaS-oplossingen is zero downtime een cruciale factor voor de gebruikerservaring (vooral op wereldwijde markten en bij hoge belasting).