SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
Building Geo-Distributed Web
         Applications
          Jason Rexilius
       Founder, CEO - hostedlabs


               UTPL
             May 28 2009
Quien es Jason?

•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
Que significa Geo-Distributed?

 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 de
una sola computadora. (grid, cloud, etc.)

NO ES:
• Clustering alojado sobre dispositivos compartidos como NFS
en un centro de datos. (ej. MediaTemple)
• Sitio de respaldos con replicación de datos (ej. SunGard)
• Creación instantánea de sistemas virtuales (ej. Amazon EC2)
Objetivos
• Escalamiento - Escalar arbitrariamente. Entrar a Digg,
Slashdot y CNN al mismo tiempo y todavía dar un buen
servicio.
• Rendimiento - reducir el tiempo de espera entre el
usuario y la aplicación, esto incluye alcanzar mercados
globales.
• Disponibilidad - Cero tiempo de inactividad. Operación
continua, sin importar los problemas ambientales. Puede con
todo, desde perdida de nodos a perdida del backbone
regional.
• Intensidad - Permitir procesamiento intensivo en recursos
sin impactar las operaciones. Computación distribuida,
búsqueda, almacenamiento etc.
Por que quiero hacer esto otra vez?
• Capturar el éxito - ame a Digg, deje al equipo de marketing ser libre, sirva a sus
usuarios apenas le descubran.

• Donde están sus usuarios? - son el WORLD WIDE web..
• Tiempo es Dinero - “33% de los consumidores comprando
con una conexión de banda ancha no esperan mas de 4
segundos 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)
Prepararse para la inundació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
Donde quiere terminar
• Alcance los mercados mayores - suficientes ubicaciones para servir al mundo,
pero no demasiadas
Como se ve esto?
• Arquitectura nTier típica de una vista física
Como funciona?
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 los
nodos y encaminarlo fuera de los problemas.

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

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

4) Usar diferentes capas de persistencia para necesidades diferentes. Volátil corto-plazo
vs. 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.
Administración de Trafico Global
 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
Nivel de Contenido Web
• 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 Aplicación Web
• Sesiones auto describibles - combinación de cookie/servidores cache
Pseudo 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 datos
Function 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
Caching
• 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”
Persistencia
• 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
Principios
• 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
Gracias MorphoDev
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. Info@morphodev.com

Más contenido relacionado

La actualidad más candente

13 14 keynote dando sentido al internet de las cosas, infobright
13 14 keynote dando sentido al internet de las cosas, infobright13 14 keynote dando sentido al internet de las cosas, infobright
13 14 keynote dando sentido al internet de las cosas, infobright
Software Guru
 

La actualidad más candente (12)

Qnap Broadcast 2020
Qnap Broadcast 2020Qnap Broadcast 2020
Qnap Broadcast 2020
 
Qnap Broadcast 2020 MX
Qnap Broadcast 2020 MXQnap Broadcast 2020 MX
Qnap Broadcast 2020 MX
 
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
 
Aspectos nodejs
Aspectos nodejsAspectos nodejs
Aspectos nodejs
 
Rendimiento extremo en php
Rendimiento extremo en phpRendimiento extremo en php
Rendimiento extremo en php
 
Migrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal ServersMigrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal Servers
 
AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016
 
Informe samba
Informe sambaInforme samba
Informe samba
 
13 14 keynote dando sentido al internet de las cosas, infobright
13 14 keynote dando sentido al internet de las cosas, infobright13 14 keynote dando sentido al internet de las cosas, infobright
13 14 keynote dando sentido al internet de las cosas, infobright
 
Servidores web de altas prestaciones. Tema 0. Presentación
Servidores web de altas prestaciones. Tema 0. PresentaciónServidores web de altas prestaciones. Tema 0. Presentación
Servidores web de altas prestaciones. Tema 0. Presentación
 
Servidores web de altas prestaciones. Tema 4
Servidores web de altas prestaciones. Tema 4Servidores web de altas prestaciones. Tema 4
Servidores web de altas prestaciones. Tema 4
 
Servidores web de altas prestaciones. Tema 1
Servidores web de altas prestaciones. Tema 1Servidores web de altas prestaciones. Tema 1
Servidores web de altas prestaciones. Tema 1
 

Destacado

