Escalabilidad de Websites

4,250 views

Published on

Taller Dictado en Honduras, Tegucigalpa 2010

2 Comments
4 Likes
Statistics
Notes
No Downloads
Views
Total views
4,250
On SlideShare
0
From Embeds
0
Number of Embeds
1,183
Actions
Shares
0
Downloads
120
Comments
2
Likes
4
Embeds 0
No embeds

No notes for slide































  • Escalabilidad de Websites

    1. 1. AyerViernes Escalabilidad de Websites Fabian Ramirez ( aka @dokshor) http://www.dokshor.com
    2. 2. AyerViernes ¿Que es la escalabilidad? Habilidad para extender el margen de operaciones sin perder calidad. Manejar el crecimiento continuo de trabajo de manera fluida y constanste. Estar preparado para hacerse más grande sin perder calidad en los servicios ofrecidos. Sinonimo de crecimiento potencial.
    3. 3. AyerViernes ¿Que es la escalabilidad? Ver otros horizontes de tu sistema y hacerlo pensando en forma futura. Pensar en que todo lo que hace tu sistema, en algun momento puede crecer y hacerse grande. Sinónimo de crecimiento. Tu hosting ya no te soporta.
    4. 4. AyerViernes ¿Que es la escalabilidad? Ejemplos de escalabilidad mas comunes: No es lo mismo un periodo de inscripción de universidad que un periodo de clases. ¿Terremoto en Chile? ¿Periodo de Ventas para navidad? Peak workloads son estos periodos de ALTO trafico.
    5. 5. AyerViernes ¿Cuando debo escalar? Mi sistema es demasiado lento. Mi sistema no soporta la capacidad de usuarios. Mi sistema esta centralizado. Mi sistema se colapsa y no responde. Se pronostica un crecimiento elevado de mi aplicación. Mi sistema debe ser mantenible.
    6. 6. AyerViernes ¿Para que debo escalar? Deseo una mayor capacidad de usuarios. Para soportar una alta carga de procesamiento. Deseo un sistema rápido, descentralizado y de crecimiento continuo. Estoy teniendo una entrada de dinero en mi sitio web. Deseo tener una aplicación tolerante a fallas.
    7. 7. AyerViernes ¿Como debe ser la arquitectura de un sitio escalable? Debiera tener un versionado del software. SVN, CVS, GIT. Debiera estar programada bajo estándares de programación. Comentarios, Fin de Lineas, Documentada. Debe existir un software de desarrollo y de producción.
    8. 8. AyerViernes ¿Como debe ser la arquitectura de un sitio escalable? Los cambios no deben ser realizados en HOT. Debiera tener una base de datos optimizada. ¿Normalizada o Desnormalizada? Debiera ser testeada para asegurar una calidad del software (QA). Debiera tener una API de comunicación externa.
    9. 9. AyerViernes ¿Como debe ser la arquitectura de un sitio escalable? La información debiera ser integra. 2+2 = 4. La información debe ser almacenada de forma segura. Se debe contar con respaldos periódicos. Debiéramos separar los archivos multimedia del servidor de producción. (Pastelero tus pasteles). No puede tener cuellos de botella (Bottleneck).
    10. 10. AyerViernes ¿Como debe ser la arquitectura de un sitio escalable? Se debiese poder internacionalizar en cualquier momento. Los e-mails deben llegar en tiempo casi real. La comunicación con sistemas remotos debiese ser cacheada. Los procesos que requieren de mayor recurso deben ser programados como tareas y almacenados localmente.
    11. 11. AyerViernes Tipos de escalamiento Vertical Remplazamos el equipo antiguo por uno nuevo de mayor capacidad. Horizontal Agregamos mas maquinas a nuestro entorno de producción. Mucha teoría, ahora necesitamos técnicas si no hay mucho dinero.
    12. 12. AyerViernes Técnica compresión Comenzar por comprimir las imágenes a un formato mas liviano. Eliminar las lineas innecesarias y espacios en nuestros: HTML. Javascript. CSS.
    13. 13. AyerViernes Técnica reducir los archivos Cada elemento externo se solicita de forma separada y aumenta por tanto la transferencia y el tiempo de carga. Se pueden comprimir los Javascripts para transformarse en solo 1 unidad comprimida. Se deben utilizar objetos Javascript. Debemos trabajar de forma objetual para solo instransciar objetos. Clase.init();
    14. 14. AyerViernes Técnica reducir los archivos var Persona = { init(): function() { alert(‘inicie’); }; Persona.saludar = function() { alert(‘hola’); };
    15. 15. AyerViernes Técnica reducir los archivos CSS Sprite El uso correcto del posicionamiento de backgrounds para mostrar sólo aquella parte de la imagen que nos interesa. Cargamos solo 1 archivo de imagen.
    16. 16. AyerViernes Técnicas para optimizar los correos electrónicos Google App Engine. Servidor de correo propios. Colas de correos. Recibir los bounces en otro servidor. Separar por subsistema: @ventas.dominio.xx @newsletters.dominio.xx
    17. 17. AyerViernes Técnica de la nube Externalizar nuestra infraestructura de servidores, a un proveedor de este servicio. Todo estará en Internet, por eso se llama la nube. El cobro es mensual y puedes cambiarte de plan cuando quieras. Servidores en una misma red para compartir archivos (NFS).
    18. 18. AyerViernes Técnica mejorar el codigo Revisar nuestras consultas y optimizarlas. ¿Cual es la parte mas pesada de nuestro sitio? Revisar nuestras estructuras de control del software Debugear, Debugear, Debugear Logger (Ruby) php4log (PHP)
    19. 19. AyerViernes Técnica Balanceo de Carga DNS round-robin. Múltiples nodos en red (img01, img02, img03). Balanceo Geográfico de Cargas (Global). Tener un servidor Proxy para balanceo.
    20. 20. AyerViernes Técnica reducir consultas DNS Por cada resolución de un dominio se necesita tiempo de espera par el servidor DNS del cliente. Imaginese cuanto se demora en resolver: img.dominio.xx - js.dominio.xx - video.dominio.xx ¿Si hacemos esto por IP? ¿Si hacemos esto como carpetas virtuales en otro servidor? http://dominio.xx/videos <--- videos.dominio.xx
    21. 21. AyerViernes Técnica Cache Parcial Solo una parte de nuestro sitio será cacheada. Esta parte es donde las consultas son dificiles de generar y utilizan muchos recursos de CPU y Memoria. Generalmente son trozos de consultar muy complejas. No cambia en tiempo real.
    22. 22. AyerViernes Técnica Cache Memcache Xcache (PHP) Sphinx Nos sirve para indexar contenido a un archivo generado, para no consultar en base de datos, sino localmente. Imaginense 2.000.000 de registros.
    23. 23. AyerViernes Cache Disco VS Memoria ¿Cuando debemos cachear en memoria y cuando en disco? Tenemos poca memoria RAM, tenemos que cachear a disco. Será mas lento el tiempo de respuesta. Tenemos mucha RAM, mas rápido que el disco.
    24. 24. AyerViernes Plugins para sistemas comunes Ruby on Rails CakePHP Dejarlo en modo producción y no activar desde config.php Wordpress wp-supercache
    25. 25. AyerViernes Servidores de alto desempeño nginx lighttpd varnish Apache Squid
    26. 26. AyerViernes Técnica de Proxy Inverso Aquel que se sitúa cerca de uno o mas servidores web, recibe las peticiones y las reenvía a los servidores web. Para añadir seguridad a los servidores web: en ningún momento se accede directamente a ellos sino al proxy. Para balancear la carga de los servidores: el servidor proxy es el encargado de enviar las peticiones a aquellos servidores que estén mas descargados.
    27. 27. AyerViernes Técnica de Proxy Inverso Para descargar a los servidores webs de contenido estático como imágenes o documentos. En caso de sitios webs seguros se puede dejar al proxy que haga el encriptado de los datos y descargar así a los servidores web.
    28. 28. AyerViernes Herramientas de Testing jMeter Mide performance en diferentes protocolos. Webwait via WEB. Numero de solicitudes, numero de intervalos. Apache Benchmark. ab -c 200 -n 300 http://localhost/
    29. 29. AyerViernes Ejercicios El sistema de JUAN se prepara para recibir en su BLOG mas de 30.000 visitas únicas en el día. Esto se debe a que escribió un articulo de muy buena calidad. ¿Que solución es la mas económica? ¿Cual es la mas efectiva?
    30. 30. AyerViernes Ejercicios Se abrirá un nuevo sistema para la inscripción de alumnos en la UNITEC de Honduras y se esperan mas de 20.000 alumnos. ¿ Que tipo de escalabilidad recomiendan? ¿Proxy Inverso? ¿Sistema de invitaciones?
    31. 31. AyerViernes Au Revoir! Gracias Fabian Ramirez aka @dokshor http://www.dokshor.com WebconfLatino 2010, Honduras - Tegucigalpa

    ×