Nueva entrada teórica sobre Google App Engine, y esta vez destripamos sus componentes. En el siguiente cuadro puedes ver la arquitectura de Google App Engine, desde que llega una petición y todo lo que ocurre en milésimas de segundos para el usuario.
Una de las características asociadas a GAE es el uso de la arquitectura de Google, esto es, usar sus datacenters, lo que supone una magnífica ventaja en tu aplicación, porque los usuarios reciben sus solicitudes de los datacenters más próximos, donde Google Front End pregunta a Edge Cache (es la tecnología clave que está detras de la rapidez de Google en responder, que empezó a salir a la luz en 2008, y aquí puedes leer más) por lo que tiene que responder.
Google Front End de un datacenter se comunica con App Engine Front End del datacenter donde está ubicada la aplicación, y que es la que se comunica con las instancias de la aplicación, que gestiona App Master.
La segunda característica que debes conocer son los servidores estáticos, que sólo sirven contenido estático, y es todo aquello que es definido como tal en app.yaml cómo static_dir o static_files. Esto es muy importante, sobre todo porque acelera la respuesta del servidor, al no requerir!
El front-end de App engine
Una de las ventajas del front-end en GAE es que el trabajo que se le requiere a la máquina es cómo un 10% respecto al volúmen, básicamente porque las aplicaciones definen contenido estático, y las instancias son creadas y eliminadas dinamicamente. Esto facilita la rapida respuesta a la petición, que por supuesto, sucede todo por cortesía de Google, dado que el usuario no puede configurar absolutamente nada de esto.
El back-end de App Engine
La parte del back-end de App Engine es la que permite ejecutar acciones batch, entre otras cosas.
App Master
Quizás es lo menos conocido, pero la realidad es que App Master es el que se encarga de gestionar todo, tanto el contenido estático de los static servers, como el App Engine Front End, y el App Server, así como de gestionar las instancias de las aplicaciones (según la demanda de peticiones).
Las instancias de aplicaciones son similares a las máquinas virtuales, porque abastecen un entorno de ejecución de la aplicación con memoria dedicada, totalmente controlable, pero a su vez, el usuario no tiene que preocuparse por el sistema operativo de dicha instancia, ni por su manejo, ni actualizacion, ni temas se seguridad, … etc, etc …. tal y como te conté en la entrada anterior, que eso es el trabajo de los mejores ingenieros del mundo y que están a tu servicio.
Instancias Front end
Son las que tienen más limitaciones, porque toda aquella solicitud tiene solo 60 segundos para enviarse. Todas las aplicaciones tienen una cola de peticiones, que se van gestionando con las instancias. Cuando la cola se llena, se van generando instancias Front-end para responder muy rápidamente a dicha demanda. Hay que configurar dos propiedades para las colas: tiempo de latencia en cola, y las instancias de inactividad (idle instance), y que es el número de instancias que se tienen activas, donde puedes poner un mínimo y un máximo.
Instancias back-end
La parte del back-end está creada y borrada estaticamente, lo que supone un mayor coste, pero a cambio, es muy deseable para realizar procesoss batch, incluida la programación a cierta hora, momento, …
El tiempo de respuesta es clave en todo esto para la gestión de instancias. Cuando se supera el tiempo, se inicia una nueva instancia que supone la carga de librerias, etc, etc, … antes de empezar a prestar servicio. Normalmente, el tiempo de respuesta es inferior a un segundo, pero si tiene que cargar demasiadas librerias, este tiempo de respuesta puede alargarse a 30 o 60 segundos, según las necesidades de la aplicación.
Y termino ya ….
Todo esto es demasiado complejo para un desarrollador, pero no está mal conocer la base de Google App Engine. Aquí tienes un PDF con más información, y aquí otro, donde te detallan más teóricamente todo lo visto aquí, que es bastante, y además, de cierta complicación.
No es fácil, y hay que cambiar un poco el chip, … ¿y tu, ya lo has probado? Cuentame qué haces!