Hoe we pleitten voor het CRM CI/CD-framework waarin Salesforce DX, GIT, BUILDKITE en Vlocity zijn geïntegreerd voor een verbeterde, efficiënte en continue levering met hoge softwarekwaliteit.
Door: Sharda Kumari Pramod Gavade
Invoering
Het CRM-platform biedt een robuust pakket functionaliteiten voor het bouwen van schaalbare applicaties met minimale afhankelijkheid van complexe codering. Het beheren en implementeren van code en configuraties binnen dit ecosysteem kan echter een uitdaging zijn, en de voortdurend evoluerende aard van het platform zorgt voor een extra laag van complexiteit. Dit kan onder andere leiden tot trage implementatietijden, problemen bij het balanceren van code en configuratie (bijvoorbeeld Apex-klassen en triggers versus validatieregels, pagina-indelingen) en het beheren van meerdere omgevingen.
Om deze uitdagingen aan te gaan, hebben we bij Airbnb een veerkrachtig DevOps-framework ontwikkeld dat specifiek is afgestemd op het CRM-platform. Het raamwerk automatiseert het proces van het verplaatsen van code en configuratie naar productie voor ontwikkelaars, systeembeheerders en low-code gebruikers zoals bedrijfsanalisten die dashboards bouwen.
De uitdagingen
Het CRM-platform is een veelzijdig ecosysteem met krachtige functionaliteiten, maar het beheren van code en configuraties daarin kan een uitdaging zijn. Met complexe metadata en meerdere omgevingen is het moeilijk om wijzigingen efficiënt door te voeren. Bovendien vereist het evoluerende karakter van het platform een proactieve aanpak.
Implementatietijden: Het doorvoeren van wijzigingen kan een tijdrovend proces zijn, vooral bij omvangrijke toepassingen. Dit kan van invloed zijn op de snelheid van levering, wat ontevredenheid veroorzaakt bij zowel ontwikkelaars als belanghebbenden.
Balanceringscode en configuratie: Het CRM-platform maakt de ontwikkeling van applicaties mogelijk via zowel programmatische code (met behulp van Apex, Visualforce en Lightning Web Components) als low-code ontwikkelingsmethodologieën (met behulp van tools zoals App Builder en Flow Builder). Het effectief beheren van een combinatie van op code en configuratie gebaseerde ontwikkeling vormt echter een enorme uitdaging.
Beheer van meerdere omgevingen: CRM-ontwikkelaars werken doorgaans in individuele omgevingen (sandbox- of scratch-organisaties) om hun code te bouwen en te testen voordat ze deze naar omgevingen op een hoger niveau verplaatsen. Het beheren van meerdere omgevingen binnen verschillende teams kan echter steeds ingewikkelder en tijdrovender worden.
Complexiteit van bestandsmetagegevens: CRM is een ingewikkeld platform met verschillende soorten metagegevens (inclusief, maar niet beperkt tot, Apex-klassen, triggers, Lightning-componenten, stromen) die nauwgezet beheer vereisen tijdens het ontwikkelings- en implementatieproces.
Het bijhouden van veranderingen: Als cloudgebaseerd platform ondergaat CRM regelmatig veranderingen, waarbij regelmatig nieuwe functies en updates worden uitgebracht. Het bijhouden van deze veranderingen en het garanderen van een niet-verstorende integratie met bestaande applicaties kan een aanzienlijke uitdaging zijn.
De oplossing
Bij Airbnb hebben we een veerkrachtig DevOps-framework ontwikkeld dat specifiek is afgestemd op het CRM-platform dat Salesforce DX, Git en Buildkite integreert. Onze aanpak vergemakkelijkt de betrokkenheid van alle belanghebbenden, van ontwikkelaars tot systeembeheerders en low-code gebruikers, bij het ontwikkelings- en implementatieproces, waardoor de DevOps-oplossing voor alle betrokken persona’s wordt geoptimaliseerd.
De CRM DevOps-levenscyclus omvat de volgende kritieke omgevingen die nodig zijn voor de effectieve implementatie van code:
- Ontwikkelaar (DEV) — De ontwikkelaars gebruiken de DEV-omgeving om de code te bouwen en te verfijnen.
- Integratie (SIT) — SIT zorgt voor een naadloze integratie met andere systemen.
- Kwaliteitsborging (QA) — QA verifieert de functionaliteit van de software.
- Volledige kopie (STAGING) — Staging biedt een realistische setting voor training en gebruikersacceptatie.
- Pre-release — Pre-release dient als een gecontroleerd hostingplatform voordat de code live gaat.
- Hotfix — Hotfix maakt een snelle oplossing van urgente productieproblemen mogelijk.
- Prod: productie-exemplaar waarin al het live verkeer en gegevens zijn opgeslagen.
Elk van deze omgevingen is gekoppeld aan een overeenkomstige tak in het Git-versiebeheersysteem en is naadloos verbonden via een Buildkite DevOps-pijplijn. Nadat ontwikkelaars het peer review-proces met succes hebben doorlopen, worden Buildkite-taken geactiveerd, waarbij gebruik wordt gemaakt van Salesforce DX om de code in de doelsandbox te implementeren.
Het DevOps-traject begint met het vernieuwen van individuele ontwikkelaarsinstanties binnen de CRM vanuit de integratieomgeving (SIT) om wijzigingen te importeren die door andere ontwikkelaars zijn aangebracht. Hierna wordt er vanuit de integratietak een feature branch in Git gemaakt, waardoor ontwikkeling en unit-testen in individuele omgevingen wordt vergemakkelijkt. Ontwikkelaars kunnen efficiënt werken in hun eigen ontwikkelomgevingen en tegelijkertijd een naadloze integratie en samenwerking over de hele linie garanderen.
Zodra nieuwe functionaliteit is geïmplementeerd, is de ontwikkelingsfase voltooid. Code ondergaat een reeks rigoureuze procedures voor kwaliteitsborging voordat het overgaat naar de SIT-omgeving. Een van de gebruikte procedures is de analyse van statische codes, die ervoor zorgt dat de codeerstandaarden en best practices worden nageleefd. Bovendien worden pull-aanvragen onderworpen aan uitgebreide beoordelings- en goedkeuringsprocedures om de codekwaliteit te behouden. Voordat de code wordt gepromoot, wordt deze uiteindelijk geïmplementeerd in de SIT-omgeving voor integratietests, waar systeemintegraties worden gevalideerd.
Na succesvol testen worden wijzigingen gepromoveerd naar de QA-omgeving voor functionele en regressietesten, inclusief automatiseringstesten met behulp van Provar. QEen omgeving wordt gebruikt voor het end-to-end testen van een functie tussen de integrerende systemen. In deze omgeving worden automatiseringstestscripts uitgevoerd om een foutvrij product te garanderen. Terwijl codebeoordelingen ervoor zorgen dat er hoge coderingsnormen worden gehanteerd, zorgen QA- en automatiseringstests voor een goed functionerende oplossing.
De volgende stap in het DevOps-traject is de staging-omgeving, waar gebruikersacceptatietests en prestatietests plaatsvinden. PTPaaS-sandbox wordt gebruikt voor prestatie- en belastingtests, een pilotaanbod dat specifiek is ontworpen voor prestatietests. Deze sandbox is verbonden met de staging-vertakking om een naadloze uitvoering van prestatietests te garanderen. Nu de laatste stappen van de validatie zijn voltooid, kunnen wijzigingen die zijn ontstaan als wijzigingen in iemands feature branch nu worden gepromoveerd naar productie en door iedereen worden gebruikt.
In tegenstelling tot de normale ontwikkeling van functies moeten we urgente oplossingen kunnen pushen. Deze stroom neemt een andere route. Fixes vinden hun oorsprong in een omgeving die speciaal is bedoeld voor Hotfixes en die een replica is van Prod (Hotfix genaamd). Er wordt aan een oplossing gewerkt in de hotfix-omgeving, getest en gevalideerd door QA en vervolgens via Staging naar Prod gepusht. Hotfixes omzeilen de SIT-omgeving. Eenmaal gepromoveerd naar productie, worden de fixes vervolgens weer doorgegeven aan de laagste ontwikkelaarssandbox in de keten.
Er wordt een releasetijdsblok (implementatievenster) bepaald voor de codepush en overeengekomen door alle belanghebbenden voor de codepush. Het hebben van een speciale implementatietijd helpt bij het scheppen van verwachtingen bij de eindgebruikers over de nieuwe functies die worden uitgebracht. Een van de grootste uitdagingen bij CRM-implementaties zijn langere implementatietijden, die nog verder worden verergerd door omvangrijke implementaties en langere testuitvoeringen. Het kan soms tot 90 minuten duren voordat wijzigingen zijn geïmplementeerd. Om deze uitdaging te omzeilen, kiest ons raamwerk voor een proactieve aanpak door een build-validatie uit te voeren op de productieomgeving. Deze validatie controleert vooraf alle uitvoeringen van testklassen en metagegevens, doorgaans meer dan 24 uur vóór de implementatieperiode, en maakt snelle implementatie in de doelorganisatie mogelijk. Tijdens de implementatieperiode voert onze DevOps-automatisering een snelle implementatie uit vanuit Buildkite, wat helpt om problemen met de build- of testruns vroegtijdig te detecteren en de daadwerkelijke implementatietijd aanzienlijk verkort. Om de implementatietijden verder te minimaliseren, hebben we incrementele implementaties geïmplementeerd, waarbij alleen de verschillen tussen codebases worden geïmplementeerd in plaats van de volledige codebase. De vorige commit-ID wordt opgeslagen in een aangepaste instelling in de doelorganisatie, en Buildkite haalt deze op tijdens de implementatie om alleen de hashset vast te leggen.
De overwinningen
- Door Quick Deploy te gebruiken, werd de implementatietijd teruggebracht van gemiddeld 90 minuten naar 15 minuten
- Delta-implementaties ingeschakeld in plaats van volledig pakket.
- Configuratie- en metadataversiebeheer.
- Ingebouwde statische codeanalyse in de repository.
- Terugdraaimechanisme.
- Integratietesthaken.
Conclusie
Onze DevOps-implementatie heeft met succes een efficiënte, continue levering van hoogwaardige software op het CRM-platform mogelijk gemaakt. Dit werd bereikt door Salesforce DX, Git en Buildkite naadloos te integreren, waardoor een DevOps-framework werd opgezet dat is geoptimaliseerd voor alle persona’s, inclusief ontwikkelaars, beheerders en low-code-gebruikers. Als gevolg hiervan zijn we getuige geweest van een opmerkelijke afname van de implementatietijd en een opmerkelijke verbetering van de softwarekwaliteit, wat uiteindelijk heeft geleid tot het leveren van grotere waarde aan onze klanten.
Als dit soort werk je interesseert, bekijk dan een aantal van onze gerelateerde posities.
Dankbetuigingen
Speciale vermelding voor Yiming Yan, Sameer Miraj, Vasu Rampally,Srinath Therampattil, Lea Kennedy en het hele team voor hun hulp bij het implementeren van dit raamwerk. Speciale dank aan Sudheer Peddineni voor de begeleiding.
Het transformeren van CRM DevOps bij Airbnb: een krachtig raamwerk voor continue levering werd oorspronkelijk gepubliceerd in The Airbnb Tech Blog op Medium, waar mensen het gesprek voortzetten door dit verhaal onder de aandacht te brengen en erop te reageren.