¿Cuál es la diferencia entre Google App Engine, Firebase y Google Endpoints?

Esto se vuelve cada vez más confuso. Me desarrollo en estas plataformas todos los días, e incluso tengo problemas con algunas de las definiciones de nomenclatura y área.

La forma básica en que lo pienso ahora es así; cuanto más uses, más descubrirás, pero aquí está la idea general que funciona para mí:

  • Google Application Engine es un SDK y un entorno de tiempo de ejecución para su aplicación web. Aloja el lado del cliente (HTML, JavaScript, etc., todo funciona como Angular React JQuery D3 lo que sea) páginas / scripts y código del lado del servidor (python, java, etc.). Por lo tanto, puede pensar en el GAE como un “servidor web”. No tienes que configurar nada, solo creas un proyecto y vuelcas tu código, y funciona. También puede configurarlo para escalar una variedad de formas; puede usar una configuración mínima (por ejemplo, para un prototipo o algo similar), que puede costar poco o nada para operar, o puede usar una configuración mucho más robusta (asignaciones de memoria más grandes por “instancia”, escalado automático y todo eso) para material de producción real.

    Puede ser útil pensar en el DataStore (un mecanismo de almacenamiento basado en objetos) como parte del GAE. Usando la API NDB (solo otra api de base de datos bastante fácil de usar), puede leer y escribir “modelos” o “entidades” (objetos que heredan del Modelo NDB) hacia y desde el DataStore. Este mecanismo de almacenamiento es muy útil para datos estructurados porque siempre puede pensar en “objetos” y cómo se relacionan en lugar de tener que cambiar de contexto entre objetos y consultas SQL y todo eso. Básicamente solo dice: “MyUserModel.put ()” y simplemente funciona (más o menos). Puede asignar objetos primarios y secundarios para que puedan ser manipulados como “grupos de entidades” y así sucesivamente.

    También viene con algunas otras cosas útiles que esperaría de un entorno de servicio web típico en estos días y otras, como el servicio SMTP (para que pueda enviar correos electrónicos y otras cosas de su código muy fácilmente), ChannelAPI, que es una especie de un mecanismo fácil de hacer sockets web que le permite enviar actualizaciones automáticas a clientes conectados (para cosas como aplicaciones de mensajería, etc.), colas de tareas (colas asíncronas que le permiten realizar operaciones que no necesitan estar disponibles sincrónicamente para el usuario ) y esas cosas.

    Por lo tanto, el GAE por sí solo, sin configurar ningún otro servicio de ningún tipo, le brinda la capacidad de desarrollar localmente con el SDK de GAE y desplegarlo en el entorno de producción GAE, y muchos mecanismos útiles para garantizar que su aplicación funcione y escale bueno, etc.

    Sin embargo … es posible que necesite otros servicios. Pienso en estos como “Google Cloud Services”.

    Tenga en cuenta que puede implementar sus aplicaciones como instancias automáticas en el entorno general de Compute Engine, o puede empaquetar su aplicación en un contenedor y ejecutarla en el motor de contenedor. Esto se suma a la complejidad de la configuración, el empaquetado y el mantenimiento de su aplicación, pero le brinda una flexibilidad muy poderosa (en ese tipo de máquina virtual moderna de “contenedor”).

  • Google Cloud Services incluye varias cosas, pero probablemente los más utilizados son los servicios CloudSQL y Cloud Storage.

    CloudSQL es el tipo de base de datos más típico al que puede estar acostumbrado (de hecho, es básicamente MySQL básico). Lo usas para escribir filas tabulares. Por lo tanto, en su aplicación, es posible que desee utilizar un modelo NDB para usuarios (con o sin entidades relacionadas y otras cosas), pero es posible que desee escribir una entrada de registro por el hecho de que el objeto se agregó, editó, lo que sea. Una tabla de CloudSQL es mucho mejor para esas entradas de registro. Por lo tanto, escribiría el modelo NDB en el almacén de datos y la entrada de registro en CloudSQL. No ofrece consultas complejas de alta gama, es más bien para escrituras rápidas de grandes cantidades de datos basados ​​en filas en las que es posible que desee realizar operaciones de reducción de mapas y / o informes, y así sucesivamente (DataStore no está destinado para eso) .

    Por supuesto, puede usar CloudSQL exclusivamente, o incluso escribir sus entradas de registro en el almacén de datos. Solo estoy relatando cómo he visto las tecnologías utilizadas como parte del trabajo que generalmente hago (y los documentos para estas tecnologías me validarán aquí).

    Cloud Storage es prácticamente solo almacenamiento de archivos. Se usa comúnmente para copias de seguridad de DataStore y CloudSQL. Simplemente configura su aplicación para escribir copias de seguridad (generalmente trabajos cron) en un “depósito” de almacenamiento en la nube, y solo sucede en el horario que especifique. Sin embargo, puede almacenar lo que quiera allí (en su mayor parte). Hay API para ello, etc. Los usuarios de Amazon S3 lo encontrarían muy familiar.

