Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Como seu Web App Pode Atender o Mercado Chinês

By Joshua FoxMay 4, 202011 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Para desenvolvedores de web apps, atender usuários na China exige uma forma totalmente diferente de pensar. Vou explicar, em passos práticos, como chegar a soluções suficientemente boas.

Você tem um web app com alcance global, mas não tão global assim. Ainda não conquistou aqueles 1,4 bilhão de consumidores chineses. E não se trata de mais uma simples geolocalização. Atender a China é uma viagem ao desconhecido, mesmo para o profissional de tecnologia mais experiente. As leis chinesas, as regulamentações e o Great Firewall representam uma barreira altíssima para empresas estrangeiras.

Isso é difícil de aceitar quando sua carreira foi construída em cima de encontrar um jeitinho para cada obstáculo. Só que as regras são reais, são aplicadas e ficam mais rígidas a cada dia. Seu site, sua conexão de rede ou seu servidor em nuvem podem ser cortados a qualquer momento por violar as regras, sem explicação e sem nenhuma forma prática de recurso.

Um obstáculo inevitável

Então, como fazer? A abordagem fortemente defendida pelo sistema regulatório chinês é esta:

Clientes chineses devem ser atendidos somente por uma empresa de propriedade e registro chineses, com DevOps chinês em escritórios chineses, em um provedor de nuvem chinês, com um banco de dados separado na China, integrado de forma mínima — quando muito — a sistemas estrangeiros.

Dito isso, vamos aos passos para fazer seu app atravessar o Great Firewall.

Observação: Você não vai chegar a uma solução tão confiável e rápida quanto a que está acostumado, mas mesmo alguns passos costumam atender aos requisitos básicos.

Construindo um Front End amigável à China

Dá para começar bem com otimizações simples no código do seu front end, sem precisar implantar nada na China. Vou descrever uma combinação de técnicas específicas para lidar com o Great Firewall, junto com técnicas padrão com as quais você já está familiarizado.

Descubra o que está deixando tudo lento

O Great Firewall reduz a velocidade e interrompe, de forma irregular, certos domínios estrangeiros para usuários na China. Sites com conteúdo gerado por usuários sofrem especialmente, já que o upload de um único usuário pode ter consequências para o site inteiro. Uma única imagem do Imgur, por exemplo, pode levar de 60 a 90 segundos para carregar. Da mesma forma, carregar JavaScript de domínios SaaS — em especial de empresas grandes o bastante para chamar a atenção negativa do Firewall, como o Stripe — pode ser extremamente lento. Essa lentidão inconsistente é mais difícil de diagnosticar e corrigir do que um bloqueio consistente, que poderia ser identificado e resolvido rapidamente. Além da lentidão, incorporar conteúdo gerado por usuários coloca seu próprio domínio em risco de ir parar na blacklist. (Hospedar conteúdo gerado por usuários diretamente é ainda pior.)

O lado bom é que a comunicação a partir da China através do Firewall, para domínios que não estão na blacklist, geralmente não é problema. Ou seja, dá para resolver a lentidão de terceiros aproveitando a velocidade decente do seu próprio domínio, desde que ele não esteja sofrendo throttling. (Se estiver, você vai precisar de uma solução muito diferente e bem mais complicada.)

O primeiro passo é medir em detalhes o desempenho das chamadas de rede. A abordagem mais flexível para um desenvolvedor analisar e melhorar o desempenho de forma iterativa é usar a ampla variedade de ferramentas padrão de desenvolvimento no navegador, como o Firefox Dev Tools ou o HAR Analyzer do Google. Mas isso exige acesso a uma VM na China. Como alternativa, serviços baseados na web entregam a maior parte das informações de que você precisa. O WebPageTest é uma boa opção, e há mais alternativas listadas aqui.

Sirva os recursos você mesmo

Depois de identificar as imagens, JavaScript e CSS de terceiros que carregam mais lentamente, comece a servi-los a partir do seu próprio domínio. Guarde uma cópia dos arquivos no seu servidor estático ou configure um proxy para as fontes de terceiros. (É o oposto da abordagem usual quando você atende usuários no mundo todo, em que delega parte do conteúdo a servidores especializados de terceiros.)

Aos poucos, você vai perceber que está desenvolvendo seu web app com funcionalidades diferentes para usuários chineses e usuários do resto do mundo. Por exemplo, a maior parte do processamento de pagamentos estrangeiro é irrelevante para clientes chineses, que não têm permissão para usá-lo. Ao remover isso para clientes chineses, você evita a lentidão inútil de carregar o JavaScript. Você pode então integrar métodos de pagamento chineses — embora isso exija um esforço de outra natureza, dadas as restrições legais descritas mais adiante para web apps comerciais que atendem a China.

Se comparadas ao carregamento de recursos, as chamadas AJAX para domínios de terceiros são mais difíceis de acelerar. Você pode considerar fazer proxy dessas chamadas também, embora isso seja complicado pelos controles de segurança contra ataques man-in-the-middle. Quanto menos sua aplicação depender de terceiros, melhor — mesmo que isso atrase seu desenvolvimento, já que você acaba reinventando serviços em vez de usar ofertas de fora.

