Wir haben Hunderte von unseren Kunden-Websites hinter ein CDN geschaltet, und es hat sehr gut funktioniert

Avatar of Scott Fennell
Scott Fennell am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

In der Agentur, für die ich arbeite, haben wir kürzlich alle unsere rund 1.100 Websites hinter ein CDN geschaltet. Es scheint zu funktionieren. Leider habe ich keine Ahnung, warum oder wie wir das gemacht haben. Daher zwinge ich in diesem ersten Teil des Artikels unseren CTO, Joshua Lynch, mir den Prozess zu erklären. Dies hat die unbeabsichtigte Folge, dass Josh vorschlägt, ich solle dies auf meiner eigenen Website ausprobieren, ein Prozess, den ich in der zweiten Hälfte des Artikels beschreiben werde.

Ich habe drei überraschende Dinge gelernt

  1. In unserem Fall ist der größte Vorteil eines CDNs nicht die Leistung oder Sicherheit, sondern die „DNS-Abstraktionsschicht“, ein Konzept, das ich unten erklären werde.
  2. Der Umzug zu einem CDN war für uns ein schwieriger Prozess, aber nur, weil wir ein hohes Verhältnis von Domains zu Mitarbeitern haben. Für eine einzelne Website wäre es ein Kinderspiel.
  3. Es gibt keine Sorge, dass Mediendateien 404er erzeugen; es müssen keine URLs geändert werden. Mit anderen Worten, die übliche Sorge über fehlende Bilder im Beitrag-Inhalt und ähnliches ist für uns kein Problem.

Überrascht? Ich war es. Ohne weitere Umschweife erklärt Josh alles.

Das Interview

Was war der „Punkt A zu Punkt B“? Anders ausgedrückt, was haben wir getan und was tun wir jetzt?

Punkt A war privates Hosting bei einem Technologieunternehmen ohne CDN. Punkt B ist Hosting bei WP Engine, hinter dem CDN von CloudFlare.

Lag das Problem bei Punkt A an unserem Hosting oder am fehlenden CDN?

Beides, irgendwie. Unsere häufigste Ursache für Ausfallzeiten war bösartiger Traffic, den unsere Hosting-Umgebung nicht bewältigen konnte. Außerdem lagen unsere Server-Antwortzeiten konstant bei etwa zwei Sekunden. Antwortzeiten sollten unter einer halben Sekunde liegen, und zwei Sekunden sollten nahe an einer vollständigen Seitenladung sein!

Dies, kombiniert mit anderen geschäftlichen Faktoren, zwang uns zum Wechsel des Hosts, aber das Fehlen eines CDNs machte diesen Prozess weitaus schwieriger, als er jetzt, da wir eines haben, sein würde. Wenn wir jemals wieder migrieren müssen, wird es viel einfacher sein.

Moment, warum? Was hat ein CDN mit der Migration von Hosts zu tun?

Die Migration zu neuen Servern erfordert DNS-Änderungen. Aufgrund unseres hohen Verhältnisses von Domains zu Mitarbeitern bedeutet dies viel manuelle Arbeit. Dies wird noch schwieriger in Situationen, in denen unsere Kunden ihre eigenen DNS-Einstellungen verwalten.

Indem wir alle unsere Websites auf die Nameserver eines CDNs verlagert haben, erhielten wir eine Abstraktionsschicht zwischen unseren Domains und unserem Hosting – eine sehr gute Abstraktionsschicht. Im Gegensatz zu GoDaddy, wo die meisten unserer Domains registriert sind, verfügt CloudFlare über eine API zur Verwaltung von DNS sowie eine einfache Benutzeroberfläche für die Browser-Automatisierung. Wenn wir jemals wieder den Host wechseln müssen, wird es sehr einfach sein, unsere DNS-Einstellungen über CloudFlare zu ändern. Dies wird vollständig automatisiert und für unsere Kunden vollständig transparent sein, auch für diejenigen, die ihre eigenen Domains verwalten.

Ich dachte immer, der Sinn der Nutzung eines CDNs sei, Dateien schneller auszuliefern.

