Arquitectura de las nuevas
          aplicaciones web

Como lograr escalabilidad, alta disponibilidad
            y alto r...
¿NUEVAS APLICACIONES WEB?
• Las aplicaciones de escritorio se pasan a la
  web (gmail, google docs)
• Nuestras vidas y actividades se mueven a la
  ...
Retos
•   Velocidad (Alto Rendimiento)
•   Ubicuidad
•   Disponibilidad
•   Seguridad
•   Estabilidad
•   Compatibilidad
LA WEB EVOLUCIONO
•   Contenido puramente textual (Web 1.0)
•   Completa interactividad
•   Multimedia
•   La web como plataforma (Web 2.0)
...
Browsers




1995
                  2010
• Experiencia de usuario enriquecida
  – Gráficos
  – Video
  – Interactividad
• Acceso offline
• HTML 5
Retos
•   Velocidad (Alto Rendimiento)
•   Seguridad
•   Estabilidad
•   Compatibilidad
• El usuario, sus aplicaciones y sus datos se
  mueven a la web
• La web, los navegadores y las conexiones
  evolucionan
•...
¿ESCALABILIDAD?
Escalabilidad es aumentar la capacidad de
atender usuarios o volumen de datos de manera
  lineal con la capacidad de cómpu...
¿Por qué es importante?
• Pérdida de tráfico y/o ventas
  – Google: +500ms – -20% tráfico
  – Yahoo: +400ms – -5%/-9% tráf...
|




    http://webpagetest.org
• Tiempo de respuesta
  – 0.1s a 1s: No es necesario feedback al usuario
  – 1s a 10s: Es necesario feedback al usuario
  ...
¿Cómo escalamos?
Scaling up (vertical)    Scaling out (horizontal)
• Upgrades a cada nodo   • Aumentar el nro de nodos
• M...
Sunfire E20k          PowerEdge SC1435
       36 x 1.8GHz            Dualcore 1.8GHz
