17
Jason Rexilius Founder, CEO - hostedlabs UTPL May 28 2009 Building Geo-Distributed Web Applications

Construcción de Aplicaciones de Avanzada con Geo-Distribución

Embed Size (px)

Citation preview

Page 1: Construcción de Aplicaciones de Avanzada con Geo-Distribución

Jason RexiliusFounder, CEO - hostedlabs

UTPLMay 28 2009

Building Geo-Distributed WebApplications

Page 2: Construcción de Aplicaciones de Avanzada con Geo-Distribución

•Arquitecto, hacker, problemático, fundador de

compañías

•Sistemas de intercambio financiero,

telecomunicación wireless, seguridad nacional

•PHP, perl, C, SAS, cualquier cosa con filos

peligrosos

Quien es Jason?

Page 3: Construcción de Aplicaciones de Avanzada con Geo-Distribución

Una sola aplicación ejecutándose

simultáneamente en muchas localidades

en el mundo.

ES: es un cluster de clusters, comportándose como la imagen deuna sola computadora. (grid, cloud, etc.)

NO ES:

• Clustering alojado sobre dispositivos compartidos como NFSen un centro de datos. (ej. MediaTemple)

• Sitio de respaldos con replicación de datos (ej. SunGard)

• Creación instantánea de sistem as virtuales (ej. Amazon EC2)

Que significa Geo-Distributed?

Page 4: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• Escalamiento - Escalar arbitrariamente. Entrar a Digg,Slashdot y CNN al mismo tiempo y todavía dar un buenservicio.

• Rendimiento - reducir el tiempo de espera entre elusuario y la aplicación, esto incluye alcanzar mercados

globales.

• Disponibilidad - Cero tiempo de inactividad . Operacióncontinua, sin importar los problemas ambientales. Puede contodo, desde perdida de nodos a perdida del backboneregional.

• Intensidad - Permitir procesamiento intensivo en recursossin impactar las operaciones. Computación distribuida,búsqueda, almacenamiento etc.

Objetivos

Page 5: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• Capturar el éxito - ame a Digg, deje al equipo de marketing ser libre, sirva a sususuarios apenas le descubran.

• Donde están sus usuarios? - son el WORLD WIDE web..

Por que quiero hacer esto otra vez?

Page 6: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• Tiempo es Dinero - “33% de los consumidores comprandocon una conexión de banda ancha no esperan mas de 4segundos para que una pagina Web se muestre.” -JupiterResearch via Akamai

Cada segundo mas lento es una baja en clicks en

publicidad (ganancias)

• Proveedores Descarrilados

– “ISPs fallan en enrutamiento” (Level3 vs Cogent)

– “FBI Shutters Web Host” (su vecino aloja warez)

– “Akamai Outage Raises Questions” (falla jerarquica)

– Incendio en estación de energía apaga Equinix

– Falla de generador de 365Main (mal mantenimiento)

– Apagon en Rackspace (borracho en un camion)

Page 7: Construcción de Aplicaciones de Avanzada con Geo-Distribución

Optimización prematura es mala. Ignorar sus objetivos

también es malo

Que puede hacer hoy para posicionarse mejor mañana?

1. Piense mas allá de la base de datos

2. Permita la especialización

3. Mejore ese viejo SO

4. Disciplina estricta con las interfaces de datos

5. No reinvente la rueda

Prepararse para la inundación

Page 8: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• Alcance los mercados mayores - suficientes ubicaciones para servir al mundo,pero no demasiadas

Donde quiere terminar

Page 9: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• Arquitectura nTier típica de una vista física

Como se ve esto?

Page 10: Construcción de Aplicaciones de Avanzada con Geo-Distribución

Aduéñese del proceso completo - desde bloques IP a DNS a servir el contenido,procesamiento de aplicación y persistencia de datos. (ver http://stevesouders.com/hpws/rules.php)

1) Optimice BGP/DNS para encaminar el trafico las localidades, distribuir el trafico por losnodos y encaminarlo fuera de los problemas.

2) Usar nodos Sub-Dominios/CDN para mejorar el rendimiento, sacar el trafico de losservidores de aplicación y particiones de trabajo.

3) Sesiones auto describibles y compartidas, nivel de cache distribuido permite a losusuarios moverse. No crea en los proveedores, niveladores de carga no siempre funcionan.

4) Usar diferentes capas de persistencia para necesidades diferentes. Volátil corto-plazovs. largo plazo, etc. Se necesita un ambiente global pero administración de datos simple.

5) Usar el modelo de implementación de BD mas simple que se pueda (maestro/esclavo,two-phase commit, particionamiento de datos, etc. NDB es difícil, casi imposible en WAN).

