Google App Engine Architecture

App Engine
Tags:

Today’s entrance is about Google App Engine architecture (#GAE). Mainly, this entrance is theory, no code. If you remember, on the entrance related to Google Code Lab I defined what is GAE:

Google App Engine is a platform as a service cloud computing platform for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web applications as the number of requests increases for an application, App Engine automatically allocates more resources for the web application to handle the additional demand.

If you need to get the best of GAE, it’s very important that you know how it works, and that’s what I would like to try in this entrance, and in futures … trying to create a few examples of GAE and Python.

The best engineers of the world are working for you

Cuando inicias una aplicación o un proyecto web, a priori, desconoces el éxito de la misma. Pero por un momento, imagina que tienes que procesar 2 millones de peticiones (exitazo!!) …. ¿podrá con todas ellas tu servidor contratado? A los pocos días, no son 2 sino 4 millones …. ¿está preparada la infraestructura de servidores para aguantarlo? No contabas con estos problemas, ¿verdad? Pero hay más …. además de saber programar tu aplicación web de éxito, …. tienes optimizada tu arquitectura de servidores, estabilizada la carga entre ellos, etc, etc ? Demasiados problemas que solucionar, a pesar del éxito que has tenido!

Otro caso real (y típico) es que en momentos muy puntuales, tu aplicación multiplique por 1.000 su tráfico normal ¿lo aguantan tus servidores? Pero … ¿y si de pronto tienes un problema y se te para un servidor …. y se cae tu aplicación web? Además, desconoces en momento exacto en que se procudirá dicho pico de tráfico en tu web.

Una aplicación web que tenga éxito y que no sea capaz de aguantar su tráfico puede convertirla en un auténtico fracaso.

Aquí es cuando entra en acción Google App Engine, cuyas dos características principales (hay más) son escalabilidad y confianza (scale and reliability), así que … si tu aplicación web sufre estos problemas que te he contado antes, deberias valorar muy seriamente que GAE es lo que necesitas: Google se encarga (por tí) de toda la infraestructura de servidores, de que no te falta máquinas que respondan a tus peticiones incluso en picos, etc, etc …. y con un coste de eficiencia muy bajo: los mejores ingenieros del mundo trabajando para ti!!

Volvemos al lenguaje de calle: Google tiene infraestructura más que de sobra, y te la alquila!!

Ahora, compara lo que a tí te costaría tener personal para que monte la arquitectura que necesitas, y el coste del hardware: te lo presta Google! Algunas cosas son gratis, y otras, depende del uso que hagas.

GAE encapsula para ti

GAE te proporciona una plataforma donde “evitas” todos los problemas de compra de hardware, administración de servidores, picos de tráfico, replicación, de capacidad, coste de eficiencia, almacenamiento, … que para los desarrolladores pueden ser verdaderos dolores de cabeza (Google lo hace por tí!), pues un arquitecto de sistema no tiene porqué saber programar, ni un desarrollador tiene porqué saber de arquitectura de sistemas. Así que, desde mi punto de vista como desarrollador, yo creo que es todo un acierto GAE!

Conforme tu aplicación necesita responder a la demanda de peticiones, se van arrancando o parando máquinas virtuales de forma que los recursos empleados siempre están optimizados a la demanda real de tu aplicación.

Para los que suelen (y yo me incluyo) con bases de datos relacionales, cambiar el desarrollo tradicional a GAE supone un cambio en tu forma de trabajar (en cierto modo, hasta radical), pues no disponemos de un gestor de bases de datos, sino de Datastorage (de la que hablamos ampliamente en otra entrada).

GAE no es sólo un lugar donde alojar tu web de forma gratuita (o con el pago por uso, a muy buen precio), sino que trabajar en ello te “anima” a usar las buenas prácticas de Google para escalabilidad y confianza, y uno de los precios que hay que pagar es usar un modelo no relacional como es Datastorage o BigTable (si necesitas una base de datos relacional, puedes usar Cloud SQL, que es un MySQL y cuyo coste depende del uso que tengas).

Los distintos datacenters que Google tiene distribuidos por el mundo irán replicando tu aplicación en caso de que tengas clientes repartidos por todo el mundo, pero lo que recibe cada usuario será de su datacenter más próximo, reduciendo el tiempo de la petición. El balance de carga entre servidores corre por cuenta de Google, al igual que hace con los servicios de Google como Search, Maps, ….

Antes del resumen, comentar que hay que conocer cómo es el funcionamiento de GAE a nivel de front-end y de back-end, para conocer los beneficios de esta plataforma de desarrollo.

A summary about GAE

GAE characteristics are:

  • Scalability
  • Confianza
  • Eficiency costs
  • Integration with other services (of course, Google services)
  • Job queue

The design og Golgle Cloud is a new way of developing apps, the Google way, and the benefits associated are:

  • Availability 24 / 7
  • easy to develop and deploy
  • No initial costs
  • No management for updates, bugs, …

And … that’s all for today!