Sei sulla pagina 1di 4

Escalado

Cuando nuestro sitio o aplicación web crece en volumen de visitas concurrentes, o
bien tenemos que mejorar los tiempos de respuesta, podemos llegar a tener un
problema si no hemos preparado nuestra infraestructura para ello.
Escalar una aplicación no es trivial y dependiendo de si la aplicación o sitio web está
sujeto a un SLA, puede que no nos podamos permitir una parada de servicio, o ante un
volumen masivo de visitas concurrentes nuestro servicio directamente deje de
responder.

Escalado Vertical
Supone el escalado mediante el uso de recursos de hardware más potentes (tendiendo
a un número menor de máquinas):
CPU’s con más cores o más potentes
Mayor cantidad de RAM o más rápida
Disco (SSD)
Mayor Ancho de Banda
Dependiendo de cómo sea nuestro servidor (Instancia física o virtualizado), podremos
aplicar cierto escalado sin interrupción de servicio o no.

IMPLICA

Mayor coste
Puede implicar parada o degradación de servicio
Pérdida de cierto control, si se delega en servicios a terceros, dependiendo del
grado de flexibilidad que ofrezcan
NOTA Es fundamental medir el rendimiento de nuestra aplicación en su conjunto.
Idealmente se debería plantear la arquitectura de escalado una vez se tienen métricas
del funcionamiento de la aplicación o web con una base estable.

Escalado Horizontal
Supone el escalado en base a más máquinas menos potentes se distribuyan la carga
del trabajo a realizar.
IMPLICA

Coste (Depende del caso, pero generalmente implica menor coste que un
escalado vertical)
puede implicar degradación de servicio
Balanceo de Carga
Coordinación de las sesiones de usuario en caso de haberlas (Sticky
Sessions) o algún mecanismo para que iniciada una transacción entre cliente y
servidor que consta de varias peticiones, toda la transacción sea atómica (todas
las peticiones vayan al mismo servidor).

Alta disponibilidad
Consiste en garantizar que siempre haya al menos un mínimo de elementos de la
arquitectura para poder procesar correctamente una “petición” (por petición
entendemos aquí una transacción completa).
Aquí aparecen los conceptos de redundancia y SPOF.
Una arquitectura será más robusta cuanto más redundados estén los elementos
mínimos necesarios para llevar a cabo una transacción completa. Idealmente no
debería haber ningún SPOF.

Balanceo de Carga
Consiste en distribuir la carga de (tráfico, consultas a la base de datos…) entre
distintos elementos de la arquitectura.
El balanceo puede hacerse mediante hardware (más caro pero más fiable) o
mediante software (más flexible pero exige un conocimiento mayor).

CDN : Content Delivery Network


Es una red de servidores distribuída geográficamente destinada a reducir los tiempos
de latencia en la entrega de contenidos.
La latencia puede ser crítica según el tipo de proyecto:
Streaming de Vídeo
Aplicaciones en tiempo real
Si tu web va a ser visitada desde un móvil y la velocidad de la red móvil es
mala.
Para hacerte un idea de cuánta latencia tenemos en función de la localización donde
nos encontremos, puedes consultar este documento: Latency, the new web
performance bottleneck

Caché
Es un mecanismo para “acelerar” respuestas previamente generadas y reutilizar
recursos previamente obtenidos.
La caché puede situarse a nivel de cliente, servidor, base de datos, código…
Puedes hacer uso de ciertos mecanismos en HTTP para “cachear”
contenidos: Almacenar HTTP en caché
En el caso concreto de servidores web también tienes puedes soluciones como:
Varnish
memcached
Redis

Rendimiento (Performance)
La mejora de rendimiento de una aplicación o servicio depende de muchos
factores. NO hay soluciones universales.
El rendimiento suele ir ligado a la velocidad, pero también es importante
la percepción de la velocidad.
Si quieres saber más sobre cómo se comportan los distintos navegadores en su faceta
de Network, visita este enlace : Browserscope
NOTA : Puedes tener perfectamente configurado un backend y que tu aplicación
parezca lenta. Los navegadores a veces te pueden jugar una mala pasada si no sabes
cómo funciona un navegador.

Protocolos
HTTP y HTTPS(SSL/TLS)
HTTP2 / Spdy
WebSockets

Conceptos sobre Seguridad

CORS (Cross Origin Resource Sharing)
Mecanismo por el cual se puede limitar/retringir el uso de recursos de dominios fuera
de del dominio propio de la web vía cabeceras HTTP.
Para más información sobre el tema, podéis consultar la entrada de la Wikipedia al
respecto : Cross­origin Resource Sharing

Ataques
Todo servicio expuesto en Internet puede ser vulnerable a ataques de distinta
naturaleza. Si somos nosotros los que administramos el servicio, debemos
preocuparnos de estar preparados ante ciertos ataques como:
DOS y DDOS: Denegación de servicio. Se produce por saturación de peticiones.
Si queréis profundizar sobre el tema, hay un tutorial disponible en OpenWebinars.
XSS y SQL Injection: Sucede cuando no se comprueban y sanitizan las entradas
(vía formulario generalmente) en nuestra web.
Estos son algunos de los ataques más comunes. Dependiendo del tipo de ataque y su
explotación debemos tomar medidas en diferentes frentes.

RECURSOS

Técnicas de evasión de Filtros (OWASP)
Técnicas de Prevención de XSS (OWASP)
Lista de Ataques según la OWASP
HTTP Headers ­ The simplest security
WebAppSec / Web Security Verification
Tu Devops me da trabajo ­ Charla en Codemotion 2015 por Daniel García

Potrebbero piacerti anche