Pregunta

¿Qué alternativas existen para GAE, dado que ya tengo un buen código de trabajo que me gustaría mantener? En otras palabras, estoy cavando python. Sin embargo, mi caso de uso es más que un número reducido de solicitudes, un caso de uso de tipo de uso de CPU más alto y me preocupa que no pueda permanecer con App Engine para siempre. He escuchado a muchas personas hablar sobre Amazon Web Services y otros tipos de proveedores de nube, pero me cuesta mucho ver dónde la mayoría de estas otras ofertas brindan la gama de servicios (consulta de datos, autenticación de usuarios, escalado automático) que App El motor proporciona. ¿Cuáles son mis opciones aquí?

¿Fue útil?

Solución

No creo que haya otra alternativa (con respecto a la portabilidad del código) a GAE en este momento ya que GAE pertenece a una clase propia. Claro que GAE es la computación en la nube, pero veo a GAE como un subconjunto de la computación en la nube. El EC2 de Amazon también es computación en la nube (al igual que los aceleradores Joyent, Slicehost Slices), pero obviamente también son dos bestias diferentes. Así que ahora mismo estás en una situación que requiere repensar tu arquitectura según tus necesidades.

Los beneficios inmediatos de GAE son que esencialmente no requiere mantenimiento, ya que se relaciona con la infraestructura (servidor web escalable y administración de bases de datos). GAE está más adaptado a aquellos desarrolladores que solo desean centrarse en sus aplicaciones y no en el sistema subyacente. De una manera, puede considerar que el desarrollador es amigable. Ahora también debe decirse que estas otras soluciones de computación en la nube también intentan permitirle preocuparse por su aplicación tanto como desee, proporcionando imágenes / plantillas de VM. En última instancia, sus necesidades determinarán el enfoque que debe adoptar.

Ahora, con todo esto en mente, también podemos construir soluciones híbridas y soluciones alternativas que también puedan satisfacer nuestras necesidades. Por ejemplo, GAE no parece directamente adecuado para las necesidades específicas de esta aplicación que usted describe. En otras palabras, GAE ofrece un número relativamente alto de solicitudes, un número bajo de ciclos de CPU (no estoy seguro de si la versión de pago será diferente).

Sin embargo, una forma de enfrentar este desafío es mediante la creación de una solución personalizada que incluya a GAE como la interfaz y a Amazon AWS (EC2, S3 y SQS) como backend. Algunos dirán que también puede construir su pila completa en AWS, pero eso también puede implicar volver a escribir muchos códigos existentes. Además, como solución alternativa, una stackoverflow post anterior describe un método para simular tareas en segundo plano en GAE. Además, puede consultar Mapa HTTP / Reducir para distribuir la carga de trabajo también.

Otros consejos

AppScale

AppScale es una plataforma que permite a los usuarios implementar y alojar sus propias aplicaciones de Google App Engine. Se ejecuta automáticamente en Amazon EC2 y Eucalyptus, así como en Xen y KVM. Ha sido desarrollado y mantenido por AppScale Systems . Es compatible con las plataformas Python, Go, PHP y Java Google App Engine.

http://github.com/AppScale/appscale

Mientras tanto ...

... es más o menos el 2015 y parece que los contenedores son el camino a seguir. Están surgiendo alternativas a GAE:

Google ha lanzado Kubernetes , un software de programación de contenedores desarrollado por ellos para administre los contenedores GCE , pero también se puede usar en otros clústeres.

Hay algunos PaaS venideros en Docker como

Cosas interesantes para vigilar.

Un poco tarde, pero le daría una oportunidad a Heroku:

  

Heroku es una plataforma de aplicación en la nube políglota. Con Heroku, tu   No necesito pensar en servidores en absoluto. Puedes escribir aplicaciones usando   Prácticas modernas de desarrollo en el lenguaje de programación de su   opción, respaldarla con recursos adicionales como bases de datos SQL y NoSQL,   Memcached, y muchos otros. Manejas tu aplicación utilizando el Heroku.   herramienta de línea de comandos y se implementa el código utilizando el control de revisión Git   Sistema, todo se ejecuta en la infraestructura Heroku.

https://www.heroku.com/about

A partir de 2016, si está dispuesto a agrupar PaaS (plataforma como servicio ) y FaaS (funciona como un servicio) en el mismo categoría informática sin servidor , entonces tiene algunas opciones FaaS.

Propietario

AWS Lambda

  

AWS Lambda le permite ejecutar código sin aprovisionar ni administrar servidores. Usted paga solo por el tiempo de cálculo que consume, no hay cargo cuando su código no se está ejecutando. Con Lambda, puede ejecutar código para prácticamente cualquier tipo de aplicación o servicio backend, todo con administración cero. Simplemente cargue su código y Lambda se encargará de todo lo necesario para ejecutar y escalar su código con alta disponibilidad. Puede configurar su código para que se active automáticamente desde otros servicios de AWS o puede llamarlo directamente desde cualquier aplicación web o móvil.