Evaluación de una decisión estratégica real v2
Evaluación de una decisión estratégica real v2Evaluación de una decisión estratégica real v2
Evaluación de una decisión estratégica real v2
Edelmiro Varela Izarnotegui
 
Semestral andrès buigley palacios (repaired)
Semestral andrès buigley palacios (repaired)Semestral andrès buigley palacios (repaired)
Semestral andrès buigley palacios (repaired)
andres224565
 
Resultados amazonas
Resultados amazonasResultados amazonas
Resultados amazonas
danarlleson
 
CTS-terapeutica
CTS-terapeuticaCTS-terapeutica
CTS-terapeutica
drcamones
 
Imagenpais
ImagenpaisImagenpais
Imagenpais
cmpereze
 
Nuevos Medios Y Magnates De La ComunicacióN Web
Nuevos Medios Y Magnates De La ComunicacióN WebNuevos Medios Y Magnates De La ComunicacióN Web
Nuevos Medios Y Magnates De La ComunicacióN Web
cmpereze
 

Destacado (20)

Evaluación de una decisión estratégica real v2
Evaluación de una decisión estratégica real v2Evaluación de una decisión estratégica real v2
Evaluación de una decisión estratégica real v2
 
OpenERP. L'ERP lliure
OpenERP. L'ERP lliureOpenERP. L'ERP lliure
OpenERP. L'ERP lliure
 
Rg, gmc & asociados consultores
Rg, gmc & asociados consultoresRg, gmc & asociados consultores
Rg, gmc & asociados consultores
 
Rg, gmc & asociados consultores 06
Rg, gmc & asociados consultores 06Rg, gmc & asociados consultores 06
Rg, gmc & asociados consultores 06
 
Semestral andrès buigley palacios (repaired)
Semestral andrès buigley palacios (repaired)Semestral andrès buigley palacios (repaired)
Semestral andrès buigley palacios (repaired)
 
“Nunca trates de manipular al cliente”
 “Nunca trates de manipular al cliente” “Nunca trates de manipular al cliente”
“Nunca trates de manipular al cliente”
 
Board 7 Una nueva era en BI y CPM
Board 7 Una nueva era en BI y CPMBoard 7 Una nueva era en BI y CPM
Board 7 Una nueva era en BI y CPM
 
Zzsaas - OpenERP SaaS
Zzsaas - OpenERP SaaSZzsaas - OpenERP SaaS
Zzsaas - OpenERP SaaS
 
Não deixe o corpo cidadão morrer!
Não deixe o corpo cidadão morrer!Não deixe o corpo cidadão morrer!
Não deixe o corpo cidadão morrer!
 
Modelo osi[1]
Modelo osi[1]Modelo osi[1]
Modelo osi[1]
 
Brasil 2
Brasil 2Brasil 2
Brasil 2
 
Resultados amazonas
Resultados amazonasResultados amazonas
Resultados amazonas
 
19
1919
19
 
A reconstituição da memória através da restauração de antigas Fichas de Asso...
A reconstituição da memória através da restauração de antigas Fichas de  Asso...A reconstituição da memória através da restauração de antigas Fichas de  Asso...
A reconstituição da memória através da restauração de antigas Fichas de Asso...
 
CTS-terapeutica
CTS-terapeuticaCTS-terapeutica
CTS-terapeutica
 
Imagenpais
ImagenpaisImagenpais
Imagenpais
 
Sherie Gervais Resume
Sherie Gervais ResumeSherie Gervais Resume
Sherie Gervais Resume
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04
 
Hasta la vista!
Hasta la vista!Hasta la vista!
Hasta la vista!
 
Nuevos Medios Y Magnates De La ComunicacióN Web
Nuevos Medios Y Magnates De La ComunicacióN WebNuevos Medios Y Magnates De La ComunicacióN Web
Nuevos Medios Y Magnates De La ComunicacióN Web
 

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

Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Luis Bosque
 
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
Domingo Suarez Torres
 
Big Data para desarrolladores utilizando Hadoop y OpenStack
Big Data para desarrolladores utilizando Hadoop y OpenStackBig Data para desarrolladores utilizando Hadoop y OpenStack
Big Data para desarrolladores utilizando Hadoop y OpenStack
Software Guru
 

