Download Google App Engine

Document related concepts
no text concepts found
Transcript
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
• Computación en la nube – Cloud Computing
Google App Engine
Corre tus aplicaciones web en la
infraestructura escalable de
Google
Introduccion
Google App Engine
Usando la plataforma de
Google para servir mejor
a sus clientes
Fred Sauer
Developer Advocate
[email protected]
Google Apps + tus aplicaciones
Google Apps
Tus aplicaciones
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...
Con pocos usuarios....
....las herramientas, plataforma y
diseno no importan mucho.
Pensando en escalabilidad...
Muuuchos usuarios...
....HAY que disenar para
escalabilidad
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
Co
p
yr
i
g
h
t ©S
u nMi
c
r
o
s ys t e
m s I
n
c
.
,a
l
l
r
i
g
h
ts r
e
se
r
v e
d
.
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 Objectrelational mapping standard and a transparent
object persistence standard.
• JPA: An Object-relational mapping (ORM)
standard
• JCACHE: Specifies API and semantics for
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)
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
Soporte a Cron
<?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>
("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
Una arquitectura de servicio
escalable
creative commons licensed photograph from cote
Escala dinamica y automaticamente
User
App Engine
Frontend
App’s
Runtime
Escala dinamica y automaticamente
User
App Engine
Frontend
App’s
Runtime
Escala dinamica y automaticamente
User
User
App Engine
Frontend
User
User
User
App’s
Runtime
Escala dinamica y automaticamente
User
App’s
Runtime
User
App Engine
Frontend
User
App’s
Runtime
App’s
Runtime
User
User
Multiples versiones
http://fredsa.appspot.com/
Version 1.1
User
App Engine
Frontend
Datastore
Version 2.1
http://2.1.fredsa.appspot.com/
No notan algo?
http://fredsa.appspot.com/
Version 1.1
User
App Engine
Frontend
Datastore
Version 2.1
http://2.1.fredsa.appspot.com/
Bigtable> Datastore distribuido
http://labs.google.com/papers/bigtable.html
Bigtable :
Un arreglo distribuido, fragmentado y ordenado
Row key
Row data
Bigtable :
Un arreglo distribuido, fragmentado y ordenado
Row key
Row data
Fragmento 1
Fragmento 2
.
.
.
Fragmento n
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 >=
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
Single
Counter
Fragmentado
Counter
Counter
Counter
Conclusiones
Despliege sus aplicaciones en una
plataforma que es:
• Fácil de usar
• Fácil de escalar
• Fácil de mantener
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