google-app-engine - google app engine tutorial español
¿Cuándo elegir App Engine en funciones de nube? (2)
App Engine se adapta mejor a las aplicaciones, que tienen numerosas piezas de funcionalidad que se comportan de varias maneras interrelacionadas (o incluso no relacionadas), mientras que las funciones de nube son más específicamente funciones de un solo propósito que responden a algún evento y realizan alguna acción específica.
App Engine ofrece numerosas opciones de idioma y más opciones de administración, mientras que las funciones de la nube están limitadas en esas áreas.
Podría replicar fácilmente las Funciones de la nube en App Engine, pero la replicación de una aplicación de App Engine a gran escala utilizando un grupo de Funciones de Poder discretas sería complicada. Por ejemplo, el backend de Spotify está basado en App Engine.
Otra forma de decirlo es que para una aplicación significativamente grande, comenzar con un sistema más complejo como App Engine puede llevar a una base de código que sea menos compleja, o al menos, más fácil de manejar o entender.
En última instancia, ambos se ejecutan en una infraestructura subyacente similar en Google, y depende de usted decidir cuál funciona para la tarea en cuestión. Además, no hay nada que le impida mezclar elementos de ambos en un solo proyecto.
Lo siento, si esta es una pregunta ingenua, pero he visto un montón de charlas del personal de Google y aún no entiendo por qué demonios usaría AE en lugar de CF.
Si lo entendí correctamente, todo el concepto de estos dos servicios es construir una "arquitectura de microservicio".
- Tanto CF como AE son apátridas
- Ambos deben ejecutarse durante un período de tiempo limitado.
- Ambos pueden interactuar con dbs y otras apis gcp.
Sin embargo, AE debe ser envuelto en un servidor propio. Básicamente, utiliza una gran cantidad de complejidades además de las mismas capacidades que el CF. Entonces, ¿cuándo debo usarlo en lugar de FQ?
Las funciones en la nube (CF) y el motor de aplicaciones de Google (GAE) son herramientas diferentes para diferentes trabajos. Usando la herramienta adecuada para el trabajo suele ser una buena idea.
Conducir un clavo con alicates puede ser posible, pero no será tan conveniente como usar un martillo. De manera similar, sería posible construir una aplicación compleja con CF, pero definitivamente sería más conveniente hacerlo con GAE.
Los CF tienen varias desventajas en comparación con GAE (en el contexto de la creación de aplicaciones más complejas, por supuesto):
- están limitados a
Node.JS
(y, más recientemente, también a Python), GAE admite otros lenguajes de programación populares - realmente están diseñados para ser ligeros, piezas independientes de funcionalidad, intentar construir aplicaciones complejas usando tales componentes rápidamente se vuelve "incómodo". Sí, el contexto de interrelación para cada solicitud individual debe restaurarse también en GAE, solo GAE se beneficia de medios más convenientes para hacer lo que no está disponible en los CF. Por ejemplo, la gestión de sesiones de usuario, como se explica en otros comentarios
- Las aplicaciones GAE tienen un contexto de aplicación que sobrevive en solicitudes individuales, los CF no tienen eso. Dicho contexto hace que el acceso a ciertos servicios de Google sea más eficiente / eficiente (o incluso posible) para las aplicaciones GAE, pero no para los CF. Por ejemplo memcached.
- la disponibilidad del contexto de la aplicación para las aplicaciones GAE puede admitir bibliotecas cliente más eficientes / con rendimiento para otros servicios que no pueden funcionar con CF. Por ejemplo, el acceso al almacén de datos utilizando la biblioteca de clientes
ndb
(solo disponible para aplicaciones env estándar de python GAE) puede ser más eficiente / eficiente que usar la biblioteca de clientes del almacén de datos genérico. - GAE puede ser más rentable ya que tiene un precio "al por mayor" (basado en horas de instancia, independientemente de cuántas solicitudes atiende una instancia en particular) en comparación con el precio "minorista" de los CF (donde cada invocación se cobra por separado)
- los tiempos de respuesta pueden ser típicamente más cortos para las aplicaciones GAE que para los CF ya que normalmente la instancia de la aplicación que maneja la solicitud ya se está ejecutando, por lo tanto:
- el contexto de la aplicación GAE no necesita ser cargado / restaurado, ya está disponible, los CF necesitan cargarlo / restaurarlo
- el código de manejo (la mayoría de las veces) ya está cargado, el código de los CF aún debe cargarse. No estoy seguro de esto, aunque supongo que depende de la implementación subyacente.