Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Ouvrir votre application web au marché chinois

By Joshua FoxMay 4, 202011 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Pour les développeurs d'applications web, s'adresser au marché chinois exige une tout autre logique. Je vous explique, étape par étape, comment parvenir à des solutions suffisamment satisfaisantes.

Votre application web a une portée mondiale, mais pas tout à fait. Il vous reste à conquérir 1,4 milliard de consommateurs chinois. Et il ne s'agit pas d'une simple géolocalisation supplémentaire : s'attaquer à la Chine, c'est partir en terre inconnue, même pour les plus chevronnés. Les lois et la réglementation chinoises, ainsi que le Great Firewall, dressent une barrière de taille face aux entreprises non chinoises.

C'est difficile à concevoir lorsque toute votre carrière repose sur l'art de contourner les obstacles. Pourtant, ces règles sont bien réelles, elles sont appliquées et elles se durcissent sans cesse. Votre site web, votre connexion réseau ou votre serveur cloud peuvent être coupés à tout moment pour non-respect des règles, sans explication ni recours possible.

Un obstacle incontournable

Alors, comment s'y prendre ? L'approche fortement encouragée par le système réglementaire chinois est la suivante :

Les clients chinois doivent être servis exclusivement par une entreprise chinoise, détenue et enregistrée en Chine, avec des équipes DevOps chinoises dans des bureaux chinois, sur un fournisseur cloud chinois, avec une base de données distincte hébergée en Chine, peu intégrée — voire pas du tout — aux systèmes non chinois.

Cela posé, voyons les étapes à suivre pour faire passer votre application au-delà du Great Firewall.

Remarque : vous n'obtiendrez pas une solution aussi fiable et rapide que celles auxquelles vous êtes habitué, mais quelques étapes suffisent souvent à couvrir vos besoins essentiels.

Concevoir un front-end adapté à la Chine

Vous pouvez prendre un bon départ avec de simples optimisations côté front-end, sans rien déployer en Chine. Je vais décrire une combinaison de techniques d'optimisation propres au Great Firewall, ainsi que des techniques classiques que vous connaissez déjà.

Identifiez ce qui vous ralentit

Le Great Firewall ralentit et interrompt de manière irrégulière certains domaines non chinois pour les utilisateurs chinois. Les sites comportant du contenu généré par les utilisateurs sont particulièrement touchés, car le téléversement d'un seul utilisateur peut avoir des conséquences pour l'ensemble du site. Une simple image hébergée sur Imgur, par exemple, peut mettre 60 à 90 secondes à se charger. De même, charger du JavaScript depuis des domaines SaaS — surtout ceux d'entreprises suffisamment importantes pour attirer l'attention négative du Firewall, comme Stripe — peut s'avérer extrêmement lent. Cette lenteur erratique est plus difficile à diagnostiquer et à corriger qu'un blocage permanent, qui pourrait être identifié et résolu rapidement. Au-delà de la lenteur, intégrer du contenu généré par les utilisateurs expose votre propre domaine à un risque de mise sur liste noire. (Héberger directement ce type de contenu est encore pire.)

Bonne nouvelle : la communication depuis la Chine à travers le Firewall ne pose généralement pas de problème pour les domaines absents de la liste noire. Vous pouvez donc remédier à la lenteur des tiers en tirant parti de débits corrects sur votre propre domaine, à condition qu'il ne soit pas bridé. (Si c'est le cas, il vous faudra une solution très différente, et bien plus complexe.)

La première étape consiste à mesurer en détail les performances des appels réseau. Pour un développeur qui analyse et améliore les performances de manière itérative, l'approche la plus souple consiste à utiliser la large gamme d'outils standards intégrés au navigateur, comme Firefox Dev Tools ou Google HAR Analyzer. Cela suppose toutefois de disposer d'une VM en Chine. À défaut, des services en ligne fournissent l'essentiel des informations nécessaires. WebPageTest est une bonne option, et d'autres sont listés ici.

Servez les ressources vous-même

Une fois identifiés les images, fichiers JavaScript et CSS tiers les plus lents à charger, servez-les depuis votre propre domaine. Stockez-en une copie sur votre propre serveur statique ou mettez en place un proxy vers les sources tierces. (C'est l'inverse de l'approche habituelle pour les utilisateurs internationaux, où l'on délègue le service de certains contenus à des serveurs tiers spécialisés.)

