Mostrando entradas con la etiqueta hardware. Mostrar todas las entradas
Mostrando entradas con la etiqueta hardware. Mostrar todas las entradas

miércoles, 4 de diciembre de 2013

No olvides la escalabilidad

¿Qué es escalabilidad?

La escalabilidad se puede definir informalmente como la posibilidad que posee un sistema para incrementar su capacidad de atención a medida que el número de solicitudes o usuarios se incrementa.   Es en otras palabras la forma en la cual un sistema puede adaptarse a los cambios potenciales en la demanda sin perder calidad en el servicio prestado.   De esta manera, se debe considerar la escalabilidad al momento de adquirir y producir aplicaciones informáticas, por ejemplo, suponga que usted administra una universidad y para efectos administrativos se necesita un sitio web donde se puedan publicar las notas de cada uno de los estudiantes, inicialmente la institución educativa tendrá 1000 estudiantes y se adquiere un software capaz de manejar 500 usuarios por minuto, como todos los estudiantes no entran al mismo tiempo a consultar sus notas, es probable que el sistema adquirido cumpla con la capacidad, sin embargo a medida que la institución adquiere prestigio en su entorno, el número de estudiantes se incrementa digamos que a unos 5000, es muy probable que durante periodos de entregas de notas estos nuevos estudiantes logren superar la capacidad permitida por la aplicación usada para la administración. Una primera solución es encontrar otra aplicación que supla la necesidad, sin embargo, si la tendencia en crecimiento se mantiene para el siguiente año se tendrá nuevamente el mismo problema.  Este sencillo ejemplo nos sugiere que las aplicaciones deberían poder adaptarse  a los cambios en la demanda de los servicios prestados por las mismas, y este tipo de situaciones son las que hacen necesario que las empresas productoras de software  deban evaluar lo que se define como escalabilidad para cada una de las aplicaciones que se producen de tal manera que siempre exista un mecanismo claro  que pueda ser utilizado para aumentar su capacidad y conservar la calidad y los niveles de servicios adecuados para las operaciones realizadas. 
En la mayoría de las ocasiones dicho mecanismo estará relacionado con agregar nuevo hardware a la infraestructura de operación, por ejemplo agregando mas máquinas o mejor hardware.  Teniendo en cuenta que ambas opciones pueden generar un incremento de la capacidad, la escalabilidad de aplicaciones puede clasificarse a partir de las siguientes categorías.

Escalabilidad Vertical

La escalabilidad vertical es la manera de conseguir mayores niveles de atención incrementando las capacidades de los recursos específicos consumidos por las aplicaciones, por ejemplo, aumentando el tamaño de la memoria principal, el número de CPUs de una máquina, el espacio en disco  o agregando tarjetas de red más potentes.
Aunque es cierto que en primera instancia esta puede ser una forma sencilla de aumentar la capacidad de los servicios prestados por nuestras aplicaciones, el sentido común nos indica que existe un límite asociado con el hardware que podemos actualizar, es decir, si nuestras tendencias de crecimiento están acordes con la ley de Moore, no debería haber ningún problema, pues todos los años contaríamos con componentes de hardware superiores a los del año anterior, pero ¿que ocurre si estamos creciendo por encima de la velocidad a la cual crece la capacidad del nuevo hardware?  Esta es una pregunta que puede llegar a ser un poco molesta, porque plantea aspectos del diseño de las aplicaciones que debieron ser considerados mucho antes de poder identificar que este tipo de problemas se podrían presentar, dependeremos entonces de la posibilidad de que nuestra aplicación pueda escalar horizontalmente.

Escalabilidad Horizontal


Como se mencionó anteriormente la escalabilidad vertical tiene un límite, y este se produce cuando ya no existe el hardware que necesitamos para proveer con la misma calidad a nuestro creciente número de usuarios dentro de la operación.  Si pensamos en la escalabilidad vertical como el hecho de aumentar el tamaño de un tanque de agua utilizado para suministrar un fluido a una población, podríamos visualizar la escalabilidad horizontal como el incremento del fluido suministrado agregando cada vez mas tanques de manera tal que la escalabilidad horizontal nos proporcionará un mecanismo repetible indefinidamente a medida que el número de usuarios se incremente, logrando que la capacidad del sistema se adapte cada vez a la nueva demanda.