Hora de fazer aquelas otimizações que você vinha adiando

Essas são otimizações específicas para a China, mas a otimização padrão de front-end também é uma boa pedida. Talvez você tenha deixado para depois porque a velocidade já estava boa o suficiente, mas, quando os recursos podem irregularmente levar minutos para carregar, seu web app precisa ser resiliente o bastante para que nenhum recurso bloqueie a renderização. Minifique tudo e carregue todo recurso possível de forma assíncrona, depois do evento onLoad, para que a renderização da página não seja bloqueada.

Tudo isso vai te dar uma aplicação que basicamente funciona a partir da China e leva você bem longe. Ainda assim, você não terá a confiabilidade e a velocidade que se acostumou a esperar; e o acesso pode ser bloqueado a qualquer momento.

Cuidado com as "soluções rápidas"

A seguir, vou comentar algumas soluções que parecem atalhos, mas não são: CDNs na China, VPNs e implantação em Hong Kong.

CDNs são aceleradores, não túneis

Uma CDN voltada à China acelera o acesso aos seus servidores fora da China para clientes na China. Mas é um acelerador, não um túnel para furar o firewall. Para manter a licença e evitar bloqueios, os provedores de CDN precisam cooperar com o Great Firewall, e por isso valem as mesmas restrições de conteúdo. A CDN na China transforma sites rápidos em sites um pouco mais rápidos; ela não resolve os maiores gargalos que mencionei acima.

Além disso, essas CDNs não controlam o acesso do frontend a servidores de terceiros — muitas vezes o maior gargalo, a menos que você sirva os recursos a partir do seu próprio domínio, como recomendado acima. As CDNs têm outras desvantagens: a configuração de DNS é complexa e a propriedade da CDN troca de mãos com frequência, o que resulta em APIs instáveis.

Tunelamento pouco confiável

VPNs oferecem uma forma de tunelar o Great Firewall. São amplamente usadas na China, embora sejam ilegais. Podem até ser uma solução aceitável para disponibilizar um app corporativo a um pequeno número de usuários conhecidos. Mas, como provedor de web app, você provavelmente quer maximizar o acesso; não dá para obrigar seus clientes a usar VPNs. Mesmo quando funcionam, o tráfego costuma ser bem mais lento do que o acesso direto sem VPN, seja por interferência do Firewall, seja porque as VPNs adicionam mais uma camada a toda a comunicação de rede. E, a qualquer momento, as VPNs podem cair quando as autoridades as identificam e bloqueiam — ou pior, as desaceleram de forma irregular. (Marc Bevand conta uma história impressionante sobre o desmonte de VPNs por meio de side-channel leaks de detecção avançada de pacotes.)

Hong Kong é só mais um local fora do Firewall

A implantação em Hong Kong parece promissora; Hong Kong faz fronteira com Shenzhen e é administrada pela China, mas mantém liberdade na rede. Até o Google, que de resto é banido na China, tem um data center por lá. Infelizmente, isso tem valor limitado. O Firewall continua a desacelerar e interromper o acesso da China continental para Hong Kong, do mesmo jeito que faz com outros locais. Assim como você tenta aproximar seus servidores dos seus clientes fora da China para economizar alguns milissegundos, Hong Kong te aproxima da China; mas isso não resolve seu principal problema.

As licenças necessárias

Se hospedar fora da China não funcionar para você, considere implantar dentro da China. Para isso, primeiro será preciso iniciar o processo de licenciamento.

Existem dois níveis de licenciamento Internet Content Provider (ICP):

  • Um registro ICP (Bei’an), que é uma exigência legal antes de expor seu site na China.
  • Se seu site é comercial e vende serviços online, você precisa de uma licença ICP completa. Ela só está disponível para empresas com maioria de capital chinês.

Optar pelo registro ICP em vez da licença completa é, claro, bastante limitante, mas, neste artigo, vou supor que o registro é sua única opção.

Aqui é o momento em que devo lembrar que sou um profissional de tecnologia, não um advogado, e muito menos um advogado credenciado na China; portanto, confira os detalhes antes de seguir adiante. As leis e a realidade na prática estão sempre mudando. Mas posso garantir uma coisa: esse processo é tão complicado quanto parece.

Garanta seu Bei’an

Para o registro ICP, monte uma subsidiária chinesa com funcionários e escritórios. Uma ficção jurídica não basta; você precisa passar em validações que comprovem que a subsidiária é real, incluindo até uma foto de um funcionário segurando um cartaz do provedor de nuvem no seu escritório físico. Esse funcionário não é só uma formalidade — entender bem como as regras impactam sua implantação na nuvem é um trunfo enorme.

Você pode procurar uma empresa parceira chinesa que faça isso por você, mas as constantes mudanças na fiscalização tornam essa uma solução incerta.

Em seguida, envie o registro ICP cedo; o processo leva semanas. Você receberá seu número de ICP, que precisa ser exibido no rodapé da sua página inicial.

Se quiser de fato vender produtos na China, o registro ICP não é suficiente; você precisa de uma licença ICP, e sua empresa não só precisa estar registrada na China como também ter maioria de capital chinês.

