Web-App-Entwickler, die Nutzer in China erreichen wollen, müssen grundlegend umdenken. Ich zeige in praktischen Schritten, wie Sie zu tragfähigen Lösungen kommen.
Sie haben eine Web-App mit globaler Reichweite – aber eben nicht ganz global. Die 1,4 Milliarden chinesischen Konsumenten haben Sie noch nicht erreicht. Dabei geht es hier nicht einfach um eine weitere Geolokalisierung. Der chinesische Markt ist eine Reise ins Ungewisse, selbst für die erfahrensten Technologen. Chinesische Gesetze, Vorschriften und die Great Firewall stellen für nicht-chinesische Unternehmen eine hohe Hürde dar.
Das ist schwer zu akzeptieren, wenn Ihre gesamte Karriere darauf beruht, für jedes Hindernis einen Workaround zu finden. Doch die Regeln sind real, sie werden durchgesetzt und sie werden tendenziell immer strenger. Ihre Website, Ihre Netzwerkverbindung oder Ihr Cloud-Server kann jederzeit wegen eines Regelverstoßes abgeschaltet werden – ohne Erklärung und ohne praktikable Möglichkeit zum Widerspruch.

Ein unvermeidbares Hindernis
Wie geht man also vor? Der Ansatz, den die chinesische Regulierung mit Nachdruck vorgibt, lautet:
Chinesische Kunden sollten ausschließlich von einem in China registrierten Unternehmen in chinesischem Besitz bedient werden – mit chinesischem DevOps in chinesischen Büros, bei einem chinesischen Cloud-Anbieter, mit einer separaten Datenbank in China, die nur lose oder gar nicht mit nicht-chinesischen Systemen verbunden ist.
Mit diesem Hintergrund gehen wir nun die Schritte durch, mit denen Sie Ihre App durch die Great Firewall bekommen.
Hinweis: Sie werden keine Lösung erreichen, die so zuverlässig und schnell ist wie das, was Sie gewohnt sind. Aber selbst wenige Schritte reichen oft aus, um die Grundanforderungen zu erfüllen.
Ein China-taugliches Frontend aufbauen
Mit gezielten Optimierungen am Frontend-Code allein – ganz ohne Deployment in China – kommen Sie schon ein gutes Stück voran. Ich beschreibe eine Kombination aus speziellen Optimierungstechniken für die Great Firewall und Standardmaßnahmen, die Sie ohnehin kennen.
Finden Sie die Bremsklötze
Die Great Firewall verlangsamt und unterbricht bestimmte nicht-chinesische Domains für chinesische Nutzer in unregelmäßigen Abständen. Besonders hart trifft es Seiten mit nutzergenerierten Inhalten, denn der Upload eines einzelnen Nutzers kann Konsequenzen für die gesamte Seite haben. Ein einzelnes Bild von Imgur kann zum Beispiel 60 bis 90 Sekunden zum Laden brauchen. Auch das Laden von JavaScript aus SaaS-Domains – insbesondere von Unternehmen, die groß genug sind, um die Aufmerksamkeit der Firewall negativ auf sich zu ziehen, etwa Stripe – kann extrem langsam sein. Diese unregelmäßige Trägheit ist schwerer zu diagnostizieren und zu beheben als eine konstante Blockade, die sich schnell identifizieren und beseitigen ließe. Hinzu kommt: Wer fremde nutzergenerierte Inhalte einbettet, riskiert, dass die eigene Domain auf einer Blacklist landet. (Solche Inhalte direkt selbst zu hosten, ist sogar noch riskanter.)
Die gute Nachricht: Die Kommunikation aus China über die Firewall hinweg ist für Domains, die nicht auf der Blacklist stehen, in der Regel unproblematisch. Sie können das Tempoproblem mit Drittanbietern also lösen, indem Sie die ordentliche Geschwindigkeit Ihrer eigenen Domain ausnutzen – sofern diese nicht gedrosselt wird. (Falls doch, brauchen Sie eine ganz andere und deutlich aufwendigere Lösung.)
Der erste Schritt ist die detaillierte Performance-Messung der Netzwerkaufrufe. Am flexibelsten ist es für Entwickler, die iterativ analysieren und optimieren wollen, die gängigen Browser-Entwicklertools wie Firefox Dev Tools oder den HAR Analyzer von Google einzusetzen. Das setzt allerdings Zugriff auf eine VM in China voraus. Alternativ liefern webbasierte Dienste die meisten Informationen, die Sie brauchen. WebPageTest ist eine gute Option, weitere finden Sie in dieser Liste.
Ressourcen selbst ausliefern
Wenn Sie die am langsamsten ladenden Drittanbieter-Bilder, JavaScript- und CSS-Dateien identifiziert haben, liefern Sie diese künftig über Ihre eigene Domain aus. Speichern Sie entweder eine Kopie der Dateien auf Ihrem eigenen statischen Server oder richten Sie einen Proxy zu den Drittanbieter-Quellen ein. (Das ist genau das Gegenteil dessen, was man weltweit üblicherweise tut – dort lagert man das Ausliefern bestimmter Inhalte gerade auf spezialisierte Drittanbieter-Server aus.)
Mit der Zeit werden Sie Ihre Web-App so weiterentwickeln, dass sie chinesischen und weltweiten Nutzern unterschiedliche Funktionen bietet. Die meisten nicht-chinesischen Zahlungsabwicklungen sind für chinesische Kunden zum Beispiel ohnehin irrelevant, weil sie diese gar nicht nutzen dürfen. Wenn Sie sie für chinesische Kunden ausblenden, sparen Sie sich das nutzlose Laden des entsprechenden JavaScripts. Anschließend können Sie chinesische Zahlungsmethoden integrieren – das erfordert allerdings einen anderen Aufwand, angesichts der weiter unten beschriebenen rechtlichen Einschränkungen für kommerzielle Web-Apps in China.
Im Vergleich zum Laden von Ressourcen sind AJAX-Aufrufe an Drittanbieter-Domains schwieriger zu beschleunigen. Ein Proxying ist auch hier denkbar, wegen der Schutzmechanismen gegen Man-in-the-Middle-Angriffe aber nicht ganz einfach. Je weniger Ihre Anwendung von Dritten abhängt, desto besser – auch wenn das die Entwicklung bremst, weil Sie Services neu bauen, statt externe Angebote zu nutzen.
Holen Sie endlich die Optimierungen nach, die Sie sich vorgenommen haben
So weit zu den China-spezifischen Optimierungen – aber auch klassische Frontend-Optimierung ist eine gute Idee. Vielleicht haben Sie das aufgeschoben, weil die Geschwindigkeit ohnehin gut genug war. Wenn Ressourcen aber unregelmäßig minutenlang laden, muss Ihre Web-App so robust sein, dass keine einzelne Ressource das Rendering blockieren kann. Minifizieren Sie alles, laden Sie jede mögliche Ressource asynchron und nach dem onLoad-Event, damit das Page-Rendering nicht blockiert wird.
All das verschafft Ihnen eine Anwendung, die aus China grundsätzlich funktioniert – und das bringt Sie schon ziemlich weit. Trotzdem werden Sie nicht die Zuverlässigkeit und Geschwindigkeit erreichen, die Sie sonst gewohnt sind, und der Zugriff kann jederzeit blockiert werden.
Vorsicht vor vermeintlichen Schnelllösungen
Als Nächstes nenne ich ein paar Lösungen, die nach schnellen Auswegen aussehen, aber keine sind: China-CDNs, VPNs und Hongkong-Deployments.
CDNs sind Beschleuniger, keine Tunnel
Ein auf China ausgerichtetes CDN beschleunigt für chinesische Kunden den Zugriff auf Ihre Server außerhalb Chinas. Aber es ist eben ein Beschleuniger, kein Firewall-Tunnel. Um ihre Lizenz zu behalten und Sperrungen zu vermeiden, müssen die CDN-Anbieter mit der Great Firewall kooperieren – es gelten also dieselben Inhaltsbeschränkungen. Aus schnellen Seiten macht das China-CDN etwas schnellere Seiten; bei den oben genannten größten Engpässen hilft es nicht.
Hinzu kommt: Diese CDNs steuern nicht den Zugriff vom Frontend auf Drittanbieter-Server – häufig der größte Engpass, sofern Sie Ressourcen nicht wie oben empfohlen über die eigene Domain ausliefern. CDNs haben weitere Nachteile: Die DNS-Konfiguration ist komplex, und die Eigentumsverhältnisse des CDN wechseln häufig, was zu instabilen APIs führt.
Unzuverlässiges Tunneling
VPNs bieten eine Form des Tunnelns durch die Great Firewall. In China sind sie weit verbreitet, aber illegal. Für eine Unternehmens-App, die einer kleinen, bekannten Nutzergruppe zur Verfügung gestellt werden soll, könnten sie eine akzeptable Lösung sein. Als Web-App-Anbieter wollen Sie den Zugriff aber höchstwahrscheinlich maximieren – Sie wollen Ihren Kunden nicht zumuten, ein VPN einzurichten. Selbst wenn VPNs funktionieren, ist der Datenverkehr oft deutlich langsamer als beim direkten Zugriff ohne VPN, sei es wegen Störungen durch die Firewall oder weil VPNs der gesamten Netzwerkkommunikation eine zusätzliche Schicht hinzufügen. Und VPNs können jederzeit ausfallen, sobald die Behörden sie identifizieren und blockieren – oder, schlimmer noch, sie unregelmäßig drosseln. (Marc Bevand erzählt eine eindrucksvolle Geschichte über das Aushebeln von VPNs durch fortgeschrittene Side-Channel-Lecks bei der Deep-Packet-Inspection.)
Hongkong ist nur ein weiterer Standort außerhalb der Firewall
Ein Deployment in Hongkong klingt vielversprechend: Hongkong grenzt an Shenzhen und wird von China verwaltet, genießt aber Netzwerkfreiheit. Sogar Google, das in China ansonsten gesperrt ist, betreibt dort ein Rechenzentrum. Leider ist der Nutzen begrenzt. Die Firewall verlangsamt und unterbricht den Zugriff vom chinesischen Festland nach Hongkong genauso wie zu jedem anderen Standort. So wie Sie versuchen, Ihre Server außerhalb Chinas möglichst nah an Ihren Kunden zu platzieren, um ein paar Millisekunden herauszuholen, bringt Hongkong Sie näher an China heran – Ihr eigentliches Problem löst es aber nicht.
Die nötigen Lizenzen
Wenn das Hosting außerhalb Chinas nicht ausreicht, sollten Sie ein Deployment in China in Betracht ziehen. Dafür müssen Sie zunächst den Lizenzierungsprozess starten.
Es gibt zwei Stufen der ICP-Lizenz (Internet Content Provider):
- Eine ICP-Anmeldung (Bei’an), die gesetzlich vorgeschrieben ist, bevor Sie Ihre Website in China bereitstellen dürfen.
- Wenn Ihre Seite kommerziell ist und Online-Dienste verkauft, ist eine vollständige ICP-Lizenz erforderlich. Diese erhalten nur Unternehmen, die mehrheitlich in chinesischem Besitz sind.
Sich auf die ICP-Anmeldung statt auf die volle Lizenz zu beschränken, ist offensichtlich recht einschränkend, doch in diesem Artikel gehe ich davon aus, dass die Anmeldung Ihre einzige Option ist.
An dieser Stelle der Hinweis: Ich bin Technologe, kein Anwalt – und schon gar kein in China zugelassener Anwalt. Prüfen Sie die Details also, bevor Sie loslegen. Gesetze und tatsächliche Gegebenheiten ändern sich ständig. Versichern kann ich Ihnen aber, dass dieser Prozess wirklich so kompliziert ist, wie er aussieht.
So bekommen Sie Ihr Bei’an
Für die ICP-Anmeldung richten Sie eine chinesische Tochtergesellschaft mit Mitarbeitern und Büros ein. Eine reine Briefkastenfirma reicht nicht; Sie müssen nachweisen, dass die Tochtergesellschaft real ist – bis hin zu einem Foto, auf dem ein Mitarbeiter ein Poster des Cloud-Anbieters in Ihrem physischen Büro hochhält. Dieser Mitarbeiter ist nicht bloß Formsache: Ein gutes Verständnis dafür, wie sich die Regeln auf Ihr Cloud-Deployment auswirken, ist Gold wert.
Sie könnten nach einem chinesischen Partnerunternehmen suchen, das das für Sie übernimmt, doch die laufenden Änderungen bei der Durchsetzung machen das zu einer unsicheren Lösung.
Reichen Sie die ICP-Anmeldung anschließend frühzeitig ein; der Prozess dauert Wochen. Sie erhalten Ihre ICP-Nummer, die Sie im Footer Ihrer Startseite anzeigen müssen.
Wenn Sie tatsächlich Waren in China verkaufen wollen, reicht die ICP-Anmeldung nicht; Sie benötigen eine ICP-Lizenz, und Ihr Unternehmen muss nicht nur in China registriert, sondern auch mehrheitlich in chinesischem Besitz sein.
Starten Sie Ihr China-Deployment
Bei der Cloud-Wahl haben Sie lokale Anbieter wie Alibaba (Aliyun) und Tencent sowie ausländische Cloud-Plattformen von AWS und Azure zur Auswahl. Ich empfehle ausdrücklich AWS China und Azure China, weil sie Ihnen die konsistenten APIs bieten, die Sie bereits kennen. Ihre Technologien verfügen außerdem über exzellente englischsprachige Dokumentation, Artikel, Trainings sowie StackExchange- und Forenbeiträge aus weltweiten Ökosystemen. Englischsprachige Dokumentation zu Alibaba und Tencent bleibt trotz beachtlicher Aufholbemühungen dünn. (Tatsächlich sind auch Dokumentation und Beiträge zu China-spezifischen Fragen rund um AWS China und Azure China überraschend rar – aber zumindest bekommen Sie die nötige Hilfe zu den APIs.)
AWS und Azure sind nicht Amazon und Microsoft
AWS China gehört nicht Amazon, und Azure China gehört nicht Microsoft. Diese Dienste werden vielmehr von chinesischen Unternehmen betrieben; lediglich die Technologie ist von den US-Konzernen lizenziert.
Sie sollten als separate Clouds betrachtet werden, die zufällig dieselben Technologien nutzen – nicht als separate Regionen. Sie sind nicht miteinander integriert. Bei AWS müssen Sie zum Beispiel separate Benutzeridentitäten innerhalb und außerhalb Chinas anlegen. Sie können AMIs nicht zwischen China und der restlichen Welt kopieren, es gibt kein Route 53, das globales DNS ermöglichen würde, und Sie können die Regionen nicht über Private Link verbinden.
Die Anmeldung für die China-Cloud ist deutlich aufwendiger. Bei weltweiten Cloud-Anbietern reicht in der Regel eine Kreditkartennummer. Bei den Anbietern in China (auch AWS und Azure) brauchen Sie die ICP-Anmeldung und die Lizenz für Ihre chinesische Tochtergesellschaft. Hinzu kommen wesentlich strengere Regelungen zur Echtnamen-Registrierung als Anti-Betrugs-Maßnahme – inklusive Fotos verschiedener Ausweisdokumente und ausführlicher Personenangaben. Free Tiers sind sehr begrenzt oder gar nicht verfügbar, und die Bezahlung erfolgt im Voraus.
Technische Herausforderungen
Beim Aufsetzen Ihres China-Deployments stoßen Sie wahrscheinlich auf einige technische Einschränkungen:
Ein umständliches Deployment-Erlebnis
AWS China und Azure China hinken den Mutter-Anbietern bei der Einführung neuer Technologien hinterher.
Und ganz alltägliche Vorgänge – etwa die Registrierung beim Cloud-Anbieter oder schon das simple Löschen einer VM – erfordern oft deutlich mehr menschlichen Support, als Sie gewohnt sind, vor allem bei den nativ chinesischen Cloud-Anbietern. Die Support-Engineers sind professionell, aber das Niveau der Englischkenntnisse ist nicht das, was Sie sonst erleben.
Ihr Zugriff von außerhalb Chinas über die GUI-Konsole kann gelegentlich langsam sein. Auch die Konnektivität für Entwicklung und Deployment kann ausfallen. Erwägen Sie, Entwicklung und Continuous-Integration-Prozesse gegen eine Region außerhalb Chinas laufen zu lassen.
Ohne ICP-Anmeldung können Sie die bekannten HTTP-Ports 80 und 443 nicht freigeben. Das heißt: Ihre gesamte Entwicklung und alle Tests müssen auf anderen Ports laufen, und nur die Produktion wechselt auf die Standardports.
Auch die meisten Tests werden nicht in einem realistischen DNS-Setup stattfinden, denn allein für Tests lohnt sich keine Anmeldung: Sowohl Ihre Domain (etwa test-mycompany.com) als auch das SSL-Zertifikat müssen auf Basis Ihrer ICP-Anmeldung freigegeben werden.
Setzen Sie auf bewährte Technologien
Die gute Nachricht: Netzwerkverbindungen zwischen Servern in China und außerhalb Chinas sind in der Regel genauso schnell wie jede andere Verbindung in der Cloud. Bringen Sie eine minimale Teilmenge an Funktionalität in der China-Cloud an den Start und integrieren Sie diese in Ihr Hauptdeployment außerhalb Chinas.
Die Cloud-zu-Cloud-Integration funktioniert wie gewohnt – außer Sie haben das Pech, eine IP-Adresse zugewiesen zu bekommen, die zuvor von einem blockierten Dienst genutzt wurde. Verlangsamungen können jederzeit auftreten, planen Sie Ihre Integrationen also entsprechend. Halten Sie unabhängige Datenbanken innerhalb und außerhalb der Great Firewall vor und synchronisieren Sie sie asynchron. Cloud-Anbieter bieten Bulk-Daten-Exfiltrationsdienste über eine Direktverbindung, die die Firewall umgeht. Diese sind allerdings teuer und für normale Zwecke nicht nötig; gewöhnliche asynchrone Architekturen reichen aus.
Halten Sie Ihre Architektur einfach und setzen Sie auf bewährte Technologien – nachdem Sie geprüft haben, was in der chinesischen Cloud-Plattform verfügbar und ausgereift ist. (Sie liegt immer ein wenig hinter den weltweiten Angeboten zurück.) Versuchen Sie nicht, eine ganze komplexe Architektur per Lift-and-Shift von AWS oder Azure zu übernehmen. Greifen Sie stattdessen auf Teile aus Ihrer sauber geschnittenen Microservice-Architektur zurück. (Falls Sie keine solche Architektur haben – jetzt ist der richtige Zeitpunkt!) Bringen Sie nur die Microservices in China in Betrieb, die dort unbedingt nötig sind. Möglicherweise müssen Sie Ihren Code forken, um den Anforderungen der chinesischen Cloud zu entsprechen, doch beim Migrieren von AWS oder Azure auf deren chinesische Plattformen werden Sie nicht viel ändern müssen.
Es ist schwierig, aber möglich, Ihre Web-App für die Nutzung aus China bereitzustellen. Optimieren Sie zunächst das Frontend mit Standard- und China-spezifischen Techniken. Gründen Sie anschließend eine chinesische Tochtergesellschaft und stellen Sie eine minimale Teilmenge an Microservices auf AWS China oder Azure China bereit.