Wszystkie rzeczy, o których wspomniałeś, takie jak równoważenie obciążenia, monitorowanie i automatyczne skalowanie, są zdecydowanie zaletami.
Trzeba jednak pomyśleć o tym w ten sposób: w prawdziwej platformie jako usłudze (PAAS) celem jest oddzielenie aplikacji od platformy. Jako programista martwisz się tylko o swoją aplikację. Platforma jest „wynajęta”. „Instancje” platformy są automatycznie aktualizowane, administrowane, skalowane, równoważone itp. Za Ciebie. Po prostu przesyłasz plik WAR i po prostu działa (przynajmniej teoretycznie).
Samo EC2 nie jest PAAS. Bardziej przypomina IAAS ( Infrastructure as a Service ). Nadal musisz dbać o instancje serwerów, instalować na nich oprogramowanie, aktualizować je itp.
Elastic Beanstalk to system PAAS. Podobnie jak App Engine i Azure, wśród wielu innych.
W prawdziwym systemie PAAS DBMS jest oddzielnym komponentem od serwera (serwerów) aplikacji internetowych. Powód jest oczywisty: DBMS nie może być prawdopodobnie zainstalowany na instancjach, które są używane przez serwer aplikacji, ponieważ w miarę tworzenia i niszczenia instancji na podstawie Twojego ruchu, DBMS zostałby utracony! Posiadanie DBMS i serwera aplikacji na tej samej maszynie / instancji nie jest i tak ogólnie dobrym pomysłem.
W systemie PAAS DBMS jest oddzielną usługą. W przypadku Amazon byłby to Amazon RDS . Podobnie jak w przypadku Elastic Beanstalk, gdzie nie musisz martwić się o serwer aplikacji i po prostu przesyłasz plik WAR, dzięki RDS nie musisz martwić się o DBMS i po prostu wdrażasz swoje bazy danych.
Elastic Beanstalk i RDS współpracują ze sobą bardzo dobrze, zwłaszcza gdy są wdrożone w tej samej strefie dostępności, gdzie opóźnienia byłyby bardzo niskie.
Wreszcie, użycie Elastic Beanstalk nie kosztuje nic więcej niż wdrożone zasoby (instancje EC2 i load balancer). Jednak RDS nie jest tani i na pewno byłby droższy niż użycie jednej instancji EC2 zarówno dla serwera aplikacji, jak i dla DBMS.