Für einige Websites, die medienlastiger sind, stimmt das, aber nicht für uns. Die meisten unserer Inhalte sind ziemlich leicht an Mediendateien. Für uns liegt der wahre Wert eines CDNs in der DNS-Abstraktionsschicht.

Das heißt nicht, dass es für uns keine Leistungsverbesserung gibt. Wir sind weitaus weniger anfällig für DDOS-Angriffe, da weit weniger Anfragen unseren Host erreichen! Dies ist eine Kombination aus dem Caching von CloudFlare und ihrem rufbasierten DDoS-Schutz.

Warum CloudFlare gegenüber anderen CDNs?

Es gibt viele CDNs, aber es gibt wenige Produkte, die direkt mit CloudFlare konkurrieren, und keines, das ich kenne, ist so erschwinglich. Da wir nicht nur ein CDN suchten, sondern auch die oben genannten Vorteile, war CloudFlare die offensichtliche Wahl.

Persönlich läuft meine eigene WordPress-Multisite seit Jahren mit CloudFlare im Frontend, daher hatte ich die Erfahrung, um bei der Arbeit damit sicher zu sein. Sie haben auch einen ausgezeichneten Ruf bei den Technologieunternehmen, mit denen wir zusammenarbeiten.

Hat es also funktioniert? Gibt es Daten zur Veranschaulichung?

Als CloudFlare Anfang dieses Jahres seine App neu gestaltete, verloren wir die Möglichkeit, kombinierte Analysen unserer Domains zu sehen, aber Sie können die Analysen für einzelne Websites in einem CloudFlare-Konto unter `https://www.cloudflare.com/a/analytics/example.com` einsehen. Die Ergebnisse sind auf unseren geschäftigsten Websites am deutlichsten.

Stats for one of our busiest domains, demonstrating that only a fraction of requests even make it to our host.  Most are served via CloudFlare's page caching.

Statistiken für eine unserer geschäftigsten Domains, die zeigen, dass nur ein Bruchteil der Anfragen unseren Host erreicht. Die meisten werden über den Cache von CloudFlare ausgeliefert.

Wie haben wir das genau geschafft? Wir mussten in unser GoDaddy-Konto gehen und die DNS-Einstellungen für alle unsere Domains ändern, um auf CloudFlare zu verweisen, ohne API-Zugriff und wahrscheinlich ein Verhältnis von 300:1 Domain zu Mitarbeiter? Das klingt schrecklich. Wie habe ich das übersehen?

Sie haben Recht, es war ein ziemlich großes Projekt, das wir im Oktober 2014 begonnen haben, als wir uns auf die Migration des Hostings vorbereiteten. Glücklicherweise war das Ändern aller Nameserver zu CloudFlare für die von uns kontrollierten Domains dank einiger Browser-Automatisierung und manueller Arbeit der einfache Teil.

Was haben wir mit Browser-Automatisierung gemacht und was mit manueller Arbeit?

Fake, ein einfach zu bedienendes Browser-Automatisierungstool, hat Domains zu CloudFlare hinzugefügt und die Nameserver-Zuweisungen gesammelt (wenn ich mich richtig erinnere, kann man keine neuen Domains programmatisch zu CloudFlare hinzufügen). Für unsere Domains in GoDaddy hat unsere Arbeitscrew die Nameserver auf die von CloudFlare zugewiesenen geändert, nachdem Fake die Domainnamen hinzugefügt und aufgezeichnet hatte.

Und Sie sagen, das war der einfache Teil?

Ja! In Fällen, in denen Kunden ihre Nameserver kontrollieren, war es die übliche Herausforderung, jede Änderung der DNS-Einträge zu koordinieren, aber mit dem Vorteil, dass zukünftige Änderungen der DNS-Einträge dann von uns verwaltet werden konnten.

Was genau ist die damit verbundene Herausforderung?

Menschen haben Schwierigkeiten, das Domain Name System und Einträge zu verstehen. Und Domain-Registrare machen die Dinge mit schwierigen Benutzeroberflächen und der Verwendung unterschiedlicher (aber korrekter) Begriffe für dieselben Dinge kompliziert. Wenn Sie viel zu tun haben wie unsere Kunden und etwas nicht verstehen, haben Sie Schwierigkeiten, es zu priorisieren und abzuschließen.

