Releaseversionering en deployment
Krijg inzicht in best practices voor het versioneren van releases, het deployen van updates en het beheren van rollbacks in een productieomgeving.
Releaseversionering en deployment is een gratis Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen bevat in totaal 4 lessen.
Waarom releases van versies voorzien?
Wanneer je een Erlang-toepassing voor productie bouwt, wordt deze verpakt in een release. Net als andere software hebben releases duidelijke versienummers nodig.
Versiebeheer helpt je om:
- Wijzigingen in de loop van de tijd bij te houden.
- Specifieke builds te identificeren.
- Compatibiliteit met andere systemen te beheren.
- Upgrades en terugdraaiacties te plannen.
Het versiebeheersysteem van Erlang
In Erlang vindt versiebeheer op verschillende niveaus plaats. Elke afzonderlijke toepassing, weergegeven door een bestand .app, heeft een eigen versie. De volledige release, weergegeven door het bestand .rel, heeft ook een versie die doorgaans de hele bundel weerspiegelt.
De sleutel vsn in een bestand .app definieert de versie van een toepassing.
% my_app.app file (conceptual)
{application, my_app,
[{description, "My Erlang Application"},
{vsn, "1.0.0"},
{modules, [my_app_app, my_app_sup]},
{registered, []},
{applications, [kernel, stdlib]},
{mod, {my_app_app, []}},
{env, []}]}.Semantische versiebeheer (SemVer)
Een veelgebruikte standaard is Semantic Versioning (SemVer), doorgaans geschreven als MAJOR.MINOR.PATCH. Het is een goede gewoonte om deze standaard te volgen voor je Erlang-toepassingen.
- MAJOR: Wordt verhoogd bij incompatibele API-wijzigingen.
- MINOR: Wordt verhoogd bij nieuwe functionaliteit die achterwaarts compatibel is.
- PATCH: Wordt verhoogd bij achterwaarts compatibele foutoplossingen.
Zo kunnen gebruikers de impact van een upgrade beter begrijpen.
SemVer toepassen in Erlang
Je past SemVer doorgaans toe op de vsn van je toepassing in het bestand .app. Wanneer je een release maakt, komt de versie daarvan (relvsn) vaak overeen met de versie van de hoofdtoepassing of volgt deze een vergelijkbaar schema.
Hulpmiddelen zoals rebar3 beheren deze versies bij het bouwen van releases.
% my_app.app file
{application, my_app,
[{description, "My Erlang Service"},
{vsn, "1.2.3"},
{modules, [my_app_app, my_app_sup]},
{registered, []},
{applications, [kernel, stdlib]},
{mod, {my_app_app, []}},
{env, []}]}.Overzicht van implementatiestrategieën
Hoe krijg je een versie van een Erlang-release in productie zodra je die hebt? Er zijn verschillende strategieën, afhankelijk van de vereisten van je systeem voor beschikbaarheid en complexiteit.
- Koude implementatie: Eenvoudigst, maar veroorzaakt uitvaltijd.
- Hot-upgrades: Geen uitvaltijd, zoals behandeld in de vorige les.
- Blue/green- of canary-implementaties: Geavanceerder en vaak gebruikt met orkestratiehulpmiddelen.
Koude implementatie: eenvoudig herstarten
Een koude implementatie is de eenvoudigste methode. Je stopt het momenteel actieve Erlang-systeem volledig, vervangt de bestanden ervan door de nieuwe release en start vervolgens de nieuwe versie.
Deze methode veroorzaakt altijd uitvaltijd en is daarom geschikt voor systemen waarbij korte onderbrekingen aanvaardbaar zijn.
# Stop the old release
/path/to/my_app/bin/my_app stop
# (Replace files with new release)
# Start the new release
/path/to/my_app/bin/my_app startHot-upgrades versus volledige implementatie
In de vorige les heb je geleerd dat hot code laden het mogelijk maakt een actief Erlang-systeem te upgraden zonder het te stoppen.
Hot-upgrades zijn krachtig voor het toepassen van patches of kleine uitbreidingen, maar zijn specifiek bedoeld voor het wijzigen van *delen* van een actief systeem. Een volledige implementatie verwijst vaak naar de eerste installatie of een volledige vervanging van de hele release, soms met een koude herstart of geavanceerder verkeersbeheer.
Het belang van terugdraaiacties
Zelfs met grondig testen kunnen nieuwe implementaties onverwachte problemen veroorzaken. Een robuuste implementatiestrategie bevat daarom altijd een plan voor terugdraaiacties.
Een terugdraaiactie betekent dat je je systeem terugzet naar een eerdere, stabiele versie als de nieuwe implementatie mislukt of problemen veroorzaakt. Zo beperk je de impact van fouten en herstel je de dienst snel.
Het terugdraaimechanisme van Erlang
Erlang-releases zijn ontworpen om terugdraaien te ondersteunen. Wanneer je een live upgrade uitvoert, genereert Erlang een .relup-script dat beschrijft hoe je tussen versies wisselt. Belangrijk is dat het ook weet hoe het script moet worden omgekeerd om terug te gaan.
Ook bij koude implementaties kun je terugschakelen naar een vorige release door je releasemappen te beheren en de gewenste versie opnieuw te starten.
# Example of a rollback command using release_handler
# This would typically be part of a custom script or release tool
% release_handler:install_release("my_app-1.1.0").
% release_handler:make_permanent("my_app-1.1.0").
# Alternatively, for cold deployment:
# /path/to/my_app_1.1.0/bin/my_app startTest uw begrip
Zet de stappen voor een typische koude implementatie van een Erlang-release in de juiste volgorde.
Samenvatting: versiebeheer en implementatie
Je hebt de belangrijkste aspecten van releaseversiebeheer en implementatie in Erlang geleerd:
- Versiebeheer: Gebruik
vsnin.app-bestanden, bij voorkeur volgens SemVer (MAJOR.MINOR.PATCH), om wijzigingen bij te houden en te beheren. - Implementatie: Begrijp koude implementatie (met downtime) en het verschil daarvan met live upgrades.
- Terugdraaien: Plan altijd hoe je terugkeert naar een stabiele vorige versie, zodat je systeem veerkrachtig blijft.
Deze werkwijzen zijn essentieel voor het beheren van robuuste Erlang-toepassingen in productie!
Leer Erlang 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 “Releaseversionering en deployment” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen, waaronder “Releaseversionering en deployment”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen bevat in totaal 4 lessen.
Wat leer ik in “Releaseversionering en deployment”?
Krijg inzicht in best practices voor het versioneren van releases, het deployen van updates en het beheren van rollbacks in een productieomgeving. Je oefent met Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen 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 Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen te beginnen?
Ervaring vooraf is niet nodig. Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen 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 3 van 4.
Hoe lang duurt de les “Releaseversionering en deployment”?
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 Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen?
Ja. Elke les over Erlang OTP: programmeren van gedistribueerde en fouttolerante systemen 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
- Erlang-releases maken
- Hot code loading en upgrades
- Releaseversionering en deployment
- Releaseconfiguratie en bootscripts