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

Post on 20-Apr-2020

1 views 0 download

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

Una Introduccion aGoogle App Engine

Google App Engine

TecnoParque2009

Presentacion por

Agenda

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

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

Google App Engine

Corre tus aplicaciones web en la infraestructura escalable de

Google

Introduccion

Fred SauerDeveloper Advocatefredsa@google.com

Google App Engine

Usando la plataforma de Google para servir mejor a sus clientes

Google Apps + tus aplicaciones

Tus aplicacionesGoogle Apps

Arquitectura de Servicio de Google

200K+ Desarrolladores, 80K+ Aplicaciones

Caso: mental_floss

Caso: mental_floss

Caso: mental_floss

~3,000,000 page views desde Yahoo!

Factura App Engine Marzo:

Por qué usar App Engine?

Desarrollar aplicaciones web es dificil

WhiteHouse.gov/openforquestions

Pensando en escalabilidad...

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

Con pocos usuarios....

Pensando en escalabilidad...

....HAY que disenar para escalabilidad

Muuuchos usuarios...

Pero el problema es...

Cuando?

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

Y el verdadero problema es...

Cuando ocurra.

Puedes darte el lujo de dejar todo de lado esperando?

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

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

Un Tour por App Engine

Java runtime

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

Python runtime

Java??

Y mucho mas!

Asegurando la portabilidad

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.

Herramientas De Desarrollo en Java

+

Google Plugin para Eclipse

Google Web Toolkit (GWT)

Depurando GWT en el navegador

Y mas de GWT...

En una proxima conferencia :)

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

Ejemplo (2 mins)

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

Python Runtime

•Eclipse•PyDev

+

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

Servicios

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

Integrando a Google Apps

http://appid.appspot.com/

http://yourapp.yourdomain.com/

2. Ingresar al dominio de Google Apps como Administrador

3. Aceptar los terminos y especificar la direccion web

4. La nueva funcionalidad esta ya en el panel

Google Apps + App Engine

Importar y Exportar Datos

Secure Data Connector (SDC)

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

El Estado de su Aplicación

Historico del Estado del App Engine

Servicios Adicionales / APIs

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

Soporte a Cron

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

<?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

La importancia de la cola de tareas

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

Partir operaciones grandes en varias operaciones sencillas

creative commons licensed photograph from cote

Una arquitectura de servicio escalable

Escala dinamica y automaticamente

UserApp Engine

FrontendApp’s

Runtime

Escala dinamica y automaticamente

UserApp Engine

FrontendApp’s

Runtime

Escala dinamica y automaticamente

UserApp Engine

FrontendApp’s

Runtime

User

UserUser

User

Escala dinamica y automaticamente

App’sRuntime

App’sRuntime

UserApp Engine

FrontendApp’s

Runtime

User

UserUser

User

Multiples versiones

UserApp Engine

Frontend

Version 1.1

Version 2.1

Datastore

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

http://fredsa.appspot.com/

No notan algo?

UserApp Engine

Frontend

Version 1.1

Version 2.1

Datastore

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

http://fredsa.appspot.com/

Bigtable> Datastore distribuido

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

Bigtable :Un arreglo distribuido, fragmentado y ordenado

Row key Row data

Fragmento 1

Fragmento 2 . . .

Fragmento n

Row key Row data

Bigtable :Un arreglo distribuido, fragmentado y ordenado

Indices del Datastore

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

propiedad)• Composite index (varias

propiedades)• Merge join

Diferencias?

Datastore - Diferencias

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

• Concurrencia optimista (no bloqueo cuando leo)

Datastore - Diferencias

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

• Transforma los queries en dense index scans

• No existe un esquema de datos

Diferencias?

Datastore - Similitudes

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

Entidades

Grupos de Entidades

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?)

Fragmentando

Counter

Single

Counter

Fragmentado

Counter Counter

Conclusiones

• Fácil de usar

• Fácil de escalar

• Fácil de mantener

Despliege sus aplicaciones en una plataforma que es:

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

Comprar recursos adicionales *

* la couta gratis sigue aplicando

Demo