Eine große Herausforderung war, dass Sie nach dem Hinzufügen einer Domain zu CloudFlare 14 Tage Zeit haben, um Ihre Nameserver zu ändern, sonst müssen Sie die Domain erneut zu Ihrem CloudFlare-Konto hinzufügen (und Sie erhalten möglicherweise nicht wieder dieselbe Nameserver-Zuweisung). Was mich zur nächsten Herausforderung bringt: CloudFlare versucht, Domains innerhalb eines Kontos dieselben Nameserver zu geben, aber es ist nicht garantiert. Wir mussten also sorgfältig E-Mail-Kampagnen formulieren, um die korrekten Domains aufzulisten, die ein Kunde aktualisieren musste, sowie die passenden Nameserver, zu denen er wechseln sollte, und die Wichtigkeit der Änderung innerhalb des 14-Tage-Fensters hervorzuheben! Ich glaube, es bedurfte drei Runden von Nameserver-Zuweisungen, jede mit zwei oder drei E-Mail-Kampagnen, um die Kunden zur Änderung zu erinnern, um die Mehrheit umzustellen.

Wen haben Sie angeschrieben und wie? Haben wir eine Liste mit dem Tech/Marketing-Ansprechpartner für jeden Kunden oder so etwas? Oder ist das eine CRM-Sache oder was?

Wir haben Kontakte aus unserem CRM und auch aus Whois-Abfragen exportiert!

Mann. Wie lange hat das alles gedauert?

Meine Erinnerung ist bereits leider verschwommen und wir haben damals keine Zeiterfassung geführt, daher konnte ich die Mannstunden nur auf Dutzende, möglicherweise über 100 schätzen. Wir haben fast alle von Kunden kontrollierten Domains umgestellt, zusätzlich zu allen Domains, die wir bereits über GoDaddy verwaltet haben.

Nachdem wir also alle unsere Domains auf CloudFlare umgeleitet hatten, was geschah als nächstes? CloudFlare zeigte immer noch auf unseren alten Host, richtig?

Korrekt, also haben wir alle unsere Domains in CloudFlare auf WP Engine umgeleitet. Wir konnten die A-Record-IP-Adressen mit der API von CloudFlare in wenigen Minuten programmatisch ändern, wenn wir es brauchten.

Also, Moment, was? Wir haben einen großen API-Aufruf an CloudFlare gemacht, um A-Record-IP-Adressen zu ändern? Wann? Wie? Wer hat den API-Client geschrieben? Oder wurde diese Aufgabe irgendwie von der Fake-Engine übernommen?

Wir haben Tausende von Anfragen mit einigen grundlegenden Desktop-Skripten an die API gesendet, die ich in den Weihnachtsferien dieses Jahres erstellt habe. Dies ermöglichte es uns, Tausende von Record-Löschungen, -Bearbeitungen und -Hinzufügungen in Minuten statt in Stunden manueller Änderungen oder Fake-Automatisierung durchzuführen.

Ich bin immer noch überrascht, dass ein CDN für uns mehr mit DNS-Abstraktion als mit Leistung zu tun hatte. Es ergibt Sinn, aber sind wir nicht nach derselben Logik jetzt eng an CloudFlare gebunden? Es wäre ein weiteres riesiges Unterfangen, uns davon zu trennen, wenn wir müssten.

Das stimmt, aber es ist unwahrscheinlicher, dass die Präsenz eines CDNs ein Problem darstellt, verglichen mit den unzähligen Dingen, die bei Hosting schief gehen können. Außerdem ist CloudFlare ein sehr stabiler Partner. Bis nächstes Jahr werden sie wahrscheinlich einen Börsengang haben.

Immer wenn ich von CDN-Migrationen höre, höre ich von Problemen mit Medien-Dateien-URLs, die geändert werden müssen, oder von Bildern im Post-Inhalt, die 404er erzeugen. Wir hatten dieses Problem nicht, und ich stelle fest, dass unsere Bilder nicht auf CloudFlare verweisen. Was ist los?

