02/01/2013

Escalabilidad: acompañando el crecimiento de un sitio web

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.

0

angularjs Aplicaciones en Facebook aplicaciones mobile behavioral targeting Botones Call-to-action breadcrumbs breadcrumbs web búsqueda de personal búsqueda facetada Call-to-action buttons Client-side cliente-destacado cms a medida coding comercio electrónico content marketing CSS3 PIE cuanto debe pesar un sitio data-driven web design Datos estructurados Defacement Denegación de servicio Desarrollar una aplicación web desventajas de PhoneGap diseñar newsletters diseño web diseño web argentina diseño web esqueuomórfico Diseño web responsive Diseño web responsivo diseño web santa fe diseño web Smart TV diseño web televisores DOM desde PHP enlaces rotos filtros de búsqueda flash flat web design formularios sitio web fragmentos enriquecidos función de autocompletar futuro de la realidad aumentada html HTML5 html5shiv inbound marketing Initializr interfaces Web para televisores javascript jobs jQuery Mobile Mapbox maquetado html/css maquetador web masonry layout menú de navegación menú desplegable Metodologías ágiles Modernizr MVC Navegación por teclado oferta laboral OpenStreetMap paginas de Facebook Paper js Paper js framework personas Phishing plan de QA Polyfills polymer portfolio-destacados portfolio-inicio programacion de CMS Programadores WordPress página de contacto página de error 404 que es Backbone.js Realidad aumentada Resultados instantáneos server-side skeuomorphic design sliders y usabilidad soporte Internet Explorer Storytelling Underscores usabilidad usabilidad buscadores user-centered design ux velocidad de carga web Vendor prefixes ventajas jQuery Mobile Ventanas integradas versiones antiguas de Internet Explorer WAI-ARIA web components web imprimible Web Semántica WordPress para ecommerce