Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en...

75
Una Introduccion a Google App Engine Google App Engine TecnoParque 2009

Transcript of Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en...

Page 1: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Una Introduccion aGoogle App Engine

Google App Engine

TecnoParque2009

Page 2: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Presentacion por

Page 3: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Agenda

1.Introduccion2.Por que usarlo?3.Tour de App Engine4.Diferencias?5.Conclusiones y Demos6.Preguntas

Page 4: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Qué es Google App Engine?

• Servicio que permite alojar aplicaciones Web en la infraestructura de Google

• PaaS - Platform as a Service• Computación en la nube – Cloud Computing

Page 5: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Google App Engine

Corre tus aplicaciones web en la infraestructura escalable de

Google

Page 6: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Introduccion

Page 7: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Fred SauerDeveloper [email protected]

Google App Engine

Usando la plataforma de Google para servir mejor a sus clientes

Page 8: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Google Apps + tus aplicaciones

Tus aplicacionesGoogle Apps

Arquitectura de Servicio de Google

Page 9: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

200K+ Desarrolladores, 80K+ Aplicaciones

Page 10: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Caso: mental_floss

Page 11: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Caso: mental_floss

Page 12: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Caso: mental_floss

~3,000,000 page views desde Yahoo!

Factura App Engine Marzo:

Page 13: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Por qué usar App Engine?

Page 14: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Desarrollar aplicaciones web es dificil

Page 15: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

WhiteHouse.gov/openforquestions

Page 16: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Pensando en escalabilidad...

....las herramientas, plataforma y diseno no importan mucho.

Con pocos usuarios....

Page 17: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Pensando en escalabilidad...

....HAY que disenar para escalabilidad

Muuuchos usuarios...

Page 18: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Pero el problema es...

Cuando?

http://digg.com/http://slashdot.org/http://meneame.net

Page 19: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Y el verdadero problema es...

Cuando ocurra.

Puedes darte el lujo de dejar todo de lado esperando?

Page 20: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Hecho para servir a tus clientes (y a ti)Google App Engine

• Escala• Rendimiento• Estandares• Rentable• Integracion• Servicios• Distribucion

Page 21: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Un Tour por App Engine

Page 22: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Java runtime

Duke, la mascota de JavaCopyright © Su n Micros ys t em s Inc., all right s res erv ed.

Page 23: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Python runtime

Page 24: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Java??

Page 25: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Y mucho mas!

Page 26: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Asegurando la portabilidad

Page 27: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Asegurando la portabilidad

• Java Servlet 2.4: A Java program that runs as part of a network service, typically an HTTP server and responds to requests from clients.

• JDO: Java Data Objects (JDO) is a specification of Java object persistence. Both an Object-relational mapping standard and a transparent object persistence standard.

• JPA: An Object-relational mapping (ORM) standard

• JCACHE: Specifies API and semantics for temporary, in memory caching of Java objects, including object creation, shared access, spooling, invalidation, and consistency across JVM's.

Page 28: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Herramientas De Desarrollo en Java

+

Page 29: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Google Plugin para Eclipse

Page 30: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Google Web Toolkit (GWT)

Page 31: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Depurando GWT en el navegador

Page 32: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Y mas de GWT...

En una proxima conferencia :)

Page 33: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Una cita para recordar

“The fastest code is thatwhich does not run.”

(El codigo mas rapido es aquel que nunca se

ejecuta) – Joel Webber, co-creador GWT

Page 34: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Ejemplo (2 mins)

Demo en vivo de una aplicación con el Runtime de Java usando el Plugin.

Page 35: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Python Runtime

•Eclipse•PyDev

+

Page 36: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Django

•Framework en Python•El más popular•Migración de aplicaciones existentes•Plantillas. MVC•Administración•CRUD•Sesiones, sitios, redirects, etc.•App-Engine-Patch

Page 37: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Servicios

+ Integracion a Google Apps (Integracion)+ Database Import (portabilidad)+ SDC (conectando la nube con la intranet)+ Dashboard (Administracion)+ App Engine Status (Administracion)

Page 38: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Integrando a Google Apps

http://appid.appspot.com/

http://yourapp.yourdomain.com/

Page 39: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

2. Ingresar al dominio de Google Apps como Administrador

Page 40: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

3. Aceptar los terminos y especificar la direccion web

Page 41: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

4. La nueva funcionalidad esta ya en el panel

Page 42: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Google Apps + App Engine

Page 43: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Importar y Exportar Datos

Page 44: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Secure Data Connector (SDC)

Page 45: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Usando los Secure Data Connector

Instalación• Reglas de acceso• Configurar e instalar SDC

Listo para Servir• SDC abre un tunel SSL