Similar a Construcción de Aplicaciones de Avanzada con Geo-Distribución (20)

Rails Against The Machine
Rails Against The MachineRails Against The Machine
Rails Against The Machine
 
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
 
Cloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la NubeCloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la Nube
 
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
 
Actividad 7
Actividad 7Actividad 7
Actividad 7
 
Monitorización En OpenSolaris
Monitorización En OpenSolarisMonitorización En OpenSolaris
Monitorización En OpenSolaris
 
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
 
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadDrupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
 
Introducción a hadoop
Introducción a hadoopIntroducción a hadoop
Introducción a hadoop
 
Smbd (2)
Smbd (2)Smbd (2)
Smbd (2)
 
Smbd (2)
Smbd (2)Smbd (2)
Smbd (2)
 
Smb Dfin
Smb DfinSmb Dfin
Smb Dfin
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Big data para desarrolladores utilizando hadoop y openstack
Big data para desarrolladores utilizando hadoop y openstack Big data para desarrolladores utilizando hadoop y openstack
Big data para desarrolladores utilizando hadoop y openstack
 
Big Data para desarrolladores utilizando Hadoop y OpenStack
Big Data para desarrolladores utilizando Hadoop y OpenStackBig Data para desarrolladores utilizando Hadoop y OpenStack
Big Data para desarrolladores utilizando Hadoop y OpenStack
 
Infraestructura Convergente web-scale
Infraestructura Convergente web-scaleInfraestructura Convergente web-scale
Infraestructura Convergente web-scale
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Avance1
Avance1Avance1
Avance1
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 

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

  • 1. Building Geo-Distributed Web Applications Jason Rexilius Founder, CEO - hostedlabs UTPL May 28 2009
  • 2. Quien es Jason? •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
  • 3. Que significa Geo-Distributed? 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 de una sola computadora. (grid, cloud, etc.) NO ES: • Clustering alojado sobre dispositivos compartidos como NFS en un centro de datos. (ej. MediaTemple) • Sitio de respaldos con replicación de datos (ej. SunGard) • Creación instantánea de sistemas virtuales (ej. Amazon EC2)
  • 4. Objetivos • Escalamiento - Escalar arbitrariamente. Entrar a Digg, Slashdot y CNN al mismo tiempo y todavía dar un buen servicio. • Rendimiento - reducir el tiempo de espera entre el usuario y la aplicación, esto incluye alcanzar mercados globales. • Disponibilidad - Cero tiempo de inactividad. Operación continua, sin importar los problemas ambientales. Puede con todo, desde perdida de nodos a perdida del backbone regional. • Intensidad - Permitir procesamiento intensivo en recursos sin impactar las operaciones. Computación distribuida, búsqueda, almacenamiento etc.
  • 5. Por que quiero hacer esto otra vez? • Capturar el éxito - ame a Digg, deje al equipo de marketing ser libre, sirva a sus usuarios apenas le descubran. • Donde están sus usuarios? - son el WORLD WIDE web..
  • 6. • Tiempo es Dinero - “33% de los consumidores comprando con una conexión de banda ancha no esperan mas de 4 segundos 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)
  • 7. Prepararse para la inundació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
  • 8. Donde quiere terminar • Alcance los mercados mayores - suficientes ubicaciones para servir al mundo, pero no demasiadas
  • 9. Como se ve esto? • Arquitectura nTier típica de una vista física
  • 10. Como funciona? 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 los nodos y encaminarlo fuera de los problemas. 2) Usar nodos Sub-Dominios/CDN para mejorar el rendimiento, sacar el trafico de los servidores de aplicación y particiones de trabajo. 3) Sesiones auto describibles y compartidas, nivel de cache distribuido permite a los usuarios moverse. No crea en los proveedores, niveladores de carga no siempre funcionan. 4) Usar diferentes capas de persistencia para necesidades diferentes. Volátil corto-plazo vs. 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.
  • 11. Administración de Trafico Global 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
  • 12. Nivel de Contenido Web • 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
  • 13. Nivel de Aplicación Web • Sesiones auto describibles - combinación de cookie/servidores cache Pseudo 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 datos Function 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
  • 14. Caching • 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”
  • 15. Persistencia • 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
  • 16. Principios • 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
  • 17. Gracias MorphoDev 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. Info@morphodev.com