Deployment is het proces waarbij software, websites, webapplicaties of updates worden overgebracht van een ontwikkel- of testomgeving naar een productieomgeving waar ze beschikbaar komen voor eindgebruikers. Het is een cruciale fase in de softwareontwikkelingscyclus die bepaalt wanneer en hoe nieuwe functionaliteit, bugfixes of verbeteringen beschikbaar komen voor gebruikers.
Een deployment omvat verschillende stappen: het voorbereiden van de code, het testen in een staging-omgeving, het configureren van servers en databases, het migreren van data, en uiteindelijk het activeren van de nieuwe versie in de live-omgeving. Moderne deployment-processen maken vaak gebruik van geautomatiseerde tools en pipelines om fouten te minimaliseren en de snelheid te verhogen.
Deployment-strategieën
Er bestaan verschillende deployment-strategieën, elk met eigen voor- en nadelen:
- Big Bang Deployment: De volledige applicatie wordt in één keer vervangen door de nieuwe versie. Dit is eenvoudig maar risicovol.
- Rolling Deployment: De update wordt geleidelijk uitgerold over meerdere servers, waardoor downtime wordt geminimaliseerd.
- Blue-Green Deployment: Twee identieke productieomgevingen worden onderhouden. De nieuwe versie wordt geïnstalleerd in de inactieve omgeving en vervolgens wordt het verkeer omgeschakeld.
- Canary Deployment: De nieuwe versie wordt eerst uitgerold naar een klein percentage gebruikers om te testen voordat volledige uitrol plaatsvindt.
Continuous Deployment vs Continuous Delivery
Binnen moderne DevOps-praktijken wordt onderscheid gemaakt tussen Continuous Delivery en Continuous Deployment. Bij Continuous Delivery wordt code automatisch voorbereid voor release, maar vereist de daadwerkelijke deployment nog een handmatige goedkeuring. Bij Continuous Deployment wordt elke wijziging die alle geautomatiseerde tests doorstaat automatisch naar productie gepusht zonder menselijke tussenkomst.
Deployment-omgevingen
Professionele ontwikkelprocessen maken gebruik van meerdere omgevingen:
- Development: Waar ontwikkelaars actief code schrijven en testen
- Staging: Een replica van de productieomgeving voor eindtesten
- Production: De live-omgeving waar eindgebruikers toegang toe hebben
- Testing/QA: Specifieke omgeving voor kwaliteitstesten
