Magento zero downtime deployment

Magento zero downtime deployment betyder, at nye ændringer og opdateringer lægges på webshoppen, uden at shoppen er nede for kunderne imens. I stedet for at bygge den nye version direkte på den kørende shop bygges den ved siden af og skiftes ind på et øjeblik.

Herunder forklarer vi, hvorfor en almindelig Magento-opdatering giver nedetid, hvordan zero downtime deployment virker, og hvornår der stadig er brug for et kort vedligeholdelsesvindue.

Hvorfor giver en almindelig opdatering nedetid?

En klassisk deployment af Magento 2 sker direkte på serveren:

  1. Shoppen sættes i maintenance mode, så kunderne ser en vedligeholdelsesside.
  2. Den nye kode hentes, og afhængigheder installeres med Composer.
  3. Databasen opdateres med setup:upgrade.
  4. Koden kompileres med setup:di:compile.
  5. Statiske filer (CSS, JavaScript, skrifttyper) bygges med setup:static-content:deploy.
  6. Cachen tømmes, og maintenance mode slås fra.

Kompilering og statiske filer tager typisk flere minutter, og på en shop med mange temaer og sprog endnu længere. Hele den tid kan kunderne ikke handle. Sker der en fejl undervejs, er shoppen nede, indtil fejlen er rettet.

Sådan virker zero downtime deployment

Idéen er at gøre alt det tunge arbejde, før den nye version tages i brug:

  • Build ved siden af: den nye version bygges i en ny mappe eller i en byggeproces, fx med GitHub Actions. Composer, kompilering og statiske filer klares her, mens den gamle version kører videre.
  • Releases og symlink: hver version ligger i sin egen mappe. Webserveren peger på et link ("current"), og når den nye version er klar, skiftes linket – det tager et øjeblik.
  • Delte filer: billeder (pub/media), logfiler og konfiguration ligger uden for release-mapperne og deles mellem versionerne.
  • Database kun når det er nødvendigt: med setup:db:status kan man tjekke, om der overhovedet er databaseændringer. Er der ingen, springes setup:upgrade over.
  • Hurtig rollback: går noget galt, peger man linket tilbage på den forrige version.

For at kunne bygge statiske filer uden adgang til databasen skal konfigurationen af butikker og temaer ligge i app/etc/config.php, som Magento kan generere med app:config:dump.

Hvornår er der stadig nedetid?

Ærligt talt: helt nul nedetid er ikke altid muligt. Indeholder en opdatering ændringer i databasen – fx en ny Magento-version eller et nyt modul med egne tabeller – skal setup:upgrade køres, og shoppen kan kræve maintenance mode imens. Med zero downtime deployment er det vindue dog nede på sekunder i stedet for minutter, fordi alt andet er klaret på forhånd. Almindelige ændringer i design, tekster i skabeloner og moduler uden databaseændringer kan lægges på helt uden nedetid.

Hvornår betaler det sig?

Zero downtime deployment gør størst forskel for webshops, der:

  • udvikler løbende og lægger ændringer på flere gange om måneden,
  • har trafik og salg døgnet rundt eller i flere lande,
  • ikke vil vente til om natten med at lægge rettelser på.

Det giver også mere sikre opdateringer, fordi man kan teste den byggede version, før den tages i brug. Læs mere om at opgradere Magento 2 og om drift af en Magento webshop.

Vi tilbyder Magento zero downtime deployment med GitHub til webshops, vi har bygget. Kontakt os, hvis du vil høre mere.