Vous êtes sur la page 1sur 75

Una Introduccion a

Google App Engine


Google App Engine
TecnoParque
2009
Presentacion por
Agenda
1.Introduccion
2.Por que usarlo?
3.Tour de App Engine
4.Diferencias?
5.Conclusiones y Demos
6.Preguntas
Qu es Google App Engine?

Servicio que permite alojar aplicaciones Web en la


infraestructura de Google

PaaS - Platform as a Service

Computacin en la nube Cloud Computing


Google App Engine
Corre tus aplicaciones web en la
infraestructura escalable de
Google
Introduccion
Fred Sauer
Developer Advocate
fredsa@google.com
Google App Engine
Usando la plataforma de
Google para servir mejor
a sus clientes
Google Apps + tus aplicaciones
Tus aplicaciones Google 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 Java
#1283-+,5 9 &60 %-(314845*/4 $0("! '.. 3-+,54 3*4*37*)"
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 that
which 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 aplicacin con el
Runtime de Java usando el Plugin.
Python Runtime

Eclipse

PyDev
+
Django

Framework en Python

El ms popular

Migracin de aplicaciones existentes

Plantillas. MVC

Administracin

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
Instalacin

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 Aplicacin
Historico del Estado del App Engine
Servicios Adicionales / APIs

URL Fetch

Memcache

Mail

Imgenes

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 minutes
every 12 hours
2nd,third mon,wed,thu of march 17:00
every monday of month 09:00
1st 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
User
App Engine
Frontend
Apps
Runtime
Escala dinamica y automaticamente
User
App Engine
Frontend
Apps
Runtime
Escala dinamica y automaticamente
User
App Engine
Frontend
Apps
Runtime
User
User
User
User
Escala dinamica y automaticamente
Apps
Runtime
Apps
Runtime
User
App Engine
Frontend
Apps
Runtime
User
User
User
User
Multiples versiones
User
App Engine
Frontend
Version 1.1
Version 2.1
Datastore
http://2.1.fredsa.appspot.com/
http://fredsa.appspot.com/
No notan algo?
User
App 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 transactions
GQL
SELECT * 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

Fcil de usar

Fcil de escalar

Fcil de mantener
Despliege sus aplicaciones en una
plataforma que es:
Siempre es gratis empezar
Cuota gratis
~5M vistas de pgina/mes

6.5 CPU hrs/da

1 GB almacenamiento

2,000 destinatarios de correo

1 GB/da de ancho de banda


Comprar recursos adicionales *
* la couta gratis sigue aplicando
Demo

Vous aimerez peut-être aussi