Acoplamiento de Discourse con Chat y Cloud

Tras una pregunta de @debryc aquí, esta es una breve nota sobre el trabajo que hemos realizado para que nuestros foros de Discourse funcionen armoniosamente con el almacenamiento en la nube (una instancia de NextCloud) y el chat (en nuestro caso, Mattermost).

Es un post largo, así que ocultemos los detalles hasta que hagas clic en la flecha…

Post completo y extenso

Debo empezar aclarando que no soy el desarrollador de este sistema; ha sido creado en C#/.NET por otro miembro del equipo de Tecnología, por lo que no puedo responder preguntas técnicas detalladas al respecto. Solo estoy exponiendo los problemas que queríamos resolver y lo que hemos hecho.

Antecedentes: Estábamos utilizando un sistema integrado (Basecamp) para proporcionar discusión, chat en tiempo real e integración de almacenamiento de archivos. Había muchos elementos insatisfactorios en este sistema, tanto estructurales como de seguridad, por lo que decidimos migrar la organización a un nuevo sistema o conjunto de sistemas de código abierto.

Realizamos una amplia búsqueda y evaluación: algunas de nuestras decisiones se guiaron por la conveniencia, otras por encontrar la mejor coincidencia con nuestros requisitos y otras por la necesidad de hacer que la ruta de migración para 10.000 usuarios fuera lo menos dolorosa posible (los usuarios incluyen una alta proporción de personas no técnicas y un número significativo de usuarios tecnófobos, todos con opiniones firmemente arraigadas; ¡no es fácil complacerlos!).

Para ir al grano, nos decidimos por tres componentes separados: Mattermost para proporcionar chat en tiempo real, Discourse para discusiones más reflexivas y Nextcloud para almacenamiento seguro de archivos y edición colaborativa (sustituyendo a una combinación de almacenamiento nativo de Basecamp y Google Docs). Todos están alojados en nuestros propios servidores gestionados.

Por lo tanto, ahora necesitábamos proporcionar una manera de unir los tres inicios de sesión requeridos de forma relativamente fluida y crear automáticamente cuentas de usuario y asignar usuarios a los grupos/foros de acceso adecuados (Discourse), grupos de almacenamiento compartido (Nextcloud) y equipos y canales (Mattermost).

La organización tiene varios cientos de grupos/equipos separados (por ubicación y función) y los usuarios pueden pertenecer a muchos grupos; algunos son cerrados y otros están abiertos para que cualquier usuario se una libremente.

El primer problema fue crear cuentas de usuario en tres sistemas y asegurar inicialmente que tuvieran el mismo nombre de usuario (para que puedan reconocerse entre sí) y la misma contraseña (para que al menos tengan un único conjunto de credenciales que recordar/almacenar y, en última instancia, un inicio de sesión único para los tres sistemas).

También necesitábamos una forma de gestionar cómo asignar a las personas a los grupos correctos al crear la cuenta; no había habido una buena correspondencia entre los grupos reales y los grupos en línea en el antiguo sistema, por lo que no podíamos simplemente migrarlo.

La solución que encontramos fue un sitio web separado, llamado Hub, que se encargaba de llevar un registro de las cuentas de usuario y utilizar las API de los tres sistemas para crear y actualizar los detalles de los usuarios.

El Hub también permitía a los “Campeones Tecnológicos” de cada grupo (o conjunto de grupos) invitar a personas a los nuevos servicios, asegurando así que solo las personas adecuadas terminaran en cada lugar.

Así, un usuario recibe un correo de invitación para unirse a los nuevos servicios con un enlace único al Hub, donde puede crear un nombre de usuario y una contraseña. Esto se utiliza luego para crear automáticamente las cuentas de usuario correspondientes en los tres servicios separados.

El Hub también sabe a qué grupos/foros, equipos/canales y áreas de almacenamiento debe tener acceso el usuario y los agrega en los lugares correspondientes a través de las API.

A medida que ha evolucionado, el Hub ha incorporado más funciones, de modo que ahora un usuario puede utilizarlo para encontrar canales y foros, solicitar unirse a ellos y realizar varias otras funciones de administración tanto para los Campeones Tecnológicos como para los usuarios.

Ahora también puede proporcionar una forma de inicio de sesión único, de modo que al iniciar sesión en el Hub, un usuario puede iniciar sesión en uno de los otros servicios con un solo clic en un botón. (parte del trabajo aquí implicó excluir los inicios de sesión corporativos estándar de tipo redes sociales que se utilizaban).

Hemos examinado varias formas de integrar el chat y gestionar el almacenamiento de archivos en un solo sistema (los tres permiten algo de esto), pero siempre implican compromisos masivos y terminas con un camello (un caballo diseñado por un comité) como Basecamp. Es mejor mantenerse con una solución dedicada de pura raza para cada una de las funciones principales y que se hagan bien.

7 Me gusta

¡Vaya! ¡Esto es increíble! Me encanta mucho esta solución de crear un portal para que las personas se suscriban a diferentes canales de comunicación, en lugar de intentar que una sola plataforma lo haga todo para cada función. Voy a guardar este post en mis marcadores para que, en el futuro, si tenemos que resolver el mismo problema, tengamos una idea de lo que es posible.

Por cierto, ¿sabes si esta configuración puede funcionar con Slack y Google Workspace (especialmente con Google Groups y Shared Drives)?

2 Me gusta

Gracias por tus amables palabras. Estoy totalmente de acuerdo en usar soluciones diferentes según los requisitos. Aunque, en el caso de un calendario compartido flexible, por ahora nos decidimos por el integrado en Nextcloud.

Sobre esas aplicaciones específicas, no lo sé. Dependerá de las facilidades de API que ofrezcan. El software comercial suele ser más limitado que el de código abierto. (Y en nuestro caso, necesitábamos especialmente dejar de usar Google).

1 me gusta