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.
- ¿Dónde puedo encontrar trabajos de diseño web?
- ¿Por qué no es suficiente obtener un trabajo de desarrollo, si estoy familiarizado con los lenguajes de programación, la sintaxis y puedo construir una aplicación web CRUD?
- ¿Qué tipo de cosas necesito hacer en las bibliotecas de JavaScript y JavaScript si obtengo un trabajo como front-end junior?
- ¿Cuál es el método para resolver problemas con CORS usando AngularJS con una API externa de recetas de alimentos?
- Ruby on rails: en la cúspide de 2014, ¿vale la pena invertir el tiempo de la tarde (y algunos fines de semana) en aprender RoR?
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.