6) Modelo “control workstation” para coordinar, revisar y administrar todos los niveles.

Como funciona?

Page 11: Construcción de Aplicaciones de Avanzada con Geo-Distribución

BGP/anycast DNS Geo-weighting Load Distribution

• Optimización de primer nivel de enrutamiento Anycast, DNS es el

primer punto

• Geo-weighting basado en quien lo requiere, siguiente nivel

• 8 respuestas para todo, póngalo dentro de un paquete UDP

•Tablas actualizadas en tiempo real de registros A (no use CNAMEs)

• Migre bloques ip en tiempos de inactividad (/24 tamaño mínimo)

• IP assumption dentro del centro de datos

• Use un sistema wing-man para simplicidad

• Use grandes pilas de direcciones IP antes que niveladores de

contenido

Administración de Trafico Global

Page 12: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• Use un directorio separado para el contenido estático

– /var/www/webapp (direcciona a www.you.com, contiene PHP)

– /var/www/static (direcciona a static.you.com, contiene JPG, JS, etc.)

• Establezca EnvVars en httpd.conf para varios ambientes

–SetEnv STATICURL http://devstatic.you.com

– SetEnv STATICURL http://qastatic.you.com

– SetEnv STATICURL http://static.you.com

• Llame a las EnvVars en sus plantillas HTML para contenido estático

<html>

<img src=“<?php print $_SERVER[‘STATICURL’]; ?>/you_logo.gif”>

</html>

• Use replicación simple de datos para transferir de SVN o el sistema de

archivos a CDN

– crontab -e

– svn deploy script

Nivel de Contenido Web

Page 13: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• Sesiones auto describibles - combinación de cookie/servidores cachePseudo code:

if ( $Compressed_Encrypted_Session_Data < 4000 bytes ) {

Store_Session_In_Cookie( $Compressed_Encrypted_Session_Data

}else{

Store_Session_In_Two_Nodes( $Node1, $Node2, $Compressed_Encrypted_Session_Data )

Store_Location_Of_Session_In_Cookie ( $Node1, $Node2 )

}

• Uso estricto de interfaces de datosFunction SQLRead($accessstring,$type,$constraints);

Function SQLWrite($dataobject,$type,$constraints);

Function FileRead($file,$method,$constraints);

• No use AUTOINCREMENT, genere llaves

• Use fork/exec para procesos largos/pesados antes que hilos de ejecución,

use wrappers, IPC definido

Nivel de Aplicación Web

Page 14: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• MemcacheD es su amigo (o los parecidos)

• “pre compile” paginas que son semi-dinámicas como noticias, etc. Piense

cronológicamente

• Obtenga listas y otros datos semi-dinámicas de la BD, genere includes

locales

• APC u otros opcode compile caches help

• Overlay cache manager con modelo pub/sub para actualizaciones en

background

• Use locator keys para apuntar al cache “system of records”

Caching

Page 15: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• Guarde los datos correctos en el lugar correcto

– filesystem

– berkleyDB

– MySQL

– REST interface to

– MogileFS

• Sistemas de archivos Global Namespace (Coda, Andrew, Lustre, et al.)

– Use procesos en background para forzar caching y replicacion

– Use nombres de directorios para implicar niveles de servicio o patrones de

comportamiento

• Escoja una arquitectura de BD apropiada “patrón de diseño”, use interfaces

– Primary master, multi-slave, default read from slave

– Primary master, two-phase commit, multi-slave

– Partitioned, distributed multi-master, slave failover

– distributed “hash-map” master, overlay query model

Persistencia

Page 16: Construcción de Aplicaciones de Avanzada con Geo-Distribución

• HTTP NO TIENE ESTADOS, use esta ventaja

•Conozca y optimice toda la pila del sistema, no solo el

lenguaje de programación

• 3i’s - Interfaces, Indirección e Independencia como

características de diseño de sistemas

• Service Oriented Architecture != Webservices solamente,

utilice múltiples modelos y métodos

Principios

Page 17: Construcción de Aplicaciones de Avanzada con Geo-Distribución

Morpho, LLC New York | Chicago | Quito

www.morphodev.com

Morpho Development provides web application outsourcing services to

small and medium sized companies in the United States. Morpho skillsets

include:

•PHP5/MySQL

–PEAR libraries, smarty, Zend and CakePHP framework

–Content Management Systems like Drupal and WordPress

•HTML/CSS coding and Javascript development

–Web standards and semantic markup, Ajax techniques and popular frameworks like

prototype.js and Jquery

We're growing, and we're looking for developers. So if you are interested, please

contact us. [email protected]

Gracias MorphoDev