Wie Sie entscheiden, ob Sie S3 direkt oder CloudFront zusätzlich zu S3 nutzen


Thu 17 August 2017 Von Arnaud Kervern

Wenn Sie Ihre Dateien auf der Nuxeo Platform speichern und alle Vorteile einer AWS-Cloud-Lösung nutzen möchten, müssen Sie sich an irgend einem Punkt entscheiden, wie Sie auf die in der Nuxeo Platform gespeicherten Blobs zugreifen möchten. Insbesondere dann, wenn Sie wie alle anderen eine bestmögliche Performance bei hoher Effizienz erreichen möchten, was immer eine Herausforderung darstellt. Es ist nicht einfach, sich zwischen Amazon S3 oder Azure zu entscheiden, und zusätzlich darüber nachzudenken, ob Sie ein CDN verwenden sollen oder nicht. In diesem Beitrag sprechen wir über Lösungen, die auf AWS basieren, damit Sie sich entscheiden können, ob Sie S3 direkt oder CloudFront zur Weiterleitung an S3 Buckets nutzen möchten.

Ich werde nicht auf den Kostenfaktor der verschiedenen Optionen eingehen. Gehen Sie davon aus, dass die Verwendung von CloudFront für den Datentransfer günstiger ist als S3. Schließlich sind CDN genau dazu da.

Vor kurzer Zeit habe ich darüber geschrieben, wie Sie Ihre Downloadrate für Blobs anpassen können. Wir haben gesehen, dass wir die Nuxeo Platform einfach konfigurieren können, um eine direkte, S3-signierte URL oder eine auf S3 vorgeschaltete URI auf CloudFront mit einer signierten URL zu erhalten.

Stellen wir uns folgendes Szenario vor:

Ich weiß, dass ich einige Kunden habe, die Edge Locations benutzen, ich weiß dass CloudFront das AWS CDN ist, und ich weiß (ganz sicher), dass es schnell sein muss! Dabei müssen wir beachten, dass S3 regional reproduziert wird, aber hierfür definitiv weniger CloudFront Endpunkte auf Edge Locations zur Verfügung stehen.

Ich möchte gar nicht auf die Vorteile eingehen, die durch das Abrufen vielfacher Webassets wie Stylesheets, GIFs, JPEGs oder js über CDN entstehen, denn dafür wurde die Nuxeo Platform nicht entwickelt. (Sie könnte das natürlich auch, aber wie Sie wissen, ist weniger manchmal mehr! Wir speichern große digitale Assets, die alle nacheinander abgerufen werden.)

Wir können zum Beispiel über den Nutzen für eine Anfrage sprechen (eine Anfrage bedeutet ein Download. Denken Sie daran, dass der Download eines durchschnittlichen Assets etwa 5MB umfasst und nur selten kleiner ist.)

Vergleichen wir also! Stellen Sie sich den Tag vor, an dem Sie als Verantwortlicher für das beste Produkte Ihres Unternehmens zwischen diesen beiden Konfigurationen der Nuxeo Platform entscheiden müssen:

  • Speicherung von Blobs auf S3 und Konfiguration des direkten S3 Zugriffs, um Assets herunterzuladen.
  • Umleitung auf CloudFront anstatt auf S3, das mit einer S3 Distribution und Sicherheitsfunktionen konfiguriert wurde.