Vous constaterez progressivement que votre application web doit offrir des fonctionnalités différentes selon qu'elle s'adresse aux utilisateurs chinois ou internationaux. Par exemple, la plupart des solutions de paiement non chinoises sont sans intérêt pour les clients chinois, qui n'ont pas le droit de les utiliser. En les retirant pour ces clients, vous évitez le ralentissement inutile lié au chargement du JavaScript. Vous pouvez ensuite intégrer des moyens de paiement chinois — mais cela exige un effort d'une autre nature, compte tenu des restrictions légales décrites ci-dessous concernant les applications web commerciales destinées à la Chine.

Comparés au chargement de ressources, les appels AJAX vers des domaines tiers sont plus difficiles à accélérer. Vous pouvez envisager de les faire passer par un proxy, même si cela peut s'avérer complexe en raison des contrôles de sécurité contre les attaques de type man-in-the-middle. Moins votre application dépend de tiers, mieux c'est. Quitte à ralentir votre développement parce que vous devez réinventer des services au lieu de vous appuyer sur des offres extérieures.

Mettez enfin en œuvre les optimisations que vous repoussez depuis longtemps

Voilà pour les optimisations propres à la Chine ; mais l'optimisation front-end classique reste de mise. Vous l'avez peut-être reportée parce que la vitesse était déjà acceptable, mais lorsqu'une ressource peut mettre plusieurs minutes à se charger sans prévenir, votre application web doit être suffisamment résiliente pour qu'aucune ressource ne bloque le rendu. Minifiez tout, et chargez chaque ressource possible de manière asynchrone et après l'événement onLoad, afin de ne pas bloquer le rendu de la page.

Vous obtiendrez ainsi une application qui fonctionne correctement depuis la Chine, et c'est déjà beaucoup. Mais vous n'atteindrez pas la fiabilité et la rapidité auxquelles vous êtes habitué ; et l'accès peut être coupé à tout moment.

Méfiez-vous des fausses bonnes idées

J'évoque maintenant quelques solutions qui ressemblent à des raccourcis mais n'en sont pas : les CDN chinois, les VPN et le déploiement à Hong Kong.

Les CDN sont des accélérateurs, pas des tunnels

Un CDN orienté Chine accélère l'accès à vos serveurs hors de Chine pour vos clients chinois. Mais c'est un accélérateur, pas un tunnel à travers le Firewall. Pour conserver leur licence et éviter d'être bloqués, les fournisseurs de CDN doivent coopérer avec le Great Firewall, et les mêmes restrictions de contenu s'appliquent donc. Le CDN chinois transformera des sites rapides en sites un peu plus rapides ; il ne vous aidera pas à régler les principaux goulots d'étranglement évoqués plus haut.

De plus, ces CDN ne contrôlent pas l'accès du front-end aux serveurs tiers — souvent le plus gros goulot d'étranglement, sauf si vous servez vos ressources depuis votre propre domaine, comme conseillé plus haut. Les CDN ont d'autres inconvénients : la configuration DNS est complexe, et la propriété du CDN change souvent de mains, ce qui rend les API instables.

Un tunneling peu fiable

Les VPN constituent une forme de tunneling à travers le Great Firewall. Ils sont largement utilisés en Chine, bien qu'illégaux. Ils peuvent être une solution acceptable pour rendre une application d'entreprise accessible à un petit nombre d'utilisateurs identifiés. Mais en tant que fournisseur d'application web, vous cherchez très probablement à maximiser l'accès ; vous ne voulez pas obliger vos clients à passer par un VPN. Et même lorsqu'ils sont utilisables, les VPN sont souvent bien plus lents qu'un accès direct, soit en raison des interférences du Firewall, soit parce qu'ils ajoutent une couche supplémentaire à toute communication réseau. À tout moment, ils peuvent tomber lorsque les autorités les identifient et les bloquent — ou pire, les ralentissent de manière irrégulière. (Marc Bevand raconte une histoire impressionnante de blocage de VPN par inspection avancée des paquets via des fuites par canaux auxiliaires.)

Hong Kong reste un site comme un autre, hors du Firewall

Le déploiement à Hong Kong semble prometteur : Hong Kong est frontalier de Shenzhen et administré par la Chine, tout en bénéficiant d'une liberté réseau. Même Google, par ailleurs interdit en Chine, y possède un centre de données. Malheureusement, l'intérêt reste limité. Le Firewall continue de ralentir et d'interrompre les accès depuis la Chine continentale vers Hong Kong, comme pour n'importe quel autre site. De la même manière que vous rapprochez vos serveurs de vos clients hors de Chine pour gagner quelques millisecondes, Hong Kong vous rapproche de la Chine ; mais ne résout pas votre problème principal.

Les licences indispensables

Si héberger en dehors de la Chine ne suffit pas, envisagez un déploiement sur place. Pour cela, il vous faudra d'abord entamer la procédure de licences.

Il existe deux niveaux de licence Internet Content Provider (ICP) :

  • Un enregistrement ICP ( Bei'an), qui est une obligation légale avant d'exposer votre site en Chine.
  • Si votre site est commercial et vend des services en ligne, une licence ICP complète est requise. Elle n'est accessible qu'aux entreprises majoritairement détenues par des Chinois.

Se contenter de l'enregistrement ICP, sans la licence complète, est évidemment très limitant ; mais pour cet article, je partirai du principe que l'enregistrement est votre seule option.

C'est ici que je dois vous rappeler que je suis technologue, pas juriste, et certainement pas juriste agréé en Chine ; vérifiez donc les détails avant de vous lancer. Les lois et les réalités du terrain évoluent en permanence. Je peux toutefois vous assurer que le processus est aussi compliqué qu'il en a l'air.

Obtenez votre Bei'an

Pour l'enregistrement ICP, créez une filiale chinoise avec des employés et des bureaux. Une fiction juridique ne suffit pas : vous devrez passer des contrôles attestant que la filiale est bien réelle, jusqu'à fournir une photo d'un employé tenant une affiche du fournisseur cloud dans vos bureaux physiques. Ce salarié n'est pas qu'une simple formalité — une bonne compréhension de l'impact des règles sur votre déploiement cloud est un atout considérable.

Vous pouvez chercher une entreprise partenaire chinoise qui s'en chargera pour vous, mais l'évolution constante de l'application des règles rend cette voie incertaine.

Ensuite, soumettez l'enregistrement ICP au plus tôt : la procédure prend des semaines. Vous obtiendrez votre numéro ICP, qui devra figurer dans le pied de page de votre page d'accueil.

Si vous souhaitez réellement vendre des biens en Chine, l'enregistrement ICP ne suffit pas : il vous faut une licence ICP, et votre entreprise doit non seulement être enregistrée en Chine, mais aussi détenue majoritairement par des Chinois.

Lancez votre déploiement en Chine

Côté cloud, vos options incluent les fournisseurs locaux comme Alibaba (Aliyun) et Tencent, ainsi que les plateformes cloud étrangères AWS et Azure. Je recommande vivement AWS China et Azure China, qui proposent les mêmes API que celles que vous connaissez déjà. Leurs technologies bénéficient en outre d'une excellente documentation en anglais, d'articles, de formations, de discussions sur StackExchange et de publications sur des forums issus des écosystèmes mondiaux. La documentation en anglais d'Alibaba et Tencent reste rare, malgré de vaillants efforts de rattrapage. (En réalité, la documentation et les publications portant sur les questions propres à AWS China et Azure China sont étonnamment rares ; mais vous aurez au moins l'aide nécessaire sur les API.)

AWS et Azure ne sont pas Amazon et Microsoft

AWS China n'appartient pas à Amazon, et Azure China n'appartient pas à Microsoft. Ces services sont opérés par des entreprises chinoises ; seule la technologie est sous licence des entreprises américaines.

Il faut les considérer comme des clouds distincts qui se trouvent partager les mêmes technologies, et non comme de simples régions séparées. Ils ne sont pas intégrés. Sur AWS, par exemple, vous devez créer des identités utilisateur distinctes à l'intérieur et à l'extérieur de la Chine. Vous ne pouvez pas copier d'AMI vers ou depuis la Chine, il n'existe pas de Route 53 pour assurer un DNS global, et vous ne pouvez pas connecter les régions entre elles via Private Link.

S'inscrire au cloud chinois est nettement plus difficile. Avec les fournisseurs cloud mondiaux, un numéro de carte bancaire suffit généralement. Avec les fournisseurs en Chine (y compris AWS et Azure), il vous faut l'enregistrement ICP et la licence pour votre filiale chinoise. Vous devrez aussi vous plier à des exigences anti-fraude bien plus strictes en matière d'enregistrement sous nom réel, avec photos de plusieurs pièces d'identité et nombreuses informations personnelles. Les offres gratuites sont très limitées, voire indisponibles, et le paiement se fait à l'avance.

Défis techniques

Pendant la mise en place de votre déploiement en Chine, vous rencontrerez probablement plusieurs limites techniques :

Une expérience de déploiement laborieuse

AWS China et Azure China accusent un certain retard sur les fournisseurs d'origine pour l'adoption des nouvelles technologies.

Et des opérations courantes — comme s'inscrire chez le fournisseur cloud, ou même simplement supprimer une VM — exigent souvent bien plus d'assistance humaine que ce à quoi vous êtes habitué, en particulier chez les fournisseurs cloud chinois locaux. Les ingénieurs du support sont professionnels, mais le niveau d'anglais n'est pas celui auquel vous êtes habitué.

Votre accès depuis l'extérieur de la Chine via la console graphique peut occasionnellement ralentir. De même, la connectivité pour le développement et le déploiement peut tomber. Pensez à exécuter vos pipelines de développement et d'intégration continue sur une région hors Chine.

Vous ne pouvez pas exposer les ports HTTP standards comme 80 et 443 sans enregistrement ICP. Tout votre développement et vos tests devront donc se faire sur d'autres ports, en ne basculant sur les ports standards que pour la production.

De même, la majorité de vos tests ne se feront pas dans une configuration DNS réaliste, car cela ne vaut pas la peine d'effectuer un enregistrement uniquement pour des tests : votre domaine (par exemple test-mycompany.com) comme le certificat SSL doivent être validés sur la base de votre enregistrement ICP.

Misez sur des technologies éprouvées

Bonne nouvelle : les connexions réseau entre serveurs chinois et non chinois sont généralement aussi rapides que n'importe quelle connexion dans le cloud. Déployez un sous-ensemble minimal de fonctionnalités sur le cloud chinois, puis intégrez-le à votre déploiement principal hors Chine.

Vous pouvez intégrer cloud à cloud comme d'habitude, sauf à hériter par malchance d'une adresse IP précédemment utilisée par un service bloqué. Vous pouvez toutefois rencontrer des ralentissements à tout moment ; concevez vos intégrations en conséquence. Conservez des bases de données indépendantes à l'intérieur et à l'extérieur du Great Firewall, et synchronisez-les de manière asynchrone. Les fournisseurs cloud proposent des services d'exfiltration en masse qui empruntent une liaison directe contournant le Firewall. Mais ces services sont coûteux et inutiles en usage normal ; des architectures asynchrones classiques feront l'affaire.

Gardez une architecture simple, fondée sur des technologies éprouvées, après avoir vérifié ce qui est disponible et mature sur la plateforme cloud chinoise. (Elles restent toujours légèrement en retard sur les offres mondiales.) N'essayez pas de transposer telle quelle une architecture complexe depuis AWS ou Azure. Sélectionnez plutôt certaines briques de votre architecture en microservices bien découpée. (Si vous n'avez pas encore une telle architecture, c'est le moment !) Ne déployez en Chine que les microservices strictement nécessaires. Vous devrez peut-être créer un fork de votre code pour vous adapter aux exigences du cloud chinois, mais en migrant d'AWS ou Azure vers leurs plateformes chinoises, vous n'aurez pas grand-chose à modifier.

C'est difficile, mais possible : vous pouvez rendre votre application web accessible depuis la Chine. Commencez par optimiser le front-end avec des techniques classiques et d'autres propres à la Chine. Créez ensuite une filiale chinoise et déployez un sous-ensemble minimal de microservices sur AWS China ou Azure China.