AWS Step Functions complementa AWS Lambda.

  

AWS Step Functions facilita la coordinación de los componentes de aplicaciones y microservicios distribuidos mediante flujos de trabajo visuales. Las aplicaciones de compilación a partir de componentes individuales que realizan una función discreta le permiten escalar y cambiar aplicaciones rápidamente. Step Functions es una forma confiable de coordinar componentes y recorrer las funciones de su aplicación. Step Functions proporciona una consola gráfica para organizar y visualizar los componentes de su aplicación como una serie de pasos. Esto facilita la creación y ejecución de aplicaciones de varios pasos. Step Functions activa y rastrea automáticamente cada paso, y vuelve a intentarlo cuando hay errores, por lo que su aplicación se ejecuta en orden y como se espera. Step Functions registra el estado de cada paso, de modo que cuando las cosas van mal, puede diagnosticar y depurar problemas rápidamente. Puedes cambiar y agregar pasos sin siquiera escribir código

Funciones de Google Cloud

A partir de 2016 está en alfa.

  

Google Cloud Functions es una solución de cómputo asíncrona, liviana y basada en eventos, que le permite crear funciones pequeñas de un solo propósito que responden a eventos de la nube sin la necesidad de administrar un servidor o un entorno de ejecución. Los eventos de Google Cloud Storage y Google Cloud Pub / Sub pueden activar las funciones de la nube de forma asíncrona, o puede usar la invocación HTTP para la ejecución sincrónica.

Funciones de Azure

  

Una experiencia informática sin servidor basada en eventos para acelerar su desarrollo. Puede escalar según la demanda y usted paga solo por los recursos que consume.

Abrir

Serverless

  

Serverless Framework le permite implementar funciones de autoescalado, pago por ejecución, controladas por eventos en cualquier nube. Actualmente, admitimos Lambda del servicio web de Amazon y nos estamos expandiendo para admitir a otros proveedores de la nube.

IronFunctions

  

IronFunctions es una plataforma de computación sin servidor de código abierto para cualquier nube: privada, pública o híbrida.


Queda por ver qué tan bien compite FaaS con CaaS (contenedor como servicio). El primero parece más ligero. Ambos parecen adecuados para las arquitecturas de microservicios.

Anticipo que las funciones (como en FaaS) no son el final de la línea, y que en muchos años veremos más abstracciones de servicios, por ejemplo. desarrollo solo para pruebas, seguido de escenarios en lenguaje sencillo.

Elastic Compute Cloud o EC2 de Amazon es una buena opción. Básicamente, ejecuta máquinas virtuales de Linux en sus servidores que puede controlar a través de una interfaz web (para encender y apagar) y, por supuesto, acceso a través de SSH o lo que sea que configure normalmente ... Y como es una instalación de Linux que usted controla, por supuesto puede ejecutar Python si lo desea.

Merece la pena considerar Microsoft Windows Azure. Me temo que no lo he usado, así que no puedo decir si es bueno y deberías tener en cuenta que es un CTP en este momento.

Consulte aquí.

Si está interesado en la nube, y tal vez quiera crear su propia producción y / o prueba, debe consultar Eucalyptus . Supuestamente es un código compatible con EC2 pero de código abierto.

También puede querer echar un vistazo a AWS Elastic Beanstock - tiene una equivalencia más cercana a La funcionalidad de GAE, en el sentido de que está diseñada para ser PaaS, en lugar de IaaS (es decir, EC2)

Estaría más interesado en ver cómo App Engine se puede acoplar fácilmente con otro servidor utilizado para solicitudes intensivas de CPU.

TyphoonAE está intentando hacer esto. No lo he probado, pero aunque todavía está en versión beta, parece que al menos está en desarrollo activo.

El cambio a la computación en la nube está ocurriendo tan rápidamente que no tiene tiempo que perder para probar diferentes plataformas. Le sugiero que pruebe Jelastic si también está interesado en Java.

Una de las mejores cosas de Jelastic es que no necesita realizar ningún cambio en el código de su aplicación, excepto los cambios en la funcionalidad de su aplicación, pero no por la razón por la cual la plataforma elegida lo exige. Con referencia a esto, realmente no pierde su tiempo. El proceso de implementación es impecable y puede implementar su archivo .war en cualquier otro lugar. El uso de GAE requiere que modifique la aplicación en función de las necesidades de su sistema. En caso de que, si resulta que está trabajando con Java y comienza a buscar una plataforma más flexible, Jelastic es una alternativa compatible.

También puede usar el proyecto Red Hat's Cape Dwarf, para ejecutar aplicaciones GAE sobre el servidor de aplicaciones Wildfly (anteriormente JBoss) sin modificaciones.

Puede verlo aquí:

http://capedwarf.org/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top