Todo viene con una interfaz basada en la web (excepto el SDK de desarrollo local, que es un software descargado, lo suficientemente fácil de usar, si alguna vez usó MAMP es muy similar, instala DataStore, debe instalar MySQL si está usando CloudSQL), le da estadísticas sobre su aplicación en ejecución, alertas, errores y trazas de registro, y todo ese tipo de cosas habituales.

  • Firebase es un animal interesante. Esencialmente es un entorno de aplicaciones llave en mano que hace más o menos lo que hace GAE + ChannelAPI, y puede aprovechar un conjunto creciente de mecanismos generales de GAE y servicios en la nube. Esta integración, hasta donde puedo ver, continuará siendo impulsada; la API del canal puede desaparecer algún día a favor del mecanismo Firebase (no me cites oficialmente sobre eso, pero tiene sentido si lo miras).

Google tiene una forma de marcar y cambiar el nombre de las cosas en incomprensibilidad (así que … cuando dices BigTable, te refieres a CloudSQL, y si lo haces, te refieres a la versión antigua o nueva, o algo más …), pero creo que esto La descripción general debería darle una idea.

Al final, realmente puedes pensar en ello como “un montón de cosas de desarrollo de aplicaciones que funcionan juntas para permitirte construir casi cualquier tipo de aplicación web que puedas imaginar”. He creado aplicaciones que han servido a millones de usuarios en y aplicaciones que manejan flujos de trabajo internos muy enfocados, como sistemas de administración de contenido y demás.

Para mí, es la mejor forma de crear aplicaciones; Hice mi primer contrato hace unos seis años (cuando nadie sabía lo que era realmente), y finalmente Google me obligó a hacerlo por ellos.

Por qué es ideal: soy codificador y arquitecto de aplicaciones, no soy un tipo de TI. En el pasado, como era codificador, se esperaba que supiera cómo configurar y configurar todo tipo de bases de datos (con sus controladores específicos del sistema operativo y toda esa agonía), versiones de Java y API relacionadas, cómo configurar y mantener servidores web (apache / LAMP / IIS / lo que sea) y así sucesivamente. Eso no es lo que hago y realmente no tengo tiempo para ser realmente bueno en eso; eso es lo que hacen los chicos de TI. Pero con frecuencia simplemente terminó siendo una parte importante de mi trabajo por defecto. Ahora no me preocupo por nada de eso; Todavía tengo que estar atento a los errores y ajustar las configuraciones para la escalabilidad, pero nunca tengo que tomar decisiones para reiniciar cuadros, actualizar las capacidades del lado del servidor, etc.

El único inconveniente de cualquier entorno llave en mano es, independientemente de las versiones y capacidades que ofrecen, eso es lo que utiliza. Si lo cambian o actualizan, es posible que deba responder con cambios en su código, etc.

Espero que ayude. Si tiene preguntas, póngalas como comentarios, veré qué puedo hacer.

Gran pregunta Los tres pueden usarse juntos y resolver diferentes problemas.

Firebase es una marca paraguas para varios productos en la nube diferentes que están dirigidos principalmente a desarrolladores de aplicaciones móviles. Su producto más conocido / original era una base de datos en tiempo real que las aplicaciones móviles podían usar sin escribir ningún código de servidor. Sin embargo, su misión se ha expandido para incluir una serie de otros productos, como Firebase Cloud Messaging (anteriormente conocido como Google Cloud Messaging) y Firebase Storage (una capa en la parte superior de Google Cloud Storage que agrega algunas características adicionales para hacerlo fácil de usar en aplicaciones móviles directamente sin un servidor adicional).

Google App Engine es un producto de plataforma como servicio (PaaS) diseñado para facilitar la escritura de aplicaciones web / software de servidor. Mientras que Firebase trata sobre el desarrollo “sin servidor” (con respecto al cliente, obviamente, Google mismo tiene servidores para hacer que Firebase funcione), App Engine es para aquellos que desean crear su propio software de servidor.

Cloud Endpoints es un servicio / tecnología para desarrollar, administrar y sindicar API. En particular, facilita la definición de API, la generación de bibliotecas de cliente en varios lenguajes de programación para interactuar con las API, y también el control de acceso. Se puede usar con Google App Engine, Google Compute Engine o Google Container Engine.

con Google App Engine (PaaS – plataforma como servicio) puede programar backend para su aplicación web. En GAE, se incluyen muchos servicios listos para usar, como base de datos NoSql, memcache, colas de tareas (trabajos en segundo plano), todo lo que se administra por usted, la configuración es muy mínima y la integración con otros productos de Google Cloud Platform como Google Cloud Storage, BigQuery, etc. .

Google Endpoints es una biblioteca con la que puede escribir API en su aplicación web GAE y se basa en la generación y uso de bibliotecas cliente para esas API en sus aplicaciones web, Android o iOS. por lo que Google App Engine y Google Endpoints van de la mano, aunque no es necesario usar Endpoints para escribir API, por otro lado, obtienes una interfaz similar a la que Google usa para la mayoría de sus API.

Firebase es básicamente una base de datos en tiempo real y, como en el caso de la escala y el alojamiento de GAE, se le proporciona.