Rendimiento de la Plataforma

El diseño de Athento ECM (basado en Nuxeo EP) se ha planteado bajo la premisa de la modularidad. Al ceñirse al modelo de desarrollo OSGI, Nuxeo se construye sobre componentes software. El código incluye cientos de componentes que han sido escritos por la comunidad de desarrolladores de Nuxeo. Estos componentes realizan muchas funciones, por ejemplo, la indexación de documentos, búsquedas, o la gestión de cuentas de usuario. Estos componentes siguen las especificaciones OSGi y se ejecutarán en contenedores implementados así mismo bajo OSGi.  Para más información sobre OSGi consulte http://www.osgi.org/Main/HomePage

En cuanto a escalabilidad y performance del software, es importante destacar que el desempeño de Nuxeo ha sido evaluado en arquitecturas complejas. El performance ha sido testeado por ejemplo en una configuración de clúster como la que se muestra en la siguiente imagen. Como se observa en la imagen, dicha arquitectura se compone de dos servidores de Nuxeo y cuatro servidores dedicados a repositorios. Además, esta arquitectura fue desplegada en una infraestructura de nube pública, lo cual dificultaba los tiempos de respuesta.

En esta arquitectura, los dos Nuxeo servers corren en modo clúster coordinados por un balanceador de carga conectado a los 4 repositorios, cada uno de los cuales manejaba su propia base de datos PostgreSQL dedicada. Los datos binarios se almacenaban en un servicio blob desarrollado para Amazon.

El sistema se cargó con 66 millones de documentos. Cada documento se conformaba por un objeto “Documento” en Nuxeo con sus metadatos y una imagen capturada desde sistemas remotos (ERP, facturas y otras aplicaciones de negocio).

Las pruebas de performance de la aplicación se basaban en la realización de búsquedas en los repositorios desde la interfaz de usuario (aplicación JSF). Para testear el rendimiento se utilizó FunkLoad, una aplicación Open Source.

Bajo estas condiciones de arquitectura, infraestructura y carga de trabajo, el sistema arrojó de forma consistente 70 páginas de contenido por segundo con 150 usuarios concurrentes en el sistema haciendo consultas cada segundo y descargando contenidos. El performance fue bastante estable en pruebas que se prolongaron por 5 horas.

70 páginas de contenido por segundo con 150 usuarios concurrentes en una estructura clúster compleja y con una carga de 66 millones de documentos es un indicador bastante bueno de la capacidad del sistema de escalar y de mantener su performance en arquitecturas de alta disponibilidad. Debe tenerse en cuenta que 150 usuarios concurrentes consultando el sistema cada segundo es un uso muy por encima del uso típico de un sistema ECM. Estos datos son extrapolables de forma segura a un número de usuarios concurrentes de hasta 1500 en un entorno de producción real.

El soporte que ofrece la plataforma para entornos clusterizados, y con grandes volúmenes de documentos demuestra la capacidad de la plataforma para escalar. A continuación se muestran algunas gráficas arrojadas por FunkLoad sobre el performance de Nuxeo en las condiciones descritas.

De acuerdo con los resultados de las pruebas, estos límites pueden ser superados con facilidad. Ya que la arquitectura puede ser escalada a nivel horizontal, añadiendo más repositorios o nodos al clúster de Nuxeo. Así mismo, se puede escalar de forma vertical, mejorando la calidad de las máquinas utilizadas o poniendo el sistema en hardware dedicado y no en una nube pública.

Nuxeo además sigue trabajando de forma continua para mejorar la escalabilidad de almacenamiento de contenido. En junio de 2014, Nuxeo anunció su integración con bases de datos NoSQL, concretamente con MongoDB. Nuxeo fue la primera plataforma ECM en soportar MongoDB de forma nativa.

Además con el auge del modelo cloud, Nuxeo ha estado trabajando en pensar la escalabilidad desde 3 puntos de vista:

  • Escalabilidad progresiva y eficiente en términos económicos
  • Escalado rápido bajo demanda
  • Diseño preparado para el fallo y contingencias

Este nuevo paradigma de diseño le lleva a adaptarse de forma natural a entornos distribuidos. Esto es importante para tareas como la indexación, que consumen gran cantidad de recursos.

Las posibilidades de seguir escalando el sistema de forma horizontal son realmente potentes.

 

En una muestra constante del esfuerzo que realiza Nuxeo en materia de escalabilidad y alta disponibilidad, en 2014 se realizaron nuevas pruebas como las descritas en este punto, pero con mucha más exigencia del sistema:

  • 1 billon de documentos
  • 10 repositorios (cada uno con su base de datos PostgreSQL dedicada)
  • 1 clúster Elasticsearch

 

Los resultados fueron los siguientes:

  • Importación masiva de 6.000 documentos por segundo
  • indexación de 3.500 documentos por segundo
  • 3.500 request de la API por segundo con un tiempo de respuesta inferior a 0,2 segundos.