Mit CloudFlare müssen Sie Mediendateien nicht von anderen Domains ausliefern, wie Sie es bei traditionellen CDNs tun, da Sie die Nameserver Ihrer Domain zu denen von CloudFlare ändern. Dann verwendet CloudFlare Anycast, um Ihre Domain zum nächstgelegenen Rechenzentrum zu leiten, um die Dateien auszuliefern, die sie automatisch zwischengespeichert haben. In ihren eigenen Worten

CloudFlare operiert von 76 Rechenzentren weltweit. Unser CDN speichert Ihre statischen Dateien automatisch in unseren Edge-Nodes, sodass diese Dateien näher an Ihren Besuchern gespeichert werden, während Ihre dynamischen Inhalte direkt von Ihrem Webserver ausgeliefert werden. CloudFlare verwendet dann eine Technologie namens Anycast, um Ihre Besucher zum nächstgelegenen Rechenzentrum zu leiten. Das Ergebnis ist, dass Ihre Website für Ihre Besucher im Durchschnitt doppelt so schnell geladen wird, unabhängig davon, wo sie sich befinden. https://www.cloudflare.com/features-cdn/

Wie schwierig war dieser Umzug, nur wegen unseres unglaublich niedrigen Verhältnisses von Personal zu Kunden/Domains im Vergleich zu den meisten Agenturen? Ist es fair zu sagen, dass dies wirklich verdammt einfach gewesen wäre, wenn wir zum Beispiel buchstäblich nur eine einzelne, hoch frequentierte Website verwaltet hätten?

Korrekt, die meiste Komplexität ergab sich aus der Logistik der Verwaltung Hunderter von Domains und der Unterstützung Hunderter von Kunden bei der Aktualisierung der Nameserver für von ihnen registrierte Domains. Der Wechsel zu CloudFlare ist mit einer einzelnen Domain sehr einfach, obwohl man bei den Einstellungen vorsichtig sein muss, um Probleme zu vermeiden.

Ich werde versuchen, den Prozess in meinen eigenen Worten wiederzugeben.

  1. Wir haben viele Websites. Für einige von ihnen kontrollieren wir ihre DNS-Einstellungen über GoDaddy. Für andere behält der Kunde die Kontrolle über seinen gewählten Domainnamen-Registrar.
  2. Wir haben Fake, Menschen und API-Aufrufe verwendet, um die Domain-Verknüpfung und -Einstellungen zu verwalten. Für Domains außerhalb unserer Kontrolle mussten wir unsere Kunden über mehrere E-Mail-Runden hinweg organisieren, die an eine Liste gesendet wurden, die über CRM und Whois zusammengestellt wurde.
  3. Keine Sorge um Mediendateien-URLs oder Ähnliches, da bei CloudFlare einfach die Nameserver geändert werden, um auf sie zu verweisen.
  4. Die Schwierigkeit für eine einzelne Website wäre trivial. Jede nennenswerte Härte bei diesem Umzug war auf unser hohes Verhältnis von Domains zu Mitarbeitern zurückzuführen.

Ist das korrekt? Gibt es etwas hinzuzufügen oder wegzunehmen?

Korrekt! Sie sollten Ihre Domains ebenfalls auf CloudFlare umstellen, um den Prozess kennenzulernen.

Mal sehen, ob ich das selbst herausfinden kann.

Herausforderung angenommen. Ich verstehe im Allgemeinen den Prozess, den Josh erklärt hat, und werde ihn auf meiner eigenen WordPress-Multisite ausprobieren, die zwei Domainnamen hat: scottfennell.org und scottfennell.com.

Ich eröffne ein Konto bei CloudFlare und melde mich auch bei meinem BlueHost-Konto an, das mein Domain-Registrar ist. Nun, das ist ziemlich einfach. CloudFlare fordert mich auf, meine Domainnamen einzugeben und zeigt mir dann ein Video, das mehr oder weniger erklärt, was Josh oben erklärt hat.

Screenshot aus dem CloudFlare-Einführungsvideo.

Sie behaupten im Video, das etwa eine Minute lang ist, dass das Video länger dauert als der Migrationsprozess. Sie hatten Recht. Alles, was ich tun musste, war, die von CloudFlare zugewiesenen Nameserver zu notieren und sie in BlueHost zu aktualisieren. Ich bin fertig. Ich bin jetzt auf CloudFlare (oder werde es sein, sobald die Änderungen propagiert sind).

