
Andrew Hanna

Andrew Hanna

Eerst de definitie: source-driven development is het model waarin je Git-repository, en geen enkele org, de bron van waarheid is voor je Salesforce-configuratie en -code. Orgs worden vervangbare omgevingen waar je vanuit de repo naartoe deployt, in plaats van plekken waartussen je wijzigingen kopieert. Al het andere in deze gids volgt uit die ene zin.
Bij source-driven development landt elke wijziging eerst in versiebeheer en pas daarna in een org. De repository bevat de bedoelde staat van de org. Een deployment is de handeling waarmee je een org aan die bedoeling gelijk maakt.
Er horen drie praktische eigenschappen bij:
Org-naar-org deployen, via change sets of via directe vergelijking van twee orgs, gebruikt een levende org als referentie. Dat is het echte verschil, en het heeft gevolgen.
Let op wat er niet in die lijst staat: snelheid. Source-driven development is niet automatisch sneller. Het is herhaalbaar, en dat is een andere en duurzamere eigenschap.
Source tracking is de platformfunctie die bijhoudt welke componenten sinds de laatste synchronisatie zijn gewijzigd in een org of in je lokale project, zodat je alleen ophaalt wat echt bewogen is in plaats van alles te retrieven en een diff te lezen.
Waar mensen tegenaan lopen is dekking. Source tracking is beschikbaar in scratch orgs en in Developer- en Developer Pro-sandboxen. Het is niet overal beschikbaar, dus een source-driven model moet antwoord geven op de omgevingen die geen wijzigingen voor je kunnen bijhouden: full sandboxen, partial copies en productie. Precies de orgs waar ongedocumenteerde wijzigingen ontstaan.
Commit source format. De twee formaten beschrijven dezelfde metadata anders:
package.xml-manifest. Een veldwijziging herschrijft een
groot bestand, dus de diff bevat het hele object en reviews worden rumoerig.
sfdx-project.json.
Het effect zit in review en merge, niet in functie. Kleine bestanden geven leesbare diffs en veel minder conflicten wanneer twee mensen hetzelfde object raken, en juist die situatie moet source-driven development overleven.
Dit is de vraag die de meeste uitleg overslaat, en precies de vraag die bepaalt of het model een echt Salesforce-team overleeft. Er zal altijd iemand iets in productie wijzigen. Een hotfix om middernacht, een admin die een picklistwaarde toevoegt, een package-upgrade die metadata herschrijft die jij had gecommit.
Beslis deze drie dingen voor de migratie, niet erna:
De meeste Salesforce-teams bestaan uit admins en consultants, geen CLI-gebruikers, en daar loopt een source-driven migratie meestal vast. Zet de volgorde zo dat niemand Git hoeft te leren om te kunnen doorwerken:
Moet elke admin Git leren voor source-driven development?
Nee. Het vereist dat de repository gezaghebbend is. Welke mensen direct met Git werken is een toolingkeuze, geen eigenschap van het model.
Moet ik mijn org in een keer omzetten naar source format?
Nee. Zet om per packagegrens of per team. Een gedeeltelijke repository die echt gezaghebbend is voor zijn scope is beter dan een complete die niemand vertrouwt.
Is source-driven development hetzelfde als CI/CD?
Nee. Source-driven development bepaalt waar de waarheid woont. CI/CD automatiseert het verplaatsen van die waarheid naar orgs. Het eerste kan zonder het tweede, andersom nauwelijks zinvol.
En metadata die niet in versiebeheer past?
Sommige instellingen en package-eigen componenten komen niet schoon terug. Documenteer ze als uitgesloten en beheers ze per procedure, in plaats van te doen alsof de repo ze dekt.
Serpent is gebouwd voor precies het team dat deze gids beschrijft: de repository blijft de bron van waarheid terwijl admins en consultants in tickets werken, met deltadeployments, driftdetectie en rollback met een klik erbovenop. Meer naslaggidsen vind je in SF Guides.
Vrijblijvend.