Cuando un sistema informático puede llegar a procesar grandes cantidades de datos, es muy importante que éste sea escalable. Es decir, que pueda crecer para soportar cargas de trabajo mayores a las que originalmente soporta.
Una solución Big Data es un sistema escalable, puesto que un clúster puede aumentar el número de nodos existentes. Sin embargo, no todo sistema escalable requiere de una solución Big Data.
Escalabilidad horizontal
Un escenario candidato para escalabilidad es aquel necesita crecer para poder dar respuesta a una demanda creciente de recursos.
En un sistema donde el número de usuarios (y por tanto de recursos), puede crecer de manera dinámica, puede ser necesario en algún momento añadir capacidad computacional a ese sistema para poder garantizar el servicio a todos los usuarios.
Cuando un sistema informático llega a su capacidad máxima, si queremos escalabilidad horizontal, debemos añadir otra máquina para así poder mantener el servicio. En este caso hablamos de escalabilidad horizontal.
Otra opción es la de la escalabilidad vertical que vendría a ser el hecho de añadir recursos a esa máquina. Eso sucede cuando por ejemplo se amplía la memoria RAM, el número de procesadores o la capacidad de disco. Sin embargo, el problema de la escalabilidad vertical es que no es tan flexible como la horizontal. Por este motivo, no se ha tenido en cuenta en este artículo.
¿Dónde están los datos?
En el caso de la escalabilidad horizontal las nuevas máquinas se utilizan para dar servicio desde el punto de vista de proceso. Y para procesar las peticiones de servicio, es necesario tener datos. Pero, ¿dónde están los datos? Los datos se encuentran almacenados típicamente en un repositorio común: la base de datos.
En un escenario con escalabilidad horizontal, la base de datos puede ser centralizada o replicada.
En el caso de una base de datos centralizada, todos los procesos que dan servicio a las peticiones de usuarios deben conectarse a un recurso único, compitiendo por sus recursos para resolver las consultas. Este escenario puede provocar un cuello de botella en el acceso a la base de datos, ya que ésta no ha escalado (solamente ha escalado la parte de peticiones de proceso).
La solución, cuando la carga de la base de datos es muy grande, es la de replicar la base de datos en las máquinas que aparecen durante el aumento de la capacidad del sistema. En este caso, la máquina dispone de su propia copia de la base de datos.
Desde el punto de vista de la gestión y el acceso a los datos ambas situaciones son muy similares (no entramos a discutir aquí la complejidad de la replicación de datos). Pero no dejan de ser un escenario clásico, con una base de datos completa contenida en un único punto.
Computación distribuida
Con la computación distribuida cambiamos totalmente de paradigma, tal y como ya expliqué en el artículo ¿Qué es la computación distribuida de Big Data?.
En este escenario los datos no se hallan centralizados en una única base de datos o en réplicas de ésta que contienen todos los datos necesarios para dar servicio a las peticiones de proceso de información.
En la computacion distribuida los datos están esparcidos por los diferentes nodos de un cluster. Además, el proceso de análisis de la información se realiza en paralelo en diferentes nodos de dicho cluster.
Escalabilidad horizontal vs. Big Data
Este punto es sumamente importante a la hora de identificar los requerimientos técnicos de una solución. A menudo estos dos conceptos provocan confusión. Es frecuente encontrar a personas con un perfil técnico pero con serias dudas al respecto. Sobre todo si esa charla se incluye en el ámbito del Big Data. En estas situaciones la gente está predispuesta a utilizar una tecnología Big Data. Y por tanto, son propensos a adoptar una solución que implique la utilización de una arquitectura Big Data (aunque, como hemos visto, haya una solución alejada de este paradigma que pueda dar respuesta a su problema).
En estos casos siempre animo a los confundidos a dejar aparte y analizar los requerimientos técnicos a los que se enfrentan. Al identificar esos requerimientos y separarlos de ese interés concreto sobre Big Data es relativamente sencillo que esas personas se den cuenta de que Big Data no es la solución que necesitan.
Conclusión
Big Data utiliza computación distribuida (que no es lo mismo que escalabilidad horizontal), a pesar de que el crecimiento de un cluster de Big Data se basa precisamente en esa escalabilidad horizontal.
Para determinar la solución técnica más adecuada para un sistema informático, es necesario analizar los requerimientos funcionales y técnicos, y dejar de lado los intereses y predisposiciones existentes, ya que éstas pueden afectar a la decisión, restando objetividad al análisis.
Si finalmente decidimos usar una plataforma de Big Data, tendremos como beneficio la computación distribuida. Algo que nos permitirá ir más allá que una «simple» escalabilidad horizontal.