Escalabilidad: acompañando el crecimiento de un sitio web

La escalabilidad es la capacidad de un sistema de software de adaptarse a condiciones de operación más exigentes manteniendo su funcionalidad. En general, un sistema escalable es aquel que puede «crecer» (aumentar el volumen de su base de datos, incorporar módulos, atender a un mayor número de usuarios) sin dejar de funcionar ni empeorar la calidad de su servicio.

Si hablamos de desarrollos en línea, la escalabilidad de un sitio o una aplicación web se ve permanentemente comprometida por el nivel de tráfico. A diferencia de una aplicación de escritorio, que puede utilizarse en la intranet de una empresa y, por lo tanto, tener un número de usuarios limitado, en la mayoría de los desarrollos web nunca sabemos cuándo podemos recibir aumentos repentinos y drásticos en el volumen de usuarios. En estos casos, la única manera de reducir la incertidumbre es observar de manera permanente el comportamiento del sitio o la aplicación.

Otro factor importante es el crecimiento del contenido. La acumulación de entradas en un blog, el aumento en la cantidad de perfiles de usuario, el crecimiento de los registros de operaciones realizadas en el sitio: muchos proyectos web crecen de manera natural con el paso del tiempo, convirtiendo a la escalabilidad en una necesidad.

A medida que un sistema crece, se agotan los recursos del hardware que permite su uso. ¿Cómo reducir el impacto de ese crecimiento? La escalabilidad debe plantearse mucho antes de la implementación, en la etapa de diseño del sistema. Deben conocerse de antemano los recursos disponibles y saber cuánto se utilizarán. La solución debe procurar que cada recurso se utilice y se libere en el menor tiempo posible. El uso de un mismo recurso para distintos usuarios al mismo tiempo también puede aumentar la escalabilidad.

Si el diseño es eficiente en el uso de los recursos, se reducirá en buena medida la necesidad de optimizar código y hardware una vez que la aplicación ya entró en funcionamiento. Esto ahorra enormemente el tiempo dedicado al mantenimiento de la aplicación y aumentará su estabilidad frente a incrementos inesperados en el tráfico.