Tutte le cose che hai menzionato come il bilanciamento del carico, il monitoraggio e il ridimensionamento automatico sono sicuramente vantaggi.
Tuttavia, devi pensarci in questo modo: in una vera Platform as a Service (PAAS), l'obiettivo è separare l'applicazione dalla piattaforma. In qualità di sviluppatore, ti preoccupi solo della tua applicazione. La piattaforma ti viene "affittata". Le "istanze" della piattaforma vengono automaticamente aggiornate, amministrate, ridimensionate, bilanciate, ecc. Per te. Devi solo caricare il tuo file WAR e funziona (almeno in teoria).
EC2 di per sé non è PAAS. È più simile a IAAS ( Infrastructure as a Service ). Devi ancora occuparti delle istanze del server, installare software su di esse, tenerle aggiornate, ecc.
Elastic Beanstalk è un sistema PAAS. Così sono App Engine e Azure tra molti altri.
In un vero sistema PAAS, il DBMS è un componente separato dai server delle applicazioni web. Il motivo è ovvio: il DBMS non può essere installato sulle istanze che vengono utilizzate per il server delle applicazioni perché, poiché le istanze vengono create e distrutte in base al traffico, il DBMS andrebbe perso! In ogni caso, avere il DBMS e il server delle applicazioni sulla stessa macchina / istanza non è generalmente una buona idea.
In un sistema PAAS, il DBMS è un servizio separato. Per Amazon, sarebbe Amazon RDS . Proprio come con Elastic Beanstalk, dove non devi preoccuparti del server delle applicazioni e devi solo caricare il tuo file WAR, con RDS, non devi preoccuparti del DBMS e devi solo distribuire i tuoi database.
Elastic Beanstalk e RDS funzionano molto bene insieme, soprattutto se distribuiti nella stessa zona di disponibilità, dove la latenza sarebbe molto bassa.
Infine, l'utilizzo di Elastic Beanstalk non costa nulla di più delle risorse distribuite (istanze EC2 e bilanciamento del carico). Tuttavia, RDS non è economico e sarebbe sicuramente più costoso rispetto all'utilizzo di una singola istanza EC2 sia per il server delle applicazioni che per il DBMS.