¿Qué tan difícil es transferir el código del motor de la aplicación Google a Amazon EC2?

EC2 y AppEngine son muy diferentes. EC2 es IaaS (infraestructura como servicio) que proporciona máquinas virtuales bajo demanda con acceso completo a la raíz. Depende de usted configurar estas máquinas virtuales, instalar y administrar sus aplicaciones en ellas.

AppEngine es PaaS (plataforma como servicio) en el que implementa su software (escrito en sus idiomas compatibles: Python o Java) en la infraestructura de Google y lo alojan y administran por usted.

AppEngine tiene muchas más manos libres desde el punto de vista de la administración, pero también es mucho menos flexible en términos de lo que puede hacer con él. AppEngine tampoco ofrece algunas características que pueden ser esenciales como dominios SSL personalizados (esta es una característica que agregarán pronto), y limita las cosas que puede hacer dentro de su entorno a través de una API de caja blanca de subconjunto Java / Python (por ejemplo, API de socket). Si su software puede ajustarse al entorno y las características más restrictivas de AppEngine, es una excelente opción.

Eche un vistazo a http://code.google.com/p/appscale/ : es la versión OpenSource de AppEngine que se ejecuta en EC2. No necesitará cambiar su aplicación AppEngine, pero necesitaría mantener AppScale en EC2 usted mismo y probablemente combatir los problemas que AppEngine de Google maneja de manera más efectiva que AppScale. Todavía no conozco ninguna empresa de alojamiento que ofrezca alojamiento comercial AppScale, ya que de todos modos tiene que ser más caro que AppEngine.

En mi humilde opinión, sería un gran dolor cambiar entre los dos. Claro, teóricamente podrías mover todas tus cosas de django con bastante facilidad, pero tendrías que reescribir todas tus interacciones con el almacén de datos.

AppEngine realmente no utiliza ninguna biblioteca SQL estándar, por lo que al menos tendría que cambiar todo ese código. También creo que sería un gran dolor cambiar todos sus datos. Tendría que hacer que el descargador masivo funcione en AppEngine y luego descubrir cómo portar esos datos a MySql. No sería tan simple como simplemente copiar archivos de datos porque la estructura de los datos seguramente sería diferente.

Luego, si está utilizando la Cola de tareas para el procesamiento en segundo plano, tendrá que volver a escribirla para usar algo como apio y rabbitmq.

Si pregunta esto porque se pregunta qué tan fácil sería cambiar de uno a otro rápidamente, diría que no debe contar con que sea simple. Probablemente consideraría reescribir mi aplicación si tuviera que cambiar entre las dos.

Mi actitud siempre ha sido usar AppEngine en las primeras etapas solo para que algo funcione. Luego, si parece prometedor, haga otra mirada a cualquier plataforma que esté usando. Para algunas cosas, AppEngine es excelente incluso a gran escala, y sus restricciones no son un problema. Otros, no tanto. Hay muchas otras respuestas de AppEngine en Quora sobre qué aplicaciones deberían ir en AppEngine y cuáles no, así que no voy a entrar en eso aquí.