Kann die vertikale Skalierung einer EC2-Instanz durch AWS 100.000 Benutzer pro Tag unterstützen?

Kann die vertikale Skalierung einer EC2-Instanz durch AWS 100.000 Benutzer pro Tag unterstützen?

Ich habe eine Website zum Teilen von Links (denken Sie an Reddit). Sie wird derzeit auf GoDaddy Deluxe Shared Hosting gehostet. Ich plane, sie zu AWS zu migrieren.

Ich habe ein AWS-Webinar zum Thema Skalierung auf 10 Millionen Benutzer gesehen. Aber im Grunde heißt es dort nur, dass ab einem gewissen Punkt keine vertikale Skalierung möglich ist, also sollten Sie sich von Anfang an für eine horizontale Skalierung entscheiden.

Ich muss nicht 10 Millionen Benutzer unterstützen. Nehmen wir an, ich muss täglich 100.000 Benutzer unterstützen. Die Site hat höchstens 1.000 gleichzeitige Benutzer.

Anwendungsfall

  • Benutzer werden Links zur Site posten. Nur einer von 1.000 Benutzern wird Links posten.
  • Die meisten Benutzer durchsuchen die Site lediglich nach Links, lesen die Beschreibung usw.
  • Täglich werden etwa 5.000 Kommentare auf der Site abgegeben.
  • Es handelt sich hauptsächlich um eine textbasierte Site.
  • Auf der Site gibt es nur sehr wenige Bilder außer Benutzeravataren und Bannern, die beide auf 2 MB begrenzt sind. Die Bilder werden in der Datenbank gespeichert.
  • Die üblichen Funktionen eines Forums wie Anmeldung, Login, Konto usw. sind vorhanden.

Geplante Architektur

  • 1 EC2-Instanz
  • 1 RDS-Instanz
  • 1 Route 53 Zone
  • 1 Elastische IP
  • 1 s3 (nur für Backup)

Ich plane, mit dieser einfachen Methode zu skalieren: Beginnen Sie beispielsweise mit t2.micro und aktualisieren Sie bei wachsender Benutzerbasis einfach die EC2-Instanz. Dasselbe gilt für die RDS-Instanzen.

Ich weiß, dass 1 EC2 oder RDS einen Single Point of Failure darstellt. Wenn einer dieser Server ausfällt, plane ich, diese Instanz zu beenden und eine identische von einem Image/Backup aus zu starten. Ich habe kein Problem damit, wenn die Site alle 30 Tage für 1 Stunde offline ist.

Bitte bedenken Sie, dass ich niemanden habe, der mir hilft, und dass dies eine Einzelleistung ist. Ich kann jemanden auf der AWS-Seite finden, der mir hilft, wenn es Benutzer betrifft.

  1. Kann ich auf diese Weise 100.000 Benutzer unterstützen?
  2. An welchen Haltepunkten sollte ich bis zu 100.000 Benutzern/1.000 gleichzeitigen Benutzern auf die nächste Ec2-Instanz aktualisieren? (Beispiel: Bis zu 5 gleichzeitigen Benutzern – t2.micro/db.t2.micro, Bis zu 40 gleichzeitigen Benutzern – EC2-Instanztyp 2/Rds-Instanztyp 2 usw.)
  3. Gibt es sonst noch etwas, das ich nicht bedacht habe/bedenken muss, bevor ich mit diesem Plan fortfahre?

Antwort1

Es ist sehr schwierig zu sagen, ob eine Webanwendung eine bestimmte Anzahl von Clients auf einem bestimmten System verarbeiten kann. Dies hängt stark von vielen Faktoren ab, darunter, wie die Anwendung geschrieben wurde, welche Frameworks verwendet wurden usw.

Die beste Option wäre, etwas zu finden, mit dem Sie die Nutzung der Anwendung vergleichen/simulieren können. Da die Webanwendung anscheinend bereits läuft, könnten Sie problemlos eine EC2-Instanz beliebiger Größe für kurze Zeit einrichten, einige Tests ausführen und sie dann herunterfahren.

Die Möglichkeit zur horizontalen Skalierung bietet einen viel besseren Weg, um zukünftiges Wachstum zu bewältigen. Was passiert, wenn die Site mit den größeren Instanzen Probleme hat oder Sie über 100.000 skalieren müssen? Möglicherweise stellen Sie auch fest, dass die bloße Umstellung auf größere Instanzen wahrscheinlich keine lineare Leistungssteigerung bringt.

Eines fällt jedoch auf -

Die Bilder werden in der Datenbank gespeichert.

Speichern Sie die Bilder und alles andere, was Sie nicht unbedingt von Anwendungsservern verarbeiten lassen müssen, woanders. Da Sie bereits einen AWS-Stack verwenden, ist S3 der naheliegende Ort für Bilder und andere statische Daten. Verschwenden Sie keine Anwendungsserverzeit mit statischen Ressourcen.

verwandte Informationen