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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. AyerViernes
Técnica reducir los archivos
var Persona = { init(): function() { alert(‘inicie’); };
Persona.saludar = function() { alert(‘hola’); };
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. 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. 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. 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. 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. 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. 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. 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. 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. AyerViernes
Plugins para sistemas
comunes
Ruby on Rails
CakePHP
Dejarlo en modo producción y no activar desde
config.php
Wordpress
wp-supercache
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. 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. 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. 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. 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?