Sirviendo• App Engine recibe el pedido• El usuario se autentica• La app se conecta por el tunel• SDC chequea el acceso• Retorna los resultados

Page 46: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

El Estado de su Aplicación

Page 47: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Historico del Estado del App Engine

Page 48: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Servicios Adicionales / APIs

• URL Fetch• Memcache• Mail• Imágenes• Google Accounts / Google Apps• Cron• Cola de Tareas

Page 49: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Soporte a Cron

- clean-up DB- prepare reports - batch mail- perform calcs- call mom

Page 50: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

<?xml version="1.0" encoding="UTF-8"?><cronentries> <cron> <url>/recache</url> <description>Repopulate the cache every 2 minutes</description> <schedule>every 2 minutes</schedule> </cron> <cron> <url>/weeklyreport</url> <description>Mail out a weekly report</description> <schedule>every monday of month 08:30</schedule> <timezone>America/New_York</timezone> </cron></cronentries>

Soporte a Cron

("every"|ordinal) (days) "of" (monthspec) (time)

every 5 minutesevery 12 hours2nd,third mon,wed,thu of march 17:00every monday of month 09:001st monday of sep,oct,nov 17:00

Page 51: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

La importancia de la cola de tareas

Procesamiento offline !!! (no se oye revolucionario pero es muy nuevo)

Partir operaciones grandes en varias operaciones sencillas

Page 52: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

creative commons licensed photograph from cote

Una arquitectura de servicio escalable

Page 53: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Escala dinamica y automaticamente

UserApp Engine

FrontendApp’s

Runtime

Page 54: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Escala dinamica y automaticamente

UserApp Engine

FrontendApp’s

Runtime

Page 55: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Escala dinamica y automaticamente

UserApp Engine

FrontendApp’s

Runtime

User

UserUser

User

Page 56: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Escala dinamica y automaticamente

App’sRuntime

App’sRuntime

UserApp Engine

FrontendApp’s

Runtime

User

UserUser

User

Page 57: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Multiples versiones

UserApp Engine

Frontend

Version 1.1

Version 2.1

Datastore

http://2.1.fredsa.appspot.com/

http://fredsa.appspot.com/

Page 58: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

No notan algo?

UserApp Engine

Frontend

Version 1.1

Version 2.1

Datastore

http://2.1.fredsa.appspot.com/

http://fredsa.appspot.com/

Page 59: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Bigtable> Datastore distribuido

http://labs.google.com/papers/bigtable.html

Page 60: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Bigtable :Un arreglo distribuido, fragmentado y ordenado

Row key Row data

Page 61: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Fragmento 1

Fragmento 2 . . .

Fragmento n

Row key Row data

Bigtable :Un arreglo distribuido, fragmentado y ordenado

Page 62: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Indices del Datastore

• Kind index (tipo)• Single property index (una sola

propiedad)• Composite index (varias

propiedades)• Merge join

Page 63: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Diferencias?

Page 64: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Datastore - Diferencias

• Distribuido• Escala muy bien (en serio)• Replicacion y failover automaticos

• Concurrencia optimista (no bloqueo cuando leo)

Page 65: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Datastore - Diferencias

• No hay joins (en serio, bueno, hay solo merge)

• Transforma los queries en dense index scans

• No existe un esquema de datos

Page 66: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Diferencias?

Page 67: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Datastore - Similitudes

• Indices• ACID transactionsGQLSELECT * FROM Story WHERE title = 'App Engine Launch' AND author = :current_user AND rating >= 10 ORDER BY rating, created DESC

Page 68: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Entidades

Page 69: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Grupos de Entidades

Page 70: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Mejores practicas

• Optimizar para lectura• Usar Memcache cuando sea posible• Politicas claras sobre los grupos de entidades (ventajas y

desventajas)• Contadores fragmentados (siguiente diapositiva)

• Deberiamos hacer alguna charla sobre esto? (Y hablar de merge join y el uso intenso de las list properties?)

Page 71: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Fragmentando

Counter

Single

Counter

Fragmentado

Counter Counter

Page 72: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Conclusiones

• Fácil de usar

• Fácil de escalar

• Fácil de mantener

Despliege sus aplicaciones en una plataforma que es:

Page 73: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Siempre es gratis empezar

Cuota gratis~5M vistas de página/mes

• 6.5 CPU hrs/día• 1 GB almacenamiento• 2,000 destinatarios de correo• 1 GB/día de ancho de banda

Page 74: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Comprar recursos adicionales *

* la couta gratis sigue aplicando

Page 75: Google App Engine - Meetupfiles.meetup.com/1472680/Introduccion a App Engine.pdf · Pensando en escalabilidad.....las herramientas, plataforma y diseno no importan mucho. Con pocos

Demo