Lista de Artículos Inicio
- Año II  


Escalabilidad, un factor a tener en cuenta

Victor Hugo Lamadrid Mendoza (*)

Analísta - Desarrollador Web - OSIPTEL
Ing. Informático
Miembro Fundador de informatizate
vh_lm(at)hotmail(dot)com
Abril 19 del 2004.


Lean la siguiente frase : "La escalabilidad constituye siempre un factor decisivo en un buen diseño".

En la frase anterior, hay una palabra que es continuamente utilizada en numerosos libros académicos, con la intención de tratar los principios y técnicas de los sistemas distribuidos. ¡Si! la palabra es "escalabilidad".

Se ve que el adjetivo escalable se convierte en la "herramienta" preferida para calificar las características de cualquier tipo de tecnología de software para entornos distribuidos.

En la función de desarrollador, se tiene que llamar la atención de los demás sobre la cuestión de la escalabilidad. Como suele pasar, uno no sabe nunca lo que sucede en la administración de un proyecto.

Y es aquí donde emerge una interrogante

¿Qué significa la escalabilidad a fin de cuentas?



En teoría se puede afirmar que existen dos formas básicas de poner en marcha un sistema con el atributo esencial de la escalabilidad:

  • Optimizar el sistema de forma lógica en el nivel de diseño apelando a las soluciones y la creatividad de los desarrolladores.

  • Aplicar características integradas de una determinada combinación de hardware y software

Casualmente, el segundo enfoque es el que se ha utilizado durante años cuando, todavía en la era previa a Internet, la principal preocupación de los usuarios era el rendimiento y la solidez sin tener en cuenta el problema de la escalabilidad. (En realidad, se trata de un problema relativo cuando no existe una amplia conectividad de Internet.)

Hace años, debido a la limitación en la oferta de soluciones integradas asequibles y que ofrecieran una gran variedad de características, los usuarios se centraron principalmente en los problemas de diseño, prestando especial atención a la estructura de las bases de datos y al costo computacional de las diversas operaciones.

Esta visión de la escalabilidad independiente del hardware parece haberse superado hoy día, donde la disponibilidad de hardware de gran potencia y a un costo relativamente bajo deja de lado la optimización y la eficacia del diseño a un lugar secundario en las prioridades generales de la administración de un proyecto.


Escalabilidad y el factor de crecimiento

En general, la escalabilidad hace referencia a la capacidad del sistema para mantener, si no mejorar, su rendimiento medio conforme aumenta el número de clientes. La escalabilidad, por tanto, parece un concepto claro y sencillo, aunque también puede ser abstracto.

Se trata de un atributo del sistema que procede de la combinación de todos los demás atributos, la implementación y el diseño general, así como del modelo de interacción que se elija y no se trata de una propiedad del sistema que se pueda activar y desactivar mediante programación o que se pueda de alguna forma controlar directamente.

La escalabilidad se encuentra relacionada en cierta forma con el rendimiento y no constituye un problema si el sistema está bien diseñado y aplica esquemas razonables y coherentes.

La escalabilidad constituye factor influyente en el crecimiento de un sistema. Un sistema que necesita crecer es un sistema con un rendimiento actual que no dispone del número de usuarios esperado. ¿Cómo se puede mejorar estructuralmente su rendimiento?. Hay dos opciones :

  • Con un hardware de mayor potencia o

  • Con una mejor combinación de hardware y software.

Estas dos opciones adoptan expresiones más interesantes y comerciales. El enfoque centrado en el hardware se denomina escala en sentido ascendente. La delicada combinación de hardware y software se denomina escala hacia afuera.


Escala en sentido ascendente

La escala ascendente de un sistema significa básicamente que se realiza la migración de todo bajo la protección de un nuevo sistema de hardware mucho más eficaz. Una vez que el sistema está preparado, se hacen copias de seguridad de las tablas y aplicaciones y se coloca en línea. El impacto en el código existente y la organización del sistema es mínima.

La escala en sentido ascendente tiene un lado negativo con un par de puntos a los que debe prestarse más atención. El primero y más importante, un sistema que se escala en sentido ascendente tiene un único punto de error y finalmente estará sujeto a algún tipo de limitación de hardware. La escala ascendente aumenta la eficacia de procesamiento de un servidor al utilizar un equipo con mayor potencia. Aunque pueda parecer fuera de la percepción actual, el crecimiento de la potencia de procesamiento en una sola parte del hardware dispone de un umbral físico superior que algún día se alcanzará.

En segundo lugar, la aproximación a este límite superior supone considerables costos, tanto en cuanto a tiempo (por encima de un determinado límite, la tecnología puede tardar años en duplicar la potencia), precios y por último, pero no por eso menos importante, el consumo de energía y el espacio que ocupa en la oficina.

De este modo, la escala en sentido ascendente resulta la primera opción razonable a tener en cuenta debido al limitado impacto que tiene en su estructura existente.


Escala hacia fuera

La escala hacia afuera aumenta la potencia de procesamiento del sistema en su globalidad, en oposición a aumentar la potencia de una única parte del mismo, que actúa como servidor. Un sistema con escala hacia afuera es intrínsecamente modular y está formado por una agrupación de equipos. Por ejemplo, la escala hacia afuera de un sistema significa agregar uno o varios equipos a la red.

En un entorno con escala hacia afuera, con un gran número de particiones, es necesario emplear un concepto más abstracto e independiente del hardware de la potencia de procesamiento. El total de la potencia de procesamiento es la suma de la velocidad física de cada equipo transferida por la partición de aplicaciones y datos extendida a través de los nodos.

