Ir al contenido principal
BlogBases de datosImplantar un sistema de gestión de documentos electrónicos basado en la nube

Implantar un sistema de gestión electrónica de documentos basado en la nube

EDMS-altamente-disponible-con-Mayan-y-PostgreSQL

Para el trabajo diario, el almacenamiento de documentos suele realizarse mediante software de productividad en línea y almacenamiento en la nube. La tarea se complica cuando una aplicación necesita procesar, almacenar y recuperar grandes volúmenes. Utilizar un sistema de gestión de documentos electrónicos (EDMS) es una solución mejor, ya que están diseñados para almacenar, indexar y recuperar documentos con un alto rendimiento y disponibilidad, y algunos incluyen funciones como metadatos personalizables y control de versiones.

Si bien hay muchas soluciones EDMS basadas en SaaS disponibles, puede implementar su propio EDMS de código abierto para mantener un control completo sobre sus datos. En este post, aprenderás a configurar un EDMS maya de alta disponibilidad respaldado por una base de datos PostgreSQL.

Ventajas de EDMS

Esta configuración es ideal si almacena y procesa un gran número de documentos y necesita un EDMS que esté conectado a una aplicación basada en web, eliminando la necesidad de instalaciones en el lado del cliente. Ejecutar un EDMS como eje central garantiza:

  • seguridad, privacidad y control total de sus datos;
  • fácil integración con software de terceros; y
  • automatización de flujos de trabajo documentales para procesos empresariales.

¿Por qué PostgreSQL?

PostgreSQL es un potente sistema de gestión de bases de datos objeto-relacional de código abierto muy valorado por su escalabilidad, seguridad y rendimiento. Con el fin de soportar el escalado de extremo a extremo para su aplicación, su base de datos también necesita estar altamente disponible, por lo que este ejemplo de arquitectura incorpora una herramienta de replicación específicamente para PostgreSQL.

Primeros pasos con Mayan EDMS

Mayan es un EDMS de código abierto basado en web escrito en Python. Mayan por defecto (por diseño) se instala y ejecuta en un único sistema; todos sus componentes de aplicación y base de datos pueden vivir en un único servidor o dentro de varios contenedores Docker. Aunque esto es genial para pruebas o entornos triviales, para un entorno de producción queremos alta disponibilidad y un concepto ampliamente conocido y adoptado conocido como el principio SoC (Separation of Concern). Se trata de una práctica recomendada crucial para crear aplicaciones escalables y en capas. Esta arquitectura de referencia demuestra cómo hacerlo con Mayan.

Pros

  • El código abierto significa que no hay que pagar licencias
  • Almacene, visualice y revierta fácilmente las versiones de los documentos
  • Búsqueda de documentos a texto completo mediante metadatos personalizables definidos por el usuario
  • Controles de acceso flexibles para diseñar funciones y permisos de usuario eficaces
  • Flujos de trabajo personalizables con activadores de eventos para mantener los documentos actualizados

Contras

  • Complejo para casos de uso menores
  • La interfaz de usuario es menos intuitiva que otras soluciones
  • Recursos pesados para las CPU que ejecutan el reconocimiento óptico de caracteres (OCR)

Arquitectura de referencia de la aplicación

Para optimizar las capacidades de Mayan en aplicaciones del mundo real, nuestra arquitectura utiliza:

Un NodeBalancer distribuye el tráfico a nuestros nodos de aplicación. Si un servidor de aplicaciones se cae, el servicio de equilibrio de carga empezará a dirigir el tráfico únicamente al nodo sano. En cuanto el nodo no sano se recupere, volverá a equilibrar las conexiones como antes. Esto hace que sea fácil añadir, eliminar o actualizar servidores de aplicaciones sin tiempo de inactividad, todo mientras se mantienen las conexiones a los nodos de base de datos PostgreSQL.

Para el "cerebro" de la aplicación, Mayan y NGINX se despliegan en las mismas máquinas virtuales y podemos aprovechar el soporte de Mayan para s3boto3 como backend de almacenamiento para subir nuestros documentos a Linode's S3-compatible Object Storage.

Si su aplicación es de misión crítica y utiliza PostgreSQL como base de datos principal, la incorporación de Bucardo proporciona una mejor garantía de tiempo de actividad y hace que su base de datos sea tolerante a fallos.

También puede lograr alta disponibilidad y replicación con un servicio de base de datos gestionada que soporte PostgreSQL, pero tenga en cuenta que la mayoría de las ofertas DBaaS se centran en actualizar las versiones de PostgreSQL y mantener su clúster de base de datos en línea y disponible. Implementar Bucardo le da a su base de datos PostgreSQL replicación bidireccional entre dos o más nodos de base de datos, asegurando que su base de datos esté altamente disponible.

En este ejemplo, todos los nodos están protegidos con cortafuegos en la nube para protegerlos de la Internet pública y se comunican internamente a través de la dirección privada VLAN. Los servidores de aplicaciones se conectan a las bases de datos a través de una dirección IP flotante compartida VLAN con keepalived para facilitar la conmutación por error.

Keepalived, u otro sistema de conmutación por error de IP como FRRouting (FRR), se implementa a nivel de base de datos para que un nodo de base de datos sano se conecte al clúster de sus nodos de aplicación.

Tolerancia a fallos en archivos críticos

A menudo, un SGDE sirve de eje central para las operaciones cotidianas y alberga algunos de los archivos más importantes de su organización. Nuestra aplicación está diseñada con redundancia en todos los niveles para garantizar la tolerancia a fallos y optimizar el rendimiento:

  • Los documentos se almacenan en Linode's highly available Object Storage.
  • La base de datos está en un nodo separado para aumentar el rendimiento y evitar tener un único punto de fallo.
  • Bucardo realiza la replicación automática de la base de datos entre los nodos Postgres.

Más contenido técnico y arquitecturas

Nuestro equipo de ingeniería de soluciones comparte marcos de trabajo, guías y herramientas como ésta para facilitar a los desarrolladores la creación de aplicaciones que sigan las mejores prácticas de arquitectura de software. Echa un vistazo a nuestra arquitectura de referencia de clúster Galera para una arquitectura MySQL/MariaDB de alta disponibilidad, o explora nuestros ejemplos de arquitectura de referencia disponibles en Linode Docs.


Comentarios (2)

  1. Author Photo

    How much those it cost to implement the mayan edms in a month and in a year.
    Your swift response is best appreciated

Dejar una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *.