Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Cómo tu web app puede llegar al mercado chino

By Joshua FoxMay 4, 202011 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Para los desarrolladores de web apps, atender usuarios en China exige una forma de pensar muy distinta. Te explico cómo avanzar con pasos prácticos hasta llegar a soluciones suficientemente buenas.

Tienes una web app con alcance global, aunque no del todo. Aún no llegas a esos 1.400 millones de consumidores chinos. Y esto no es una geolocalización más. Atender a China es un viaje a lo desconocido, incluso para el tecnólogo más experimentado. Las leyes chinas, las regulaciones y el Gran Cortafuegos son una barrera enorme para las empresas no chinas.

Cuesta asimilarlo cuando tu carrera se ha construido sobre la base de encontrarle la vuelta a cualquier obstáculo. Sin embargo, las reglas son reales, se aplican y cada vez son más estrictas. Tu sitio web, tu conexión de red o tu servidor en la nube pueden cortarse en cualquier momento por incumplir las normas, sin explicación alguna y sin una vía práctica para apelar.

Un obstáculo ineludible

Entonces, ¿cómo se hace? El enfoque que el sistema regulatorio chino impulsa con fuerza es este:

A los clientes chinos solo deberían atenderlos empresas de propiedad y registro chinos, con DevOps chinos en oficinas chinas, sobre un proveedor cloud chino, con una base de datos separada en China e integrada de manera muy laxa —si es que llega a integrarse— con sistemas no chinos.

Dicho esto, repasemos los pasos para que tu app logre atravesar el Gran Cortafuegos.

Nota: No vas a lograr una solución tan confiable y rápida como a la que estás acostumbrado, pero incluso unos pocos pasos suelen alcanzar para cubrir tus requisitos básicos.

Cómo construir un front-end amigable con China

Puedes lograr un buen punto de partida con optimizaciones sencillas en el código de tu front-end, sin desplegar nada en China. Te describiré una combinación de técnicas de optimización específicas para lidiar con el Gran Cortafuegos, junto con otras estándar que ya conoces.

Identifica qué te está ralentizando

El Gran Cortafuegos ralentiza e interrumpe de forma irregular ciertos dominios no chinos para los usuarios chinos. En particular, los sitios con contenido generado por usuarios se ven muy afectados, ya que la subida de un solo usuario puede tener consecuencias para todo el sitio. Una sola imagen de Imgur, por ejemplo, puede tardar entre 60 y 90 segundos en cargar. De la misma forma, cargar JavaScript desde dominios SaaS, sobre todo de empresas lo bastante grandes como para atraer la atención negativa del Cortafuegos —como Stripe—, puede ser extremadamente lento. Esta lentitud inconsistente es más difícil de diagnosticar y de resolver que un bloqueo constante, que se podría identificar y solucionar rápido. Además de la lentitud, incrustar contenido generado por usuarios pone tu propio dominio en riesgo de terminar en lista negra. (Alojarlo directamente es todavía peor.)

El lado positivo es que la comunicación desde China a través del Cortafuegos hacia dominios que no están en la lista negra normalmente no es problema. Así que puedes resolver la lentitud de terceros aprovechando velocidades aceptables en tu propio dominio, siempre que este no esté siendo limitado. (Si lo está, vas a necesitar una solución muy distinta y bastante más complicada.)

El primer paso es medir en detalle el rendimiento de las llamadas de red. El enfoque más flexible para un desarrollador que analiza y mejora el rendimiento de forma iterativa es usar la amplia variedad de herramientas estándar de desarrollo en navegador, como Firefox Dev Tools o Google HAR Analyzer. Sin embargo, esto requiere acceso a una VM en China. Como alternativa, los servicios web pueden darte la mayor parte de la información que necesitas. WebPageTest es una buena opción, y aquí encontrarás más opciones listadas.

Sirve los recursos tú mismo

Después de identificar las imágenes, el JavaScript y el CSS de terceros que cargan más lento, empieza a servirlos desde tu propio dominio. Almacena una copia de los archivos en tu propio servidor estático o configura un proxy hacia las fuentes de terceros. (Es lo opuesto al enfoque habitual cuando atiendes usuarios de todo el mundo, donde delegas el servido de cierto contenido a servidores especializados de terceros.)

Poco a poco te encontrarás desarrollando tu web app con funcionalidades distintas para usuarios chinos y para usuarios del resto del mundo. Por ejemplo, la mayoría de los procesadores de pago no chinos son irrelevantes para los clientes chinos, que no tienen permitido usarlos. Al quitarlos para los clientes chinos, evitas la ralentización inútil de cargar ese JavaScript. Después puedes integrar métodos de pago chinos, aunque eso requiere un esfuerzo distinto, dadas las restricciones legales que se describen más abajo para las web apps comerciales que atienden a China.

Comparado con la carga de recursos, las llamadas AJAX a dominios de terceros son más difíciles de acelerar. Puedes considerar también hacer proxy de estas llamadas, aunque puede ser complicado por los controles de seguridad contra ataques man-in-the-middle. Cuanto menos dependa tu aplicación de terceros, mejor. Aunque eso ralentice tu desarrollo porque tengas que reinventar servicios en lugar de usar ofertas externas.

Atiende esas optimizaciones que llevas tiempo postergando

Esas son algunas optimizaciones específicas para China, pero la optimización estándar del front-end también es buena idea. Quizá la dejaste de lado porque la velocidad ya era suficientemente buena, pero cuando los recursos pueden tardar minutos en cargar de manera irregular, tu web app debe ser lo bastante resiliente como para que ningún recurso bloquee el renderizado. Minifica todo y carga cualquier recurso posible de forma asíncrona, y después del evento onLoad, para que el renderizado de la página no se bloquee.

Con todo eso tendrás una aplicación que funciona razonablemente desde China y que puede llevarte muy lejos. Aun así, no verás la confiabilidad ni la velocidad a las que estás acostumbrado, y el acceso puede bloquearse en cualquier momento.

Cuidado con las "soluciones rápidas"

A continuación menciono algunas soluciones que parecen atajos rápidos pero no lo son: las CDN para China, las VPN y el despliegue en Hong Kong.

Las CDN son aceleradores, no túneles

Una CDN orientada a China acelera el acceso a tus servidores fuera de China para los clientes en China. Pero es un acelerador, no un túnel a través del cortafuegos. Para conservar su licencia y evitar el bloqueo, los proveedores de CDN deben cooperar con el Gran Cortafuegos, así que aplican las mismas restricciones de contenido. La CDN para China convertirá los sitios rápidos en sitios algo más rápidos; no te ayudará con los mayores cuellos de botella que mencioné arriba.

Además, estas CDN no controlan el acceso del front-end a servidores de terceros, que suele ser el mayor cuello de botella, salvo que sirvas los recursos desde tu propio dominio, como ya se recomendó. Las CDN tienen otras desventajas: la configuración de DNS es compleja y la propiedad de la CDN suele cambiar de manos, lo que provoca APIs inestables.

Tunelización poco confiable

Las VPN ofrecen una forma de tunelización a través del Gran Cortafuegos. Se usan ampliamente en China, aunque son ilegales. Podrían ser una solución aceptable para poner una app corporativa a disposición de un número reducido de usuarios conocidos. Pero como proveedor de una web app, lo más probable es que quieras maximizar el acceso; no quieres exigir a tus clientes que usen VPN. Incluso cuando las VPN son utilizables, su tráfico suele ser bastante más lento que con un acceso directo sin VPN, ya sea por la interferencia del Cortafuegos o porque las VPN suman otra capa a toda la comunicación de red. Y en cualquier momento las VPN pueden caerse cuando las autoridades las identifican y las bloquean, o peor aún, las ralentizan de forma irregular. (Marc Bevand cuenta una historia impresionante sobre cómo se vulneran las VPN mediante fugas avanzadas de side-channel con detección profunda de paquetes.)

Hong Kong es solo otra ubicación fuera del Cortafuegos

Desplegar en Hong Kong parece prometedor; Hong Kong limita con Shenzhen y está administrada por China, pero permite la libertad de red. Incluso Google, que por lo demás está prohibido en China, tiene un centro de datos allí. Lamentablemente, esto solo tiene un valor limitado. El Cortafuegos sigue ralentizando e interrumpiendo el acceso desde China continental hacia Hong Kong, igual que con otras ubicaciones. Así como intentas acercar tus servidores a tus clientes fuera de China para ahorrar algunos milisegundos, Hong Kong también te acerca a China; pero no resuelve tu problema principal.

Las licencias que necesitas

Si alojar fuera de China no te alcanza, considera desplegar dentro de China. Para hacerlo, primero tendrás que iniciar el proceso de obtención de licencias.

Existen dos niveles de licencia de Internet Content Provider (ICP):

  • Un registro ICP (Bei'an), que es un requisito legal antes de exponer tu sitio web en China.
  • Si tu sitio es comercial y vende servicios online, se necesita una licencia ICP completa. Esta solo está disponible para empresas con propiedad mayoritariamente china.

Optar por el registro ICP y no por la licencia completa es, obviamente, bastante limitante, pero para este artículo asumiré que el registro es tu única opción.

Es el momento de aclararte que soy tecnólogo, no abogado, y mucho menos un abogado acreditado en China; así que verifica los detalles antes de avanzar. Las leyes y la realidad sobre el terreno cambian todo el tiempo. Lo que sí te puedo asegurar es que este proceso es realmente tan complicado como parece.

Consigue tu Bei'an

Para el registro ICP, constituye una filial china con empleados y oficinas. Una ficción legal no basta; tienes que pasar validaciones que demuestren que la filial es real, hasta el punto de incluir una foto de un empleado sosteniendo un cartel del proveedor cloud en tu oficina física. Ese empleado no es solo una formalidad: tener una buena comprensión de cómo las reglas afectan a tu despliegue cloud es un activo enorme.

Quizá busques una empresa partner china que pueda hacer esto por ti, pero los cambios continuos en la aplicación de la normativa hacen que sea una solución incierta.

Después, presenta el registro ICP cuanto antes; el proceso lleva semanas. Recibirás tu número ICP, que debes mostrar en el pie de tu página de inicio.

Si lo que quieres es vender bienes en China, el registro ICP no alcanza; necesitas una licencia ICP, y tu empresa no solo debe estar registrada en China, sino tener propiedad mayoritariamente china.

Comienza tu despliegue en China

Tus opciones de cloud incluyen proveedores locales como Alibaba (Aliyun) y Tencent, además de plataformas cloud extranjeras como AWS y Azure. Recomiendo encarecidamente AWS China y Azure China, que te ofrecen APIs consistentes con las que ya estás familiarizado. Sus tecnologías cuentan además con excelente documentación en inglés, artículos, formación, StackExchange y posts de foros generados por ecosistemas globales. La documentación en inglés de Alibaba y Tencent sigue siendo escasa, a pesar de los esfuerzos por ponerse al día. (De hecho, la documentación y los posts sobre cuestiones específicas de China para AWS China y Azure China son sorprendentemente escasos; pero al menos tendrás la ayuda que necesitas sobre las APIs.)

AWS y Azure no son Amazon ni Microsoft

AWS China no es propiedad de Amazon, y Azure China no es propiedad de Microsoft. En realidad, estos servicios los operan empresas chinas; solo la tecnología está licenciada por las compañías estadounidenses.

Hay que considerarlas nubes separadas que coinciden en usar las mismas tecnologías, no regiones separadas. No están integradas. En AWS, por ejemplo, necesitas crear identidades de usuario distintas dentro y fuera de China. No puedes copiar AMIs hacia o desde China, no existe Route 53 que permita un DNS global, y no puedes conectar las regiones entre sí con Private Link.

Darse de alta en la nube china es bastante más difícil. Con los proveedores cloud globales, normalmente solo necesitas un número de tarjeta de crédito. Con los proveedores en China (incluidos AWS y Azure) necesitas el registro ICP y la licencia para tu filial china. También tienes que lidiar con disposiciones de "registro con nombre real" antifraude mucho más estrictas, que incluyen fotos de varios documentos de identidad y datos personales detallados. Las capas gratuitas son muy limitadas o no están disponibles, y el pago es por adelantado.

Desafíos técnicos

Durante el proceso de configuración de tu despliegue en China, lo más probable es que enfrentes algunas limitaciones técnicas:

Una experiencia de despliegue tosca

AWS China y Azure China van por detrás de los proveedores originales en la adopción de sus nuevas tecnologías.

Y los procesos ordinarios, como darte de alta con el proveedor cloud o incluso simplemente eliminar una VM, suelen requerir bastante más soporte humano del habitual, sobre todo con los proveedores cloud nativos chinos. Los ingenieros de soporte son profesionales, pero el nivel de inglés no es el que conoces.

Tu acceso desde fuera de China usando la consola GUI puede volverse lento de vez en cuando. Lo mismo pasa con la conectividad para acceso de desarrollo y despliegue. Considera desarrollar y ejecutar tus procesos de Continuous Integration contra una región fuera de China.

No puedes exponer puertos HTTP conocidos como el 80 y el 443 sin un registro ICP. Esto significa que todo tu desarrollo y testing tendrá que hacerse en otros puertos, y solo se cambiará a los puertos estándar en producción.

De la misma manera, la mayor parte de tu testing no se hará con una configuración de DNS realista, ya que no vale la pena registrar solo para pruebas: tanto tu dominio (como test-mycompany.com) como el certificado SSL deben aprobarse en función de tu registro ICP.

Prepárate mejor con tecnologías probadas

El lado positivo es que las conexiones de red entre servidores de China y de fuera de China suelen ser tan rápidas como cualquier otra conexión en la nube. Despliega un subconjunto mínimo de funcionalidades en la nube china e intégralo con tu despliegue principal fuera de China.

Puedes integrar nube con nube como de costumbre, salvo que tengas la mala suerte de que te asignen una dirección IP que antes usaba un servicio bloqueado. Aun así, pueden aparecer ralentizaciones en cualquier momento, así que diseña tus integraciones pensando en eso. Mantén bases de datos independientes dentro y fuera del Gran Cortafuegos, y sincronízalas de forma asíncrona. Los proveedores cloud ofrecen servicios de exfiltración masiva de datos que pasan por un enlace directo y evitan el Cortafuegos. Sin embargo, son caros y no hacen falta para casos de uso normales; con arquitecturas asíncronas ordinarias alcanza.

Mantén tu arquitectura simple con tecnologías probadas, después de revisar qué hay disponible y qué es maduro en la plataforma cloud china. (Siempre van un poco por detrás de las ofertas globales.) No intentes hacer un lift-and-shift de toda una arquitectura compleja desde AWS o Azure. En su lugar, toma piezas de tu arquitectura de microservicios bien factorizada. (Si no la tienes, ¡este es el momento!) Despliega solo el conjunto de microservicios que realmente necesitas en China. Es posible que tengas que hacer un fork de tu código para ajustarlo a los requisitos de la nube china, pero al migrar de AWS o Azure a sus plataformas chinas no tendrás que cambiar mucho.

Es difícil, pero posible, exponer tu web app para que pueda usarse desde China. Primero, optimiza el front-end con técnicas estándar y específicas para China. Después, crea una filial china y despliega un subconjunto mínimo de microservicios en AWS China o Azure China.