En la escala hacia afuera no hay límites para el crecimiento de un sistema. Algo que resulta totalmente ventajoso en este momento. Este tipo de escala, sin embargo, exige una enorme cantidad de trabajo de diseño y reimplementación. Un sistema que se ha concebido según una lógica de un único servidor se debe volver a estructurar y organizar para cumplir con los requisitos de la escala hacia afuera.

El usuario es el que debe decidir cómo crear la partición de los datos entre los distintos servidores DBMS. La ruta de acceso de las aplicaciones a los datos debe optimizarse con cuidado siguiendo planes adecuados de ejecución. Un análisis correcto, proactivo y frecuente de la actividad de los usuarios resulta esencial para ajustar el sistema durante su ciclo de vida.

A este precio, dispone de un sistema prácticamente infinito al que puede agregar recursos de procesamiento en el nivel medio así como en el nivel de datos para adaptarse al creciente número de usuarios y cargas de trabajo.

Para un sistema escalable, el aspecto crítico es la rapidez con la que se espera que crezca el número de usuarios. El crecimiento relativo de los números es mucho más importante que los números absolutos.

El diseño de un sistema para un público constante de cien millones de usuarios resulta mucho más sencillo que la creación de un sistema para cien usuarios de hoy, pero que se espera que, con el tiempo, se multiplique de manera espectacular. A partir de aquí, se entiende que la demanda de escalabilidad es especialmente fuerte en las aplicaciones Web de comercio electrónico e industrial debido a que esta variedad de sistemas está expuesta a un crecimiento importante y repentino de usuarios.


¿Escala en sentido ascendente o hacia afuera?

Es ya una realidad que un servicio Web de tercera generación puede tener graves requisitos en cuanto a hardware. En principio, el usuario tiene una pregunta que resolver: ¿escalar en sentido ascendente o hacia afuera?

La escala ascendente aumenta con el tiempo la potencia de un solo sistema de hardware. La escala hacia afuera traslada el sistema hacia una granja en crecimiento de sistemas interconectados pero de menor tamaño.

La escala en sentido ascendente de un sistema lo hace más expuesto a errores, intrínsecamente menos sólido y no actualizable en un umbral determinado. También puede resultar costoso en cuanto a consumo de energía, espacio y precio. Por otra parte, este tipo de escala resulta tan sencillo y perfecto como realizar una copia de seguridad y restauración.

La escala hacia afuera convierte al sistema en intrínsecamente más sólido, ampliable y, en general, menos costoso, aún cuando trabajar con un solo equipo es siempre mejor que tratar con decenas o cientos de ellos.

Sin embargo, la lista de ventajas y desventajas de ambos enfoques es, en cierta forma, relativa y depende totalmente del proyecto.

La escala en sentido ascendente o hacia arriba depende de la naturaleza del sistema. La escala hacia afuera se recomienda ciertamente siempre que una única instancia de un servidor de base de datos SQL Server, probablemente ejecutándose en un único equipo de varios procesadores, pague la cuenta de las necesidades de acceso a los datos. Casualmente, se trata del modelo de escalabilidad de las granjas Web.

Sin embargo, el modelo de escala hacia afuera de la granja Web es sólo un modo de considerar la escalabilidad horizontal. Si necesita procesar grandes volúmenes de datos simultáneos (por ejemplo, un sistema OLTP), es probable que necesite la cooperación de varios servidores para hacer realidad el viejo dicho de divide y vencerás. En este caso, los datos deben organizarse correctamente. Se trata de una enorme cantidad de trabajo que no se puede arriesgar. Antes de emprender un proyecto de estas características, asegúrese de que su sistema se encuentra preparado para este salto cuantitativo. Es decir, asegúrese de que se puede considerar un sistema OLTP.

Como regla general, mientras que la escala hacia afuera parece más prometedora, se debe considerar, en primer lugar, la escala en sentido ascendente y descartarla atendiendo a buenas razones.


Conclusiones

A pesar de la teoría de las tecnologías de escala en sentido ascendente y hacia afuera, hay algunos puntos que deben tenerse en cuenta:

  • La escalabilidad trata de la complejidad de cálculo e indirectamente sobre el rendimiento.

  • La escala ascendente con hardware o hacia afuera utilizando servicios especiales de bases de datos sólo debe considerarse cuando ya se haya alcanzado un buen compromiso entre la complejidad de cálculo óptima de las tareas y los esfuerzos de implementación.

Sin embargo, sé que el empleo de hardware más veloz resulta más rápido que mejorar los algoritmos, optimizando los planes de ejecución de consultas, descubriendo y eliminando cuellos de botella. ¡Y resulta una buena ayuda con los plazos de entrega!


Recursos y referencias web

http://www.microsoft.com/spain/enterprise/beneficios/escalabilidad.asp

http://msdn.microsoft.com/columns/




Otros Artículos del Autor: Fecha Publicación:
Arquitectura de Software (PARTE II) Febrero 8 del 2004
Arquitectura de Software 06 de Octubre del 2003
UML y el Empleo de los Diagramas de Estados 10 de Diciembre del 2002






Version PDF


Copyright © 2002-2004 Grupo Informatizate. Reservados todos los derechos.
Prohibida la reproducción total o parcial en cualquier formato sin previa autorización.
On-line desde el 27 de Noviembre del 2002