prices - ¿Rompiendo el bloqueo de Google App Engine Python?
google cloud app engine prices (9)
AppDrop es un puerto de prueba de concepto de AppEngine para Amazon Web Services / Elastic Computing, completado en abril de 2008. Utiliza un archivo plano en lugar de BigTable y se ejecuta en una sola instancia, por lo que hay problemas de escala; pero su desarrollador dice que solo le tomó cuatro días, y tal vez otras limitaciones pueden abordar estas limitaciones.
¿Existen pautas para escribir el código Python de Google App Engine que funcionaría sin la infraestructura de Google en otras plataformas?
¿Hay algún intento conocido de crear un marco de código abierto que pueda ejecutar aplicaciones diseñadas para Google App Engine en otras plataformas?
Editar:
Para aclarar, la pregunta realmente es:
Si desarrollo una aplicación en Google App Engine ahora, ¿podré migrar a otra plataforma más adelante, o es un bloqueo?
AppScale es la implementación de código abierto más madura de Google App Engine. Ha estado en desarrollo desde 2008 y actualmente es compatible con los cuatro idiomas: Python, Java, Go y PHP. Tiene usuarios ejecutando su aplicación en producción hoy.
Las Preguntas frecuentes explican qué API son compatibles y qué falta: https://github.com/AppScale/appscale/wiki/FAQs
(Descargo de responsabilidad: trabajo en el proyecto)
Echa un vistazo a las typhoonae . está en versión beta, pero es bastante útil: movimos una de nuestras aplicaciones al servidor interno que ejecuta esta pila.
El código debería ser mayormente portátil (hacen un buen trabajo al indicar qué módulos no puede usar en AppEngine y qué código específico de AppEngine corresponde a qué módulos prohibidos), pero el objetivo principal de AppEngine es acceder a la infraestructura de Google . No tiene mucho sentido escribir su código en las restricciones de AppEngine si no va a utilizar su infraestructura.
Hasta ahora, he encontrado un host experimental llamado AppDrop que es capaz de albergar proyectos de google app-engine. Esto debería significar que al menos es posible ejecutar proyectos de motores de aplicaciones fuera de la infraestructura de Google.
Sin embargo, esto claramente no es adecuado para la producción.
Hay una serie de componentes necesarios para hacer una aplicación completamente portátil:
- El propio entorno de ejecución. Esto se puede portar de manera relativamente simple, configurando un servidor CGI o FastCGI que emule el entorno de App Engine (que a su vez es CGI básicamente ligeramente mejorado). La mayor parte del código para hacer esto ya está en el SDK. Desafortunadamente, no hay un kit de herramientas preempaquetado fácil para esto todavía.
- El almacén de datos. De lejos la API más complicada de portar. Hay varios esfuerzos en curso: AppScale ejecuta en EC2 / Eucalyptus / Xen y utiliza un servidor HyperTable o HBase; todavía tiene mucha calidad beta y no distribuyen el conector de datos por separado (es el comienzo de una solución completa para ejecutar su aplicación en su propia nube). Jens está / estaba escribiendo un backend SQLite , y está mi propio proyecto, BDBDatastore , que usa BDB-JE como backend, y es completamente funcional (aunque de calidad beta). AppDrop , que otros han mencionado, simplemente usa el servidor de desarrollo como backend, y por lo tanto no es adecuado para el uso de producción.
- La API de los usuarios necesita ser reemplazada por otra cosa, como una API basada en OpenID. De nuevo, bastante simple, pero todavía no hay soluciones prefabricadas.
- La API de Memcache necesita un backend que use backends de C memcache estándar.
- Las otras API tienen backends perfectamente funcionales como parte del SDK, por lo que realmente no necesitan portabilidad.
- El soporte de Cron también necesitaría implementarse, al igual que el procesamiento en segundo plano, XMPP, etc., cuando estén disponibles.
Como puede ver, hay mucho trabajo por hacer, pero no hay barreras fundamentales para hacer que su aplicación App Engine se ejecute fuera del entorno de Google. De hecho, si está interesado, es más que bienvenido a participar. Yo y otros tenemos planes de combinar las soluciones para las distintas piezas en una única solución ''OpenEngine'' para alojar sus propias aplicaciones.
Hice la migración inversa de Vanilla Unix al motor de la aplicación recientemente utilizando los recursos de WHIFF. Básicamente, configure cualquier plataforma dependiente como recurso y luego intercambie / reemplace los recursos en diferentes configuraciones.
ver también
para un ejemplo detallado de intercambio de recursos / configuración. (Nota: los enlaces pueden desaparecer con el tiempo, la aplicación es experimental).
Puede crear aplicaciones AppEngine utilizando el framework Python de Django (aunque la versión compatible está un poco por detrás de la versión más reciente de Django). Donde se pierde la portabilidad (al menos en este momento) es cuando se usa GQL / BigTable para la persistencia. Esta es la plataforma de base de datos propietaria de Google. Como mencionó Hank, esta es una de las razones más importantes para usar AppEngine, pero también es el punto de bloqueo más grande.
Aquí hay un par de enlaces al soporte de Django en AppEngine y GQL / BigTable:
Utilice un marco de alto nivel que funcione en App-Engine. De esa manera, puedes portar tu código a otros servidores cuando quieras.
django ha sido parcheado y portado para trabajar en el proyecto de parche de Appengine y es el FW más utilizado en appengine.
Es posible que desee consultar esta introducción paso a paso para ejecutar una aplicación de django en el motor de la aplicación
En lo que respecta a la infraestructura paralela para ejecutar una aplicación de motor de aplicaciones, todavía está muy lejos. App Engine en sí no es tan popular como la gente lo creía y Google quería que lo fuera. Además, es más difícil desarrollarlo en el marco de aplicación web integrado que en django.
Es bastante improbable ver una infraestructura paralela para ejecutar la aplicación del motor de aplicaciones, al menos durante los próximos años. Más bien, es probable que veamos que Django y otros marcos populares funcionen de manera inmediata en el motor de la aplicación y el trabajo en este momento está actualmente en curso en el proyecto referido.