Nadat een project, onderdeel van een project of een bugfix is afgerond moet de code van een development-omgeving naar de acceptatie- of naar de productie-omgeving. Dit kan op meerdere manieren: 

Handmatig (file by file)
Handmatig deployen is een langzame en arbeidsintensieve manier van deployen. Hierbij worden alle bestanden één voor één nagelopen en naar de target machine verplaatst. Vervolgens moet er ook nog het een en ander worden gecontroleerd en getest.

Handmatig (bulk)
Handmatig in bulk is al een stuk sneller dan de file-by-file methode omdat we niet meer per bestand verplaatsten maar in één keer alle bestanden. Afgezien daarvan is het nog steeds arbeidsintensief aangezien alle andere taken, zoals het controleren en testen, ook nog moeten worden uitgevoerd. 

Deployer (automatisch)
Het automatisch uitvoeren van taken is in vrijwel alle gevallen sneller dan het handmatig doen van dezelfde taken. Zo ook met de deployer, hoe meer er geautomatiseerd wordt hoe sneller het gaat.

Waarom

Als programmeur ben ik er van overtuigd dat (vrijwel) elke herhaalde taak die binnen een afzienbare tijd geautomatiseerd kan worden ook geautomatiseerd móet worden. Hoe meer er geautomatiseerd kan worden hoe meer tijd we kunnen besteden aan complexere vraagstukken.

Situatie voor de deployer

Voordat we de deployer hadden geïmplementeerd was het deployen van projecten erg arbeidsintensief. De bestanden werden handmatig geüpload. Dit kwam onder andere doordat er rekening gehouden moest worden met configuraties op verschillende systemen. Daarna moest er ook nog worden getest en bepaalde instellingen moesten worden gecontroleerd. Dit kost erg veel tijd en is ook niet het meest uitdagende werk.

De aanpassingen

Zoals eerder al werd aangegeven moet er rekening worden gehouden met de verschillende omgevingen waarop de applicatie kan draaien. Hiervoor hebben we verschillende scripts geschreven. Ook hebben we verschillende taken geautomatiseerd die tijdens de deployment uitgevoerd (zouden kunnen) worden:

sass compile
De laatste sass bestanden worden samengevoegd tot één bestand.

Environment check
De environment check kijkt naar de omgeving waarnaar wordt ge-deployed en zorgt dat de juiste configuratie wordt geselecteerd.

System update
Tijdens de system update worden alle systemen en scripts geüpdatet. Zo houden we het systeem veilig en stabiel.

Cache clear
De applicatie cache wordt ook geleegd zodat de nieuwe aanpassingen ook gelijk voor iedereen zichtbaar zijn.

Back-ups
Als laatste worden van alle omgevingen ook back-ups gemaakt zodat we altijd een oude versie hebben mocht er iets mis gaan.

Situatie na de deployer

Na de implementatie van de deployer gaat alles vrijwel automatisch. Een van de weinige handelingen die wij nog moeten uitvoeren is het aanroepen van de deployer. Daarbij dienen we aan te geven naar welke environment we willen deployen. Dit kan met het volgende commando:

bin/mage deploy to:

Na het commando uitgevoerd te hebben kunnen we nu rustig een kop koffie zetten. Zodra de koffie is gezet, zal de deployer klaar zijn. 

Resultaat

De gemiddelde tijd die een deployment kostte voordat we de deployer hadden geïntegreerd was bij de grotere projecten soms wel meer dan 2(!) uur. Met de deployer hebben we dit terug weten te brengen tot gemiddeld 2 en maximaal 5 minuten.