> For the complete documentation index, see [llms.txt](https://weekly-essay.mikey.wang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weekly-essay.mikey.wang/fr/2021/w05-risk-exposure-of-the-payment-sdk.md).

# W05-L'exposition au risque du SDK de paiement

Dans le programme d'amélioration du paiement B2B de Kuailü, nous avons redéfini des indicateurs par session utilisateur pour mesurer plus objectivement l'expérience et les performances avant et après optimisation. Une tâche consistait à compléter la télémétrie du SDK JavaScript selon cette nouvelle structure.

Le SDK est essentiel au module de paiement : la plupart des appels passent par lui, probablement environ 500 000 par jour. Son rayon d'impact m'a toujours rendu exigeant avant d'y toucher. Sa logique étant très stable, il n'avait pas évolué pendant mon année de travail sur le paiement B2B.

L'ajout de télémétrie demandait peu de développement et peu de changements. Pourtant, j'ai retardé la publication d'une semaine. Ce n'était pas de la procrastination, mais de l'appréhension. Les risques tout au long du déploiement exigeaient une préparation mentale.

Le processus paraît incontrôlable : faible visibilité et peu de moyens d'action aux étapes clés. Le SDK est hébergé sur Burst, dont le tableau de bord et les plans donnent une impression de manque d'entretien. Après soumission du code, la mise en ligne dépend d'une commande fournie par Burst. Son exécution est une boîte noire. Une fois terminée, les ressources de l'origine sont mises à jour. Il faut ensuite rafraîchir manuellement le CDN, comme souffler sur un pissenlit sans savoir où partiront et tomberont les graines. Progression des nœuds, couverture complète, moment où les caches clients laisseront passer la nouvelle version : tout se devine par expérience. Aucun déploiement progressif, aucun retour arrière rapide et, surtout, aucune approbation ni notification aux personnes concernées. Tout se passe en silence.

Après publication, nous ne voyons que les exceptions internes du SDK. Volume d'appels et stabilité dépendent des informations de Burst et du fournisseur CDN, dont l'exhaustivité et l'exactitude sont douteuses.

J'ai consulté owl et lx. Aucun n'a de solution parfaite, mais ces échanges éclairent notre future gouvernance des publications. La différence majeure entre SDK JavaScript et natif est le défi de gestion des versions lié au dynamisme total. Si l'URL utilisée par les équipes métier ne peut changer, le concept de version leur est en pratique caché.

Le SDK a aussi d'autres défauts, comme la pollution de window. Sa gouvernance entrera dans le plan frontend B2B cette année. À quelques centaines de milliers de commandes quotidiennes, le risque reste limité ; à un million, il deviendra majeur.