Ich schätze, das interessantere Thema ist *und nun*? Ist meine Website schneller? Im Gegensatz zu den meisten unserer Websites bei der Arbeit hat meine Website Unmengen großer Bilder. Es ist im Grunde eine High-Res-Fotogalerie. Vor CloudFlare dauerte diese Seite etwa 3,1 Sekunden zum Laden, un-gecached: http://scottfennell.com/turkey/suphan-dagi/. Mit aktiviertem CloudFlare dauert es etwa 2,2 Sekunden. Seiten mit mehr Medien werden noch stärker beschleunigt, und wo ich Page-Caching aktiviert habe, erreiche ich DOM Ready in etwa 300ms. Wenn Sie neugierig sind, das Netzwerk-Panel selbst zu inspizieren

Schauen Sie sich diese Analysen an, nach nur wenigen Tagen hinter CloudFlare

CloudFlare-Analysen, die den massiven Anteil an gecachten Anfragen zeigen.

Ein interessanter Nebeneffekt: Einige der Bildergalerien auf meiner Website zeigen die Bilder in zufälliger Reihenfolge an. Hinter dem Page-Caching von CloudFlare erhalte ich auf jeder Seite dieselbe Reihenfolge, da es die Ausgabe beim ersten Laden einer bestimmten URL zwischenspeichert. Ähnlich wäre es bei der Arbeit zu viel Verwirrung bei unseren Kunden führen, wenn sie erwarteten, unsere aktualisierte Arbeit zu sehen, aber stattdessen mit der von CloudFlare zwischengespeicherten Version festhingen.

Ich bin von diesem Problem tatsächlich begeistert, weil es mir etwas Arbeitsplatzsicherheit verschafft hat: Ich durfte ein Plugin schreiben!

Ein WordPress-Plugin zum Leeren Ihres CloudFlare-Caches.

So sieht es aus:

Screenshot unseres CloudFlare-Plugins.

Sie erhalten zwei Schaltflächen. Eine zum Leeren Ihres Caches und eine weitere zum Aufrufen des Entwicklermodus, bei dem das Caching für bis zu drei Stunden vorübergehend ausgesetzt wird. Wenn Sie daran interessiert sind, CloudFlare auf Unternehmensebene für mehr als nur ein paar Websites zu nutzen, empfehle ich Ihnen dringend, sich dessen API anzusehen und ein ähnliches Tool für Ihre bevorzugte Plattform zu entwickeln. Sunny scheint eine sehr robuste Option für dot org zu sein, obwohl ich sie persönlich noch nicht verwendet habe.

Wenn Sie es selbst entwickeln, beachten Sie die bewundernswerte Arbeit, die CloudFlare leistet, indem es API-Dokumente in seine Weboberfläche integriert. Schauen Sie sich das an, es sitzt da und wartet darauf, dass Sie einen Aufruf machen

Screenshot, der die API-Dokumente zeigt, die schön in die Web-App-Oberfläche integriert sind.

Alternativen und nächste Schritte

Ich bin von vage bewusst und froh, dass wir zu CloudFlare gewechselt sind, zu ziemlich verdammt begeistert von CloudFlare. Meine Entschuldigung: Ich hatte wirklich nicht vor, daraus eine CloudFlare-Lobeshymne zu machen, also lassen Sie mich darauf hinweisen, dass es wahrscheinlich einige Alternativen gibt, insbesondere eine von Sucuri.

Abgesehen vom geschäftlichen Argument für CDNs gibt es auch eine Gelegenheit zur Kompetenzentwicklung. Wenn Sie wie ich sind, verbringen Sie viel Zeit allein in Ihrem Texteditor, und es ist leicht, den Prozess der tatsächlichen Bereitstellung dieses Codes in der Produktion zu vergessen. Ein wenig Zeit damit zu verbringen, meine DNS-Vokabeln zu lernen, war eine erfrischende Abwechslung. Wenn das nach Ihnen klingt und Sie Ihre Websites nicht hinter einem CDN haben, machen Sie eine Pause vom Code und überprüfen Sie CloudFlare.


Scott Fennell ist ein WordPress-Theme- und Plugin-Entwickler in Anchorage, Alaska.