Inicie sua implantação na China

Suas opções de Cloud incluem provedores locais como Alibaba (Aliyun) e Tencent, e plataformas de nuvem estrangeiras como AWS e Azure. Recomendo fortemente o AWS China e o Azure China, que oferecem APIs consistentes com as que você já conhece. As tecnologias deles também contam com excelente documentação em inglês, artigos, treinamentos, posts no StackExchange e em fóruns gerados pelos ecossistemas globais. A documentação em inglês de Alibaba e Tencent ainda é escassa, apesar dos esforços valentes para alcançar a concorrência. (Na verdade, a documentação e os posts sobre questões específicas da China envolvendo AWS China e Azure China também são surpreendentemente escassos; mas pelo menos você terá a ajuda de que precisa nas APIs.)

AWS e Azure não são Amazon e Microsoft

O AWS China não pertence à Amazon, e o Azure China não pertence à Microsoft. Esses serviços são operados por empresas chinesas; apenas a tecnologia é licenciada das empresas americanas.

Eles devem ser tratados como nuvens separadas que por acaso usam as mesmas tecnologias, e não como regiões separadas. Não são integrados. Na AWS, por exemplo, você precisa criar identidades de usuário separadas dentro e fora da China. Não é possível copiar AMIs de e para a China, não há um Route 53 que permita um DNS global, e você não pode conectar as regiões usando Private Link.

O cadastro na nuvem chinesa é bem mais difícil. Com provedores de nuvem globais, em geral basta um número de cartão de crédito. Com os provedores na China (incluindo AWS e Azure), você precisa do registro ICP e da licença para sua subsidiária chinesa. Também é preciso lidar com requisitos antifraude muito mais rigorosos de "registro de nome real", incluindo fotos de várias formas de identificação e dados pessoais detalhados. Os planos gratuitos são bem limitados ou indisponíveis, e o pagamento é antecipado.

Desafios técnicos

Durante o processo de configuração da sua implantação na China, você provavelmente vai enfrentar algumas limitações técnicas:

Uma experiência de implantação travada

O AWS China e o Azure China ficam atrás dos provedores originais na adoção de novas tecnologias.

E processos comuns — por exemplo, fazer cadastro no provedor de nuvem ou até mesmo apagar uma VM — costumam exigir muito mais suporte humano do que você está acostumado, principalmente com os provedores nativos chineses. Os engenheiros de suporte são profissionais, mas o nível de inglês não é o que você está habituado.

Seu acesso de fora da China usando o console gráfico pode ficar lento de vez em quando. Da mesma forma, a conectividade para acesso de desenvolvimento e implantação pode falhar. Considere desenvolver e rodar seus processos de Continuous Integration em uma região fora da China.

Você não pode expor portas HTTP conhecidas, como 80 e 443, sem um registro ICP. Isso significa que todo o seu desenvolvimento e teste vai precisar acontecer em outras portas, mudando para portas padrão só em produção.

Da mesma forma, a maior parte dos seus testes não vai rodar em uma configuração de DNS realista, já que não vale a pena fazer o registro só para testar: tanto seu domínio (como test-mycompany.com) quanto o certificado SSL precisam ser aprovados com base no seu registro ICP.

Esteja melhor preparado com tecnologias consagradas

O lado bom é que conexões de rede entre servidores na China e fora da China geralmente são tão rápidas quanto qualquer outra conexão na nuvem. Implante um subconjunto mínimo de funcionalidades na nuvem chinesa e depois integre à sua implantação principal fora da China.

Você pode integrar nuvem com nuvem como de costume, a menos que tenha o azar de receber um endereço IP que tenha sido usado antes por um serviço bloqueado. Ainda assim, lentidões podem aparecer a qualquer momento, então projete suas integrações com isso em mente. Mantenha bancos de dados independentes dentro e fora do Great Firewall e sincronize-os de forma assíncrona. Os provedores de nuvem oferecem serviços de exportação em massa de dados que passam por um link direto, contornando o Firewall. No entanto, eles são caros e desnecessários para usos normais; arquiteturas assíncronas comuns dão conta do recado.

Mantenha sua arquitetura simples, com tecnologias consagradas, depois de verificar o que está disponível e maduro na plataforma de nuvem chinesa. (Elas estão sempre um pouco atrás das ofertas globais.) Não tente fazer um lift-and-shift de uma arquitetura complexa inteira do AWS ou Azure. Em vez disso, aproveite partes da sua arquitetura de microsserviços bem estruturada. (Se você não tem essa arquitetura, esta é a hora!) Implante apenas o conjunto de microsserviços que é absolutamente necessário na China. Pode ser preciso fazer um fork do seu código para se adequar aos requisitos da nuvem chinesa, mas, ao migrar do AWS ou Azure para suas plataformas chinesas, não terá que mudar muita coisa.

É difícil, mas é possível disponibilizar seu web app para uso a partir da China. Primeiro, otimize o front-end com técnicas padrão e específicas para a China. Depois, estabeleça uma subsidiária chinesa e implante um subconjunto mínimo de microsserviços no AWS China ou Azure China.