U$S450.000 – U$S 2.500.000      U$S 1...
• “sólo se puede escalar con Java” (JA!)
• “PHP/Python/Ruby no escalan” (JA!)
• La escalabilidad depende del diseño de la
...
Escalar verticalmente
• Reemplazar el servidor por uno más grande
• Usar CPUs más rápidos
• Un servidor que es el doble de...
Escalar horizontalmente
•   Agregar servidores (1, 10, 100, 1000)
•   Barato
•   Depende de la red (gigabit, 10GB, Infinib...
• LAMP básico
  – Linux, Apache, MySQL, PHP (lenguaje
    de programación)
  – ¿Escalable?
     • Máquina compartida para ...
• Base de datos dedicada
  – La base de datos corre en un servidor
    separado
  – Requerimientos
      • Otra máquina má...
• Múltiples servidores web




  – Beneficios
     • El tráfico puede crecer más allá de la capacidad de un servidor
  – R...
– Balanceo de cargas utilizando DNS (DNS round robin)




   • Registrar la lista de IPs en el DNS
   • Balanceo de carga ...
– Balanceo de cargas utilizando DNS (DNS round robin)




   • Registrar la lista de IPs en el DNS
   • Balanceo de carga ...
– Balanceo de cargas utilizando DNS (DNS round robin)




– ¿Escalable?
   • Agregar más servidores web como sea necesario...
– Balanceo de cargas utilizando reverse proxy




– Beneficios
   • Ruteo flexible
   • Balanceo de carga a nivel aplicaci...
Reverse proxy
– ¿Escalable?
   • Agregar más servidores web
   • Especialización
   • Limitado por
       – Capacidad de r...
– Base de datos Maestro - Esclavo




– Beneficios
   • Mejor rendimiento de lectura
   • Invisible a la aplicación
– Requ...
– Base de datos Maestro - Esclavo




– ¿Escalable?
   • Escala el ratio de lectura con el número de servidores
   • Pero ...
– Base de datos Maestro - Esclavo
– ¿Confiable?
   • Maestro es SPF para escrituras
   • Maestro puede morir antes de repl...
• Base de datos particionada




   – Beneficios                        – Requerimientos
   – Escala el rendimiento en    ...
Shared nothing (SN)
•   Cada nodo independiente
•   Eliminar SPFs
•   Storage separado
•   DB separada de web
•   Cache
• ...
¿CLOUD COMPUTING?
Cloud computing es un nuevo modelo de prestación de
   servicios de negocio y tecnología, que permite al
      usuario acc...
– Todo el trabajo de escalabilidad, alto rendimiento y alta disponibilidad esta a
  cargo del proveedor del servicio y tot...
¿
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta disponibilidad y alto rendimiento
Próxima SlideShare
Cargando en…5
×

Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta disponibilidad y alto rendimiento

7.295 visualizaciones

Publicado el

Presentación en Barcamp Córdoba 2010

Publicado en: Tecnología
1 comentario
1 recomendación
Estadísticas
Notas
Sin descargas
Visualizaciones
Visualizaciones totales
7.295
En SlideShare
0
De insertados
0
Número de insertados
22
Acciones
Compartido
0
Descargas
170
Comentarios
1
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta disponibilidad y alto rendimiento

  1. 1. Arquitectura de las nuevas aplicaciones web Como lograr escalabilidad, alta disponibilidad y alto rendimiento
  2. 2. ¿NUEVAS APLICACIONES WEB?
  3. 3. • Las aplicaciones de escritorio se pasan a la web (gmail, google docs) • Nuestras vidas y actividades se mueven a la nube • Los servicios y la información en la nube, accesibles con cualquier navegador conectado a la nube. (SaaS) • Necesitamos igualdad de condiciones y rendimiento en la nube
  4. 4. Retos • Velocidad (Alto Rendimiento) • Ubicuidad • Disponibilidad • Seguridad • Estabilidad • Compatibilidad
  5. 5. LA WEB EVOLUCIONO
  6. 6. • Contenido puramente textual (Web 1.0) • Completa interactividad • Multimedia • La web como plataforma (Web 2.0) • Web 3.0 (??)
  7. 7. Browsers 1995 2010
  8. 8. • Experiencia de usuario enriquecida – Gráficos – Video – Interactividad • Acceso offline • HTML 5
  9. 9. Retos • Velocidad (Alto Rendimiento) • Seguridad • Estabilidad • Compatibilidad
  10. 10. • El usuario, sus aplicaciones y sus datos se mueven a la web • La web, los navegadores y las conexiones evolucionan • + velocidad • En cualquier lugar
  11. 11. ¿ESCALABILIDAD?
  12. 12. Escalabilidad es aumentar la capacidad de atender usuarios o volumen de datos de manera lineal con la capacidad de cómputo añadida
  13. 13. ¿Por qué es importante? • Pérdida de tráfico y/o ventas – Google: +500ms – -20% tráfico – Yahoo: +400ms – -5%/-9% tráfico – Amazon: 100ms – -1% ventas • Ahorro de costos • Mejor experiencia de uso
  14. 14. | http://webpagetest.org
  15. 15. • Tiempo de respuesta – 0.1s a 1s: No es necesario feedback al usuario – 1s a 10s: Es necesario feedback al usuario (cargador, opciones de carga) – >10s: El usuario no llega a los 10s
  16. 16. ¿Cómo escalamos? Scaling up (vertical) Scaling out (horizontal) • Upgrades a cada nodo • Aumentar el nro de nodos • Más CPU • Más máquinas • Más memoria • Distribuir • Más máquina • Descentralizar • Sencillo • Complicado • Muy limitado
  17. 17. Sunfire E20k PowerEdge SC1435 36 x 1.8GHz Dualcore 1.8GHz U$S450.000 – U$S 2.500.000 U$S 1.500
  18. 18. • “sólo se puede escalar con Java” (JA!) • “PHP/Python/Ruby no escalan” (JA!) • La escalabilidad depende del diseño de la arquitectura, NO de la tecnología utilizada • NO es una tecnología • NO es un protocolo
  19. 19. Escalar verticalmente • Reemplazar el servidor por uno más grande • Usar CPUs más rápidos • Un servidor que es el doble de rápido cuesta bastante más que el doble.
  20. 20. Escalar horizontalmente • Agregar servidores (1, 10, 100, 1000) • Barato • Depende de la red (gigabit, 10GB, Infiniband) • Obtenemos gratis: redundancia (AD!) • Escalabilidad NO ES alta disponibilidad • Pero se intersecan • Eliminar SPFs! (escalabilidad+AD+seguridad)
  21. 21. • LAMP básico – Linux, Apache, MySQL, PHP (lenguaje de programación) – ¿Escalable? • Máquina compartida para servidor web y base de datos – ¿Confiable? • Un solo punto de fallo (SPF)
  22. 22. • Base de datos dedicada – La base de datos corre en un servidor separado – Requerimientos • Otra máquina más administración – ¿Escalable? • Hasta un servidor – ¿Confiable? • DOS puntos de fallo
  23. 23. • Múltiples servidores web – Beneficios • El tráfico puede crecer más allá de la capacidad de un servidor – Requerimientos • Más máquinas • Configurar balanceo de cargas
  24. 24. – Balanceo de cargas utilizando DNS (DNS round robin) • Registrar la lista de IPs en el DNS • Balanceo de carga estadístico • Los registros DNS son cacheados con TTL (Time To Live)
  25. 25. – Balanceo de cargas utilizando DNS (DNS round robin) • Registrar la lista de IPs en el DNS • Balanceo de carga estadístico • Los registros DNS son cacheados con TTL (Time To Live) • Downtime hasta que los registros DNS se propaguen
  26. 26. – Balanceo de cargas utilizando DNS (DNS round robin) – ¿Escalable? • Agregar más servidores web como sea necesario – ¿Confiable? • No se puede redirigir tráfico rápidamente • La base de datos aún es SPF
  27. 27. – Balanceo de cargas utilizando reverse proxy – Beneficios • Ruteo flexible • Balanceo de carga a nivel aplicación – Requerimientos • Más máquinas • Configuración y código para proxies
  28. 28. Reverse proxy – ¿Escalable? • Agregar más servidores web • Especialización • Limitado por – Capacidad de ruteo del proxy – Una base de datos – ¿Confiable? • Ruteo rápido a nivel de aplicación • Componentes especializados son más robustos • Múltiples proxies requieren ruteo a nivel de red – Balanceo de carga con DNS (DNS Round Robin) – Hardware de ruteo de red • Base de datos sigue siendo el SPF
  29. 29. – Base de datos Maestro - Esclavo – Beneficios • Mejor rendimiento de lectura • Invisible a la aplicación – Requerimientos • Aún más máquinas • Cambios a MySQL
  30. 30. – Base de datos Maestro - Esclavo – ¿Escalable? • Escala el ratio de lectura con el número de servidores • Pero no la escritura – Requerimientos • Aún más máquinas • Cambios a MySQL
  31. 31. – Base de datos Maestro - Esclavo – ¿Confiable? • Maestro es SPF para escrituras • Maestro puede morir antes de replicarse
  32. 32. • Base de datos particionada – Beneficios – Requerimientos – Escala el rendimiento en – Aún más máquinas lectura tanto en escritura como – Mucha administración lectura – Re arquitectura del modelo de datos – Reescribir consultas
  33. 33. Shared nothing (SN) • Cada nodo independiente • Eliminar SPFs • Storage separado • DB separada de web • Cache • Sesiones
  34. 34. ¿CLOUD COMPUTING?
  35. 35. Cloud computing es un nuevo modelo de prestación de servicios de negocio y tecnología, que permite al usuario acceder a un catálogo de servicios estandarizados y responder a las necesidades de su negocio, de forma flexible y adaptativa, en caso de demandas no previsibles o de picos de trabajo, pagando únicamente por el consumo efectuado. Wikipedia
  36. 36. – Todo el trabajo de escalabilidad, alto rendimiento y alta disponibilidad esta a cargo del proveedor del servicio y totalmente abstraído del cliente – recursos abstraidos. – Escalabilidad “instantánea” – Capacidad de procesamiento y almacenamiento “ilimitado” - Capacidad elástica – Software as Service – Pago solo por lo que uso – Dependencia de otras empresas proveedoras – Ejemplos • Google app engine • Amazon web services • Azure de Microsoft • Rackspace
  37. 37. ¿

×