¿Cuál es la ventaja de escribir una aplicación web con Node.js en EC2 frente a Python en Google App Engine?

EC2 y GAE no se comparan. EC2 está más en el lado de la infraestructura de las cosas (IaaS), GAE está más en el lado de la plataforma (PaaS). EC2 se compara mejor con GCE (Google Compute Engine).

PROS
Infraestructura: flexibilidad, libertad, control total.

Plataforma: mantenimiento fácil (no se ocupa de las pesadillas de configuración y aprovisionamiento, no tome el rol de administrador de sistemas como un trabajo secundario, por lo que puede concentrarse en su desarrollo principal)

CONTRAS
Infraestructura: mantenimiento (usted hace todo usted mismo: configuración del servidor, servicios de administración de pf, administración del sistema, seguridad, copia de seguridad y replicación, todas las demás cosas no sexys necesarias para mantener su servicio funcionando con alta confiabilidad). Esencialmente, usted es el ingeniero de software, el ingeniero de confiabilidad del sitio, el administrador del sistema, el administrador de la base de datos, etc. También debe configurar su propia estrategia de implementación (gran trabajo si desea configurar todas las características que plataformas como GAE ofrecen de forma inmediata, por ejemplo, versionado, división de tráfico, etc.).
A primera vista, GAE es fácil de aprovisionar y administrar. La prueba es extremadamente fácil con GAE (todos sus ingenieros pueden tener sus propias instancias personales de su aplicación, por lo que los entornos de prueba son realmente personales para que el código defectuoso de alguien no corrompa los datos en su servidor db de prueba). Por supuesto, puede configurar todo esto por su cuenta, pero, ¿es eso lo que realmente quiere hacer?

Plataforma:
* Restricciones. Este es un problema realmente grande y loco. Demasiadas soluciones para hacer algo significativo. Es posible que se sorprenda al descubrir que pasa más tiempo lidiando con peculiaridades de la plataforma que codificando una nueva función.
¿Todavía no entiendo lo que quiero decir? Intente ejecutar esta simple consulta de cuadro de delimitación geoespacial en GAE: “Seleccione p del Punto p DONDE p.lat> = 5 AND p.lat = 2 y p.long <= 7" en GAE ". Si no espero miles de QPS, no me importa si esa consulta no" escala Google ", ¡no soy Google! ¡La plataforma debería permitirme ejecutar la maldita consulta!
Otro tipo de restricción viene cuando la plataforma te obliga a apegarte a alguna cadena de herramientas (por ejemplo, no puedes usar una lib que usa una clase no incluida en la lista blanca de GAE, tienes que usar el IDE oficial que es el infame Eclipse, estás fuera de suerte con Netbeans, está obligado a codificar contra la antigua especificación Servlet 2.5, para GAE / J debe usar JDO o JPA o Datastore API que nunca podrá salir de GAE).
* Más restricciones. No puede crear archivos de disco, no puede abrir sockets (hay una idea general de que esto se ha eliminado, aún no lo he probado).

Para una aplicación de tamaño razonable, consideraré seriamente obtener una caja (caja virtual) y construir mis cosas desde cero en Node, Python o cualquier otro lenguaje / marco que esté a mi disposición.

Todo se reduce al tamaño y la naturaleza de la aplicación, el conjunto de habilidades de los ingenieros disponibles, el presupuesto, la fecha límite y usted.