fragen stichworte

Wie wählt man die EC2-Instanz für Ihre Django-App aus?

Possible Duplicate:
Can you help me with my capacity planning?

Mein Team hat eine schöne Django-App erstellt und wird nun auf einer EC2-Instanz bereitgestellt. Nun gibt es ein paar Fragen, auf die ich antworte:

  • Wie kann ich entscheiden, welche Instanz für meine App geeignet ist (Micro, Small, Medium, Large usw.)? Mit anderen Worten, wie kann ich feststellen, wie viel Speicher/Verarbeitungsleistung diese Anwendung benötigt.
  • Wie kann ich die maximale Anzahl gleichzeitiger Benutzer auf meinem Server ermitteln? Dies ist wichtig für diese Anwendung. Ich muss wissen, wie viele Benutzer von einer Mikro-/kleinen/mittleren oder großen Instanz unterstützt werden.
  • Sollte ich alles für eine einzelne Instanz installieren oder eine separate Instanz für Datenbank, Sicherungen und Anwendungen haben?
  • Wie kann ich eine Schätzung der zusätzlichen Ressourcen angeben, die von jedem Benutzer hinzugefügt werden (ich denke, das wäre nicht linear)?

Ich weiß, dass die Antwort auf diese Fragen sehr subjektiv ist und die meisten Dinge vom Anwendungsdesign und der Architektur abhängen. Daher bin ich mehr daran interessiert, den Prozess kennenzulernen, der bei solchen Entscheidungen zum Einsatz kommt.

antworten

Sie haben am Ende der Frage selbst darauf hingewiesen, dass es nicht möglich ist, eine direkte, objektive Antwort auf Ihre Frage zu geben, außer "es kommt darauf an", also werde ich versuchen, basierend auf meinen ( nicht weit) Erfahrung mit AWS.

How do I decide which instance is good for my app (micro, small, medium, large etc.). In other words how can I tell how much memory/processing power is required by this application.

Durch Testen, Benchmarking, Experimentieren. Es gibt mehrere Artikel, die darauf hindeuten, dass EC2 im Vergleich zu "äquivalenten" Hardwarespezifikationen anderer Anbieter (dies) eine schlechte Leistung erbringt. Mein Vorschlag wäre, eine Umgebung nach bestem Wissen einzurichten, zu überwachen, zu testen, die Instanz (en) zu benchmarken, mit neuen Instanzen herumzuspielen und zu entscheiden, welche am besten zu Ihren Anwendungsanforderungen passt. Ohne weitere Details Ihrer Architektur ist dies die beste Antwort, die Sie haben könnten.

How can I quantify maximum number of concurrent users on my server. This is important for this application, I need to know how many users would be supported by micro/small/medium or large instance.

Dies hängt wiederum stark von Ihrer Systemarchitektur und dem Profil Ihrer Transaktionen ab. Sind sie I/O-intensiv, CPU-gebunden, speichergebunden? Der beste Tipp ist, dass Sie experimentieren sollten.

Should I go for everything installed on a single instance or should I have separate instance for database, backups and application.

Ich empfehle separate Instanzen für jede Ebene Ihrer Anwendung. Ein typisches Setup in AWS würde EC2-Instanzen (hinter einem Elastic Load Balancer oder nicht) (oder Elastic Beanstalk) für Ihre Anwendung, einen weiteren Satz von EC2-Instanzen oder RDS für Ihre Datenbank, S3 für persistente Dateien und Backups usw. enthalten . Wenn Sie keine große (oder nicht einmal moderate) Last erwarten, kann eine einzelne medium -Instanz genau Ihren Anforderungen entsprechen. Der Hauptgrund für eine Trennung ist, dass Sie sie in Zukunft unabhängig skalieren können. Dies ist IMHO der beste Vorteil von AWS: Flexibilität. Sie können Ihr RDS-System mit einem Mausklick skalieren (fast wörtlich). Sie können auch ohne großen Aufwand einen Elastic Load Balancer vor Ihrer Webschicht hinzufügen und dann Ihrem Ökosystem zwei oder drei weitere Webserver hinzufügen. Also würde ich die Dinge getrennt halten, um diese Flexibilität zu maximieren und zu nutzen.

How can I have an estimate of extra resources required with addition of each user (I think this would not be linear)

Experimentieren, benchmarkieren usw. Es tut uns leid, dass wir uns wiederholen, aber wenn Sie mit der Bereitstellung Ihrer Ressourcen beginnen, werden Sie feststellen, dass die Dinge nicht linear sind und dass Ihre Erwartungen nicht immer wahr sind bei Verwendung von AWS. Wenn ich einige einfache Tipps befolge (wie die Antwort, die ich für das vorangegangene Aufzählungszeichen gegeben habe), kann nicht garantiert werden, dass das System leicht an die jeweilige Belastung angepasst wird, aber die Dinge werden wahrscheinlich weniger schmerzhaft sein, wenn man skalieren muss.

Ich hoffe, es hilft.