
Serpent Team

Andrew Hanna

Kort antwoord: back-promotie is de merge die een productiewijziging weer omlaag brengt naar elke lagere branch en org in je pipeline. Je hebt het nodig omdat een hotfix die rechtstreeks in productie is gezet nergens anders bestaat, waardoor de volgende gewone release hem stilletjes overschrijft. De veilige manier om dit te automatiseren is een trapsgewijze merge, één omgeving tegelijk, geopend als pull request en niet gepusht door een script.
Een gewone promotie brengt een wijziging omhoog: dev naar
integration naar uat naar main. Back-promotie
gaat de andere kant op en merget wat al in een hogere omgeving staat naar beneden,
zodat de lagere omgevingen weer kloppen.
Er moeten twee dingen meereizen, en de meeste teams doen alleen het eerste:
Omdat een hotfix de aanname breekt waar je pipeline op rust: dat productie alleen ontvangt wat via de keten omhoog is gekomen. Breek die aanname en er volgen drie problemen.
Buitenom-wijzigingen zijn niet alleen hotfixes. Een page layout die tijdens een incident in productie is aangepast, een picklistwaarde voor support, een veld dat is toegevoegd om een gebruiker te deblokkeren: ze hebben allemaal dezelfde weg terug nodig.
Dit is het deel dat de meeste handleidingen overslaan. Back-promotie gaat op voorspelbare manieren mis, en vijf regels voorkomen bijna alles.
main in
uat, dan uat in integration, dan
integration in dev. main direct in
dev mergen laat de overgeslagen branches later conflicteren.
Back-promotie is geen deployprobleem. Het is een probleem van branchhygiëne dat zich drie weken later als deployprobleem meldt.
main, nooit vanaf dev, zodat de fix niets ongereleased
meeneemt.
main. De pipeline
opent automatisch een back-promotie-pull-request naar de eerstvolgende branch
eronder.
Nee, en dat wel denken is een veelgemaakte en dure fout. Een refresh vervangt de sandbox door een kopie van productie, wat de hotfix inderdaad meebrengt, en vernietigt onderweg elke ongereleasede wijziging in die sandbox. Refreshes zijn bovendien gerantsoeneerd: een Full sandbox kan maar eens per 29 dagen worden ververst (Salesforce Help), dus het is een geplande gebeurtenis en geen incidentrespons.
Gebruik refreshes om data en langlopende drift te resetten. Gebruik back-promotie om broncode en orgs daartussenin gelijk te houden. De meeste Salesforce DevOps-platformen ondersteunen deze vorm in enige mate, waaronder Copado, Gearset, AutoRABIT, Flosum, Blue Canvas en Salto. Wat verschilt is of de cascade automatisch is en of hij als beoordeelbare pull request binnenkomt.
Wat is het verschil tussen promotie en back-promotie?
Promotie brengt een wijziging omhoog richting productie. Back-promotie brengt een bestaande wijziging uit een hogere omgeving omlaag, zodat de lagere omgevingen niet verder afdrijven.
Moet back-promotie volledig automatisch zijn?
De trigger en de pull request wel. De merge zelf hoort nog steeds te worden goedgekeurd, want een conflict dat zonder review wordt opgelost is precies hoe een hotfix twee keer ongedaan wordt gemaakt.
Hoe gaan we om met een conflict tijdens back-promotie?
Los het op in de back-promotiebranch, in het voordeel van het productiegedrag, en laat degene die de hotfix schreef het bevestigen. Los het nooit op door de lagere branch integraal over te nemen.
Hebben we back-promotie nodig als niemand rechtstreeks in productie werkt?
Ja, alleen minder vaak. Langlopende releasebranches, teruggedraaide releases en patchversies van packages zetten allemaal wijzigingen in hogere omgevingen die de lagere niet hebben.
Meer stapsgewijze pipeline-playbooks staan in de SF Guides-bibliotheek. Opent je pipeline de cascade vandaag nog niet, begin dan met regel twee: stap voor stap, in volgorde. Dan is back-promotie niet langer de klus die niemand wil.
Vrijblijvend.