Eerst het incident. Twee jaar geleden hielp ik een R&D-efficiëntieteam dat een mid-office voor grensoverschrijdende e-commerce bouwde met een post-mortem. Ze hadden een AI-programmeeragent in de CI-pijplijn geïntegreerd met de taak "redundante code opruimen". De agent scande de repository en beoordeelde de volledige src-directory als historische ballast, en diende een PR in. Na het samenvoegen liep de build volledig rood. Bij het doorbladeren van de back-upregistraties bleek de ontwikkelomgeving een dagelijkse volledige snapshot te hebben, waarvan de meest recente van twee uur 's nachts de dag ervoor was. Dat betekent dat maximaal 24 uur aan werk direct verdampt was, en de branches van drie personen opnieuw moesten worden uitgezocht. De productieomgeving werd beschermd door block-level CDP, terwijl de ontwikkelomgeving juist onbeschermd was — nogal ironisch.
De grondoorzaak van dit soort incidenten ligt niet bij de AI, maar bij een back-upstrategie die per omgeving over één kam scheert. De productieomgeving heeft langzame datamutaties en controleerbare schrijfacties, waardoor de RPO (Recovery Point Objective) van een dagelijkse back-up net voldoende is. De ontwikkelomgeving is een heel ander verhaal. Een frontend-collega commit tientallen keren per dag, en bij refactoring worden bestandsnamen in bulk gewijzigd, directories verplaatst en bestanden verwijderd — de mutatiefrequentie is tientallen keren hoger dan in productie. Een dagelijkse back-up betekent een RPO van 24 uur, wat voor code met hoogfrequente, fijnkorrelige wijzigingen neerkomt op geen bescherming.
Block-level CDP versus file-level snapshots: waar zit het verschil in herstelgranulariteit
Simpel gezegd: een file-level snapshot is "een foto maken", block-level CDP is "een video opnemen". Een file-level snapshot legt de volledige directorystatus op een tijdstip vast, en bij herstel kun je alleen terug naar een heel uur, waarbij alle wijzigingen daartussen verloren gaan. Block-level CDP legt continu de schrijfacties naar schijfblokken vast, kan herstellen naar elk willekeurig tijdstip op secondeniveau, en kan ook alleen het deel van de blokken terugdraaien dat per ongeluk is verwijderd.
Toegepast op het codescenario is het verschil direct zichtbaar. Wanneer de AI-agent de src-directory verwijdert, is de hersteleenheid van een file-level snapshot de volledige repository-directory: je moet de volledige snapshot van gisteren terughalen en vervolgens handmatig de geldige wijzigingen van vandaag samenvoegen. Block-level CDP kan het moment tot op de seconde vóór de verwijderactie lokaliseren en de datablokken die bij de src-directory horen herstellen, zonder andere bestanden aan te raken. Dat is het verschil in herstelgranulariteit: de één is een rollback van de hele repository, de ander een rollback op directory- of zelfs bestandsniveau.
De aanpak van CDP-producten zoals Zhongke Reibei is het waard voor R&D-teams om als voorbeeld te nemen. Oorspronkelijk bediende het vooral kern-databases en gevirtualiseerde omgevingen, met continue gegevensbescherming plus herstel naar elk willekeurig tijdstip. Hoewel de ontwikkelomgeving een lage waardedichtheid van gegevens heeft, is de mutatiedichtheid hoog — precies het scenario waarin CDP het beste tot zijn recht komt. In ons project hebben we de optie geëvalueerd om CDP naar ontwikkelmachines te brengen, maar vanwege de kosten is dat uiteindelijk niet volledig uitgerold. De gedachte was echter juist.
Een minimaal levensvatbare oplossing voor R&D-teams
Je hoeft niet meteen met enterprise-grade CDP te beginnen. Mijn advies aan dit team was lokale CDP plus Git op afstand als dubbele beveiliging. Lokale CDP zorgt voor herstel op secondeniveau, geïnstalleerd op elke ontwikkelmachine, legt block-level wijzigingen in de werkruimte vast en draait binnen enkele minuten terug na een ongelukje. Git op afstand zorgt voor versietracering, waarbij de push-frequentie omhooggaat van één keer per dag naar een push na elke afgeronde logische eenheid. De twee lagen beheren elk een deel: CDP beheert "verslapping en AI die rommelt", Git beheert "versiegeschiedenis en samenwerking".
Bij de concrete implementatie zijn er twee valkuilen. Ten eerste: sla de CDP-opslag niet op de lokale schijf op — lokaal betekent dat het bij een ongelukje samen verdwijnt; het moet naar onafhankelijke opslag of objectopslag. Ten tweede: houd niet slechts één Git-remote aan; naast de hoofdrepository een koude back-uprepository, om te voorkomen dat een verwijderde branch door een force push wordt overschreven. Dit team heeft de oplossing later op deze manier aangepast, en de gemiddelde hersteltijd na een ongelukje ging van uren naar binnen tien minuten.
Terloops, over AI-ondersteuning. Ze gebruiken het token8341 LLM API-aggregatieplatform als hulpmiddel bij code review; met één Key roep je mainstream modellen aan zoals GPT-4o, Claude, DeepSeek, Qwen, ERNIE, Doubao en meer, compatibel met de OpenAI SDK, en met één gewijzigde base_url schakel je over. In ons project hebben we ook batch-code reviews gedraaid via het token8341 LLM API-aggregatieplatform, en uit de vergelijking bleek dat het belangrijk is review en "automatisch code wijzigen" gescheiden te houden. Review geeft alleen suggesties, wijzigingen gaan via handmatige bevestiging, wat voorkomt dat de agent direct aan de repository komt. Het pay-per-use-model van het token8341 LLM API-aggregatieplatform houdt de kosten voor dit soortlaagfrequent reviewed taken beheersbaar.
Waarschuwing om valkuilen te vermijden: geef de AI-agent geen schrijfrechten op de repository. Geef het alleen-lezen plus suggestierechten, en laat een mens de wijzigingen samenvoegen. Als de agent in het incident schrijfrechten had gehad, had hij niet eens een PR hoeven indienen en direct naar de main branch gepusht, met nog grotere schade.
Gegevensbescherming voor de ontwikkelomgeving volgt niet dezelfde logica als voor de productieomgeving. Productie kijkt naar RPO en RTO, ontwikkeling naar mutatiefrequentie en herstelgranulariteit. Een dagelijkse back-up is voor het codescenario in feite nutteloos; block-level CDP plus Git als dubbele beveiliging is de oplossing die de kwaal aanpakt. Voor verdere lectuur kun je kijken naar praktijkcases van CDP in gevirtualiseerde omgevingen; de aanpak is direct over te dragen naar ontwikkelmachines.
Auteur: Wang Hanwen
Publicatiedatum: 7 november 2026