Características Técnicas: Escalabilidad, Robustez y Rendimiento
La plataforma está diseñada y construida con el objetivo de ser escalable y robusta y ofrecer un alto rendimiento tanto en la capa de procesamiento como en la almacenamiento
Escalabilidad
La plataforma propone la Escalabilidad Horizontal como mecanismo principal de escalado.
La escalabilidad horizontal permite crecer de forma escalonada, sin tener que dimensionar toda la infraestructura desde el momento inicial, reduciendo así costes de adquisición y operación de la plataforma, y sólo tener que asumir el coste necesario en cada momento del tiempo.
El escalado se consigue a través del despliegue de plataforma sobre contenedores Docker gestionados por Kubernetes, habilitando así el escalado dinámico ante la detección de un pico de carga.
El rendimiento permanecerá estable independientemente de la carga global, aprovechando toda la capacidad de máquina disponible sin impacto entre los distintos módulos.
Este escalado horizontal se puede realizar de forma dinámica en función de la carga de trabajo detectada, de tal manera que, ante un pico de trabajo, la respuesta del sistema puede permanecer estable.
Estas máquinas añadidas de forma horizontal no requieren ser de elevadas características técnicas, permitiendo conseguir este crecimiento mediante la instalación de lo conocido como “commodity hardware” (es decir, hardware básico y de reducido coste) que posibilita la adquisición de varias máquinas poco potentes, pero cuya suma aporta al sistema un rendimiento mejor y un ROI mucho mayor que realizando continuos upgrades sobre las máquinas existentes.
Robustez
La plataforma es capaz de rendir de manera satisfactoria en todo momento, soportando escenarios puntuales de alta carga sin resentirse y por otro lado asegura su estabilidad para dar servicio de forma continua.
Para demostrar estas capacidades se incluyen ejemplos de pruebas de estrés realizadas a la plataforma que dan una idea de cómo esta se comporta ante diferentes escenarios.
Escenario de Alta carga: Esta prueba se centra en cargar la plataforma en un intervalo de tiempo pequeño, obteniendo así el componente limitante y sensible a escalar.
Durante esta prueba, se muestra que el cuello de botella viene dado por la CPU ya que se observa la degradación del tiempo de respuesta en el mismo punto en el que las CPUs se encuentran al 100% de utilización. Considerando esta limitación como el menor riesgo, ya que esto suele ser más fácil de escalar que cualquier otro cuello de botella. Podemos ver el resultado del uso de la CPU en el siguiente gráfico:
Escenario de Estabilidad: En el escenario de estabilidad se extiende una carga de trabajo estable durante un período de tiempo de 8 horas con 50 subprocesos simultáneos.
El rendimiento de la CPU se mantiene estable durante la ejecución de la prueba de estabilidad, con una carga constante manteniéndose al 20%.
Rendimiento
La plataforma se ha diseñado de manera modular, de forma que cada componente pueda escalar de manera horizontal (añadiendo nuevos nodos en paralelo) repartiendo la carga entre todos ellos.
Esta capacidad está implantada en todas las capas de la Plataforma, desde los módulos de adquisición expuestos al exterior para habilitar la ingesta masiva de información de información, los motores de streaming para permitir procesamiento masivo en tiempo real, hasta la capa de persistencia que aprovechan sus capacidades de replicación para repartir carga de procesamiento entre sus nodos favoreciendo el tiempo de respuesta.
La plataforma asegura el rendimiento de diversas formas:
A nivel de arquitectura y diseño, en la plataforma se han seleccionado siempre tecnologías, frameworks y software de amplia aplicación en entornos críticos (por ejemplo, Spring, Kafka, Hazelcast, MongoDB).
Esta elección se complementa con pruebas de rendimiento para las piezas críticas en cuanto a la ejecución de la plataforma.
Asociado al despliegue de la plataforma se realizará el despliegue del entorno de pruebas de rendimiento que se arrancará en momentos puntuales para certificar el rendimiento de la plataforma.
El dimensionamiento de la plataforma se realiza conforme a la previsión de carga del sistema. Además, al basar el despliegue en contenedores y Kubernetes el escalado de los componentes ante situaciones de carga es inmediato, simplemente provisionando más infraestructura (escalado horizontal) donde ejecutar los contenedores, o incrementando la capacidad de la infraestructura vertical (escalado vertical).