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 fredsa@google.com 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