
Ich habe eine Netzwerkanwendung geschrieben und sie auf einer einzelnen EC2-Instanz (M1-groß) bereitgestellt.
Die Anwendung fungiert als eine Art Chatroom (ermöglicht aber neben dem Senden von Nachrichten auch andere Dinge), der es Smartphone-Besitzern ermöglicht, in unmittelbarer (physischer) Nähe, sagen wir bis zu 5 Metern, zu kommunizieren.
Dies ist meine erste Netzwerkanwendung und ich habe einige Zweifel und Fragen dazu:
Da dies ein sehr selektiver Chatroom ist (Sie sehen nur Leute, die ganz in der Nähe sind), habe ich keine Ahnung, wie ich die Last ausgleichen kann: Wenn ich beispielsweise zwei Instanzen nehme, eine in Europa und eine in den USA, möchte ich Leute aus Europa zur ersteren und Leute aus den USA zur letzteren umleiten. Wenn ich diese Umleitung nicht garantieren kann, ist die gesamte Anwendung wertlos. Gibt es eine Möglichkeit, dies mit Route 53 zu tun? Ist das sinnvoll? Reicht eine große Instanz nicht aus?
Ich habe versucht, die Leistung der Instanz bei hoher Belastung zu testen. Also habe ich meine eigene Anwendung geschrieben, die 200.000 Anfragen pro Stunde simulierte, und sie auf anderen EC2-Instanzen ausgeführt. Es schien kein Problem zu geben (außer einer erhöhten Latenz bei einigen Anfragen, die bei hoher CPU-Auslastung beim Akzeptieren einer großen Anzahl von Verbindungen gleichzeitig normal klingt). Meine Frage ist, ob es ein guter Belastungstest zu sein scheint, wenn ich mit 500.000 Benutzern rechne. Ich weiß, dass dies eine ziemlich vage Frage ist, aber eine ziemlich vage Antwort wird auch ausreichen.
In puncto Sicherheit. Welche allgemeinen Vorsichtsmaßnahmen sollte ich treffen, um das Risiko einer Sicherheitsverletzung zu verringern? Ist es eine gute Idee, alle Ports (außer dem Abhörport meiner Anwendung) in der Firewall zu deaktivieren? Oder ist das überflüssig? Auch das ist eine eher vage Frage. Ich bin für allgemeine Antworten dankbar.
Danke
Antwort1
Da Ihre Anwendung auf Nähe basiert, können Sie Server in verschiedenen Regionen einrichten, ohne dass es zu Überschneidungen kommt. Nutzen Sie die Funktion „Latenzbasiertes Routing“ von Route53. Dies sollte in den meisten Fällen dazu führen, dass die Benutzer zum nächstgelegenen Server gelangen. Da es sich jedoch nicht um „geobasiertes Routing“ handelt, ist dies nicht garantiert. Der Vorteil mehrerer weltweiter Server im Vergleich zu einer einzigen riesigen Instanz besteht darin, dass Sie die Latenz zwischen Client und Server verringern.
Wenn Ihre Simulation die Nutzung Ihrer Benutzer richtig darstellt, sollten Ihnen Ihre Ergebnisse viel sagen. Wenn 200.000 Anfragen pro Stunde die Aktivität von 500.000 Benutzern richtig darstellen, sollte alles in Ordnung sein. Wenn dies nicht der Fall ist, passen Sie Ihre Tests an. Der Schlüssel liegt darin, sicherzustellen, dass Ihr Test 500.000 Benutzer richtig darstellt, dann werden Ihre Ergebnisse dies auch tun.
Schließen Sie die Ports in der Sicherheitsgruppe für alles, was für Ihre Anwendung nicht unbedingt erforderlich ist. Lassen Sie keine RDP-, SSH- oder Datenbank-Ports offen. Lassen Sie nur Ihren Anwendungsport offen.