Ihr Tag könnte folgendermaßen aussehen:

  • Sie denken, dass Sie CloudFront vorgeschaltet vor S3 verwenden möchten. Gute Wahl - Sie wissen aus unserem letzten Blog, wie Sie Dinge beschleunigen, aber Sie müssen dies gegenüber Ihrem Scrum-Team rechtfertigen. Während Sie darüber nachdenken, wandern Ihre Gedanken:
  • Sie (als Projektleiter) zögern während Ihrer Priorisierungssitzung zwischen S3 und CloudFront+S3. Sie wechseln von einem Blogbeitrag zum nächsten, die die Performance behandeln (Sie brauchen eine Stunde, wenn Sie der Usain Bolt im Bloglesen sind... oder drei Stunden, wenn Sie zu den Normalsterblichen zählen).
  • Sie erklären Ihrem Team Ihre Vorstellungen, und natürlich möchte das Team darüber diskutieren. Immer wieder fragen sie: "Aber warum? Warum CloudFront?" (Die Diskussion dauert mindestens 10 Minuten.)
  • Schließlich stimmt das Team zu und Ihr führender Entwickler setzt die Aufgabe auf Ihrem Kanban in den Status "In Bearbeitung". Hurra! (5 Sekunden)
  • Dann macht das Entwicklerteam eine Pause, bevor es mit der Arbeit beginnt (10 Minuten, falls es nur ein Kaffee sein soll, etwas länger, wenn das Team etwas zu Essen benötigt).
  • Der Entwickler weiß genau, was zu tun ist. Richtig, Entwickler müssen keine Dokumentation lesen. (0 Sekunden)
  • Der Entwickler fragt den AWS-Administrator nach den CloudFront-Schlüsseln. Wenn man sichere URLs haben möchte, können, die Schlüsselpaare nur über das AWS-Stammkonto erstellt werden, die für die Erzeugung der signierten URLs auf der Nuxeo Platform benötigt werden. (2 Minuten)
  • Dann dauert es etwas, bis der AWS-Administrator, der seit einiger Zeit nicht mehr angemeldet war, die Stamm-MFA-Schlüssel für die Anmeldung wiederfindet und so einrichtet, dass diese sicher sind. (20 Minuten)
  • Schließlich erzeugt der AWS-Administrator die persönlichen Schlüssel und gibt sie an den Entwickler weiter (und bittet, auf diese aufzupassen). (Theoretisch 45 Minuten, wahrscheinlich jedoch länger!)
  • Zu guter Letzt kann Ihr Entwickler den S3 Bucket erstellen und als Standardspeicher für Blobs auf der Nuxeo Platform konfigurieren (höchstens 30 Minuten - das geht ziemlich einfach.)
  • Jetzt versucht der Entwickler herauszufinden, wie die CloudFront Schlüsselpaare gefunden und in der Produktionsumgebung eingesetzt werden können. Dazu müssen die Bereitstellungsskripte geändert werden, da sie gesichert werden müssen und auf keinen Fall im Repository der Hauptquellen gespeichert werden dürfen. (2 Stunden, mindestens!)
  • Und dann zerstören die Änderungen an den Bereitstellungselementen die CI-Kette! Unser Entwickler muss sie reparieren (1 Stunde, möglicherweise länger, falls Jenkins schlechte Laune hat!)
  • Schließlich ist die Aufgabe erledigt.

Gesamtdauer: 359 Minuten und 5 Sekunden oder 21.545 Sekunden

Wenn Sie andererseits die Sache einfach halten, es nur mit einem schlichten S3 und Download-Anfragen versuchen möchten, die direkt auf ‚(nuxeo.s3storage.directdownload=true)' weitergeleitet werden:

  • Dann priorisieren Sie (als Projektleiter) die Aufgabe. (30 Sekunden)
  • Sie erklären dem Team die Aufgabe, indem Sie sagen: "Ich glaube diese Lösung genügt, insbesondere seit S3 unsere Blobs nun in Datenzentren weltweit reproduziert hat. Nicht in ganz so vielen Speicherorten wie CloudFront, aber für den Moment reicht das." (2 Minuten)
  • Unser Entwickler setzt die Aufgabe in den Status "In Bearbeitung". Hurra! (5 Sekunden)
  • Der Entwickler legt vor Beginn der Arbeit noch eine Pause ein. (10 Minuten)
  • Zu guter Letzt kann unser Entwickler den S3 Bucket erstellen und als Standardspeicher für Blobs auf der Nuxeo Platform konfigurieren (höchstens 30 Minuten - es geht ziemlich einfach!)
  • Und schon ist die Aufgabe erledigt.

Gesamtdauer: 42 Minuten und 35 Sekunden oder 2.555 Sekunden

Wir haben zwischen den beiden Einstellungen also einen Unterschied von 18.990 Sekunden, etwa 316 Minuten oder mehr als 5 Stunden.

Das Konfigurieren von S3 geht schneller, aber die Geschwindigkeit von CloudFront ist besser.

Ich erstelle jetzt keine echte Benchmark, da die Ergebnisse von meinem Standort und anderen obskuren Netzwerkkomponenten, die ich nicht kontrollieren kann, abhängig sind. Aber stellen Sie sich vor, wir hätten ein effektives Geschwindigkeitsplus von 100 ms je Anfrage (das ist bereits ein ziemlicher großer Zugewinn) bei Cloudfront+S3 gegenüber S3.

Dies bedeutet, dass Sie 189.900 Downloads über CloudFront machen müssen, bevor Sie mit dieser speziellen Konfiguration Zeit gewinnen, einschließlich:

  • Stammzugriff auf Ihr AWS-Konto organisieren.
  • Erzeugen der CloudFront Schlüsselpaare, um signierte URLs von der Nuxeo Platform zu erhalten.
  • Übertragung sensibler Dateien (Schlüsselpaare) von der Entwicklungsumgebung in die Produktionsumgebung.

...anstatt S3 direkt zu verwenden. Diese Menge an Downloads kann groß sein (oder nicht), abhängig von der von Ihnen angestrebten Verwendung und der erwarteten Anzahl aktiver Benutzer.

Behalten Sie diese Zahlen im Hinterkopf. Denn wenn der Zeitpunkt kommt, um eine Entscheidung zu treffen, werden Sie mindestens eine Stunde einsparen, insbesondere durch die Auswahl, die ich mit diesem Vergleich aufgezeigt habe.

Viel Spaß mit Ihrer AWS-Konfiguration!


Etikettiert: Nuxeo Platform, AWS, How to