Die automatische Skalierung auf AWS erfolgt durch Hinzufügen weiterer Server, ohne dass mehr CPU/RAM hinzugefügt wird. Sie können mehr CPU/RAM manuell hinzufügen, aber Sie müssen den Server eine Minute lang herunterfahren, um die Änderung vorzunehmen, und dann jede auf dem Server ausgeführte Software konfigurieren, um den hinzugefügten RAM zu nutzen, so dass die automatische Skalierung nicht erfolgt .
Elastic Beanstalk ist im Grunde eine Verwaltungsschnittstelle für Amazon EC2-Server, Elastic Load Balancer und Auto Scaling Groups. Es stellt alles für Sie bereit und bietet eine bequeme Möglichkeit, neue Versionen Ihrer Anwendung einfach bereitzustellen. Elastic Beanstalk erstellt EC2-Server hinter einem Elastic Load Balancer und verwendet eine Auto Scaling-Konfiguration, um bei steigender Anwendungslast weitere Server hinzuzufügen. Es kümmert sich darum, die Server dem Load Balancer hinzuzufügen, wenn sie bereit sind, Datenverkehr zu empfangen, sie aus dem Load Balancer zu entfernen und die zusätzlichen Server zu löschen, wenn sie nicht mehr benötigt werden.
Für Ihre Java-Anwendung, die auf Tomcat läuft, haben Sie einige Optionen, um die horizontale Skalierung gut zu handhaben. Sie können Sticky-Sitzungen auf dem Load Balancer aktivieren, damit alle Anforderungen eines bestimmten Benutzers an denselben Server gesendet werden, wodurch die HttpSession an den Benutzer gebunden bleibt. Das Hauptproblem dabei ist, dass, wenn ein Server aus dem Pool entfernt wird, einige HttpSessions verloren gehen und alle Benutzer, die an diesem Server hängen geblieben sind, aus Ihrer Anwendung ausgeloggt werden. Die Lösung besteht darin, Ihre Tomcat-Instanzen so zu konfigurieren, dass Sitzungen an einem freigegebenen Speicherort gespeichert werden. Es gibt Tomcat-Session-Store-Implementierungen, die mit AWS-Services wie ElastiCache (Redis) und DynamoDB funktionieren. Ich würde empfehlen, eine davon zu verwenden, wahrscheinlich die Redis-Implementierung, wenn Sie mit DynamoDB noch nicht vertraut sind.
Eine weitere Überlegung für eine Java-Anwendung auf AWS zu bewegen ist, dass Sie keine Werkzeuge oder Bibliotheken verwenden können, die auf Multi-Cast verlassen. Möglicherweise verwenden Sie Multi-Casting nicht für irgendetwas, aber meiner Erfahrung nach verließ sich jede Java-App, die ich nach AWS migrieren musste, auf Multi-Cast für das Clustering, und ich musste es ändern, um eine andere Cluster-Methode zu verwenden.
Auch für eine erfolgreiche Migration zu AWS empfehle ich Ihnen, ein wenig über VPCs, private IP versus öffentliche IP und Sicherheitsgruppen zu lesen. Ein solides Verständnis dieser Themen ist der Schlüssel zum Einrichten Ihres Netzwerks, damit Ihre Webserver auf sichere und performante Weise mit Ihren DB- und Cache-Servern kommunizieren können.
Sie implementieren in einer Cloud, was bedeutet, dass Sie die folgenden Empfehlungen befolgen sollten: http://12factor.net/. Sie sollten für den Anfang staatenlos sein. – duffymo