Accoppiare il discorso con chat e cloud

A seguito di una domanda posta da @debryc qui, ecco una breve nota su alcuni lavori che abbiamo svolto per far funzionare insieme i nostri forum Discourse con l’archiviazione cloud (un’istanza NextCloud) e la chat (nel nostro caso, Mattermost).

Un post lungo, quindi nascondiamo i dettagli finché non clicchi sulla freccia…

Post completo e lungo

Devo subito precisare che non sono lo sviluppatore di questo sistema: è stato realizzato in C#/.NET da un altro membro del team Tech, quindi non posso rispondere a domande tecniche dettagliate. Mi limito a esporre il problema che volevamo risolvere e ciò che abbiamo fatto.

Contesto: utilizzavamo un sistema integrato (Basecamp) per fornire discussioni, chat in tempo reale e integrazione per l’archiviazione dei file. Presentava molti elementi insoddisfacenti, sia a livello strutturale che di sicurezza, così abbiamo deciso di migrare l’organizzazione verso un nuovo sistema o nuovi sistemi open source.

Abbiamo fatto un’ampia ricerca e valutazione: alcune delle nostre scelte sono state dettate dall’opportunità, altre dalla ricerca della soluzione più adatta alle nostre esigenze e altre ancora dalla necessità di rendere il percorso di migrazione il più indolore possibile per 10.000 utenti (tra cui una percentuale elevata di non tecnici e un numero significativo di utenti tecnofobici, tutti con le proprie opinioni fortemente radicate: non è facile accontentarli!)

Per arrivare al punto, abbiamo optato per tre componenti separati: Mattermost per la chat in tempo reale, Discourse per discussioni più ponderate e Nextcloud per l’archiviazione sicura dei file e la modifica collaborativa (sostituendo una combinazione di archiviazione nativa di Basecamp e Google Docs). Tutti ospitati sui nostri server gestiti.

Ora dovevamo trovare un modo per unire in modo relativamente fluido i tre accessi richiesti e creare automaticamente gli account utente, assegnando gli utenti ai gruppi/forum appropriati (Discourse), ai gruppi di archiviazione condivisa (Nextcloud) e ai team e canali (Mattermost).

L’organizzazione conta alcune centinaia di gruppi/team distinti (per ubicazione e funzione) e gli utenti possono far parte di molti gruppi: alcuni sono chiusi, altri sono aperti e chiunque può unirsi liberamente.

Il primo problema era creare account utente su tre sistemi diversi e, inizialmente, assicurarsi che avessero lo stesso nome utente (in modo che potessero riconoscersi) e la stessa password (in modo da avere almeno un unico insieme di credenziali da ricordare o memorizzare e, in definitiva, un accesso singolo a tutti e tre i sistemi).

Avevamo anche bisogno di un metodo per gestire l’assegnazione delle persone ai gruppi corretti al momento della creazione dell’account: nel vecchio sistema non c’era una corrispondenza adeguata tra i gruppi reali e quelli online, quindi non potevamo semplicemente migrarli.

La soluzione che abbiamo elaborato è stata un sito web separato, chiamato Hub, che si occupa di tenere traccia degli account utente e utilizza le API dei tre sistemi per creare e aggiornare i dettagli degli utenti.

L’Hub permette inoltre ai “Campioni Tecnici” di ciascun gruppo (o insieme di gruppi) di invitare persone sui nuovi servizi, assicurandosi così che solo le persone giuste finiscano in ciascun luogo.

Quindi, un utente riceve un’email di invito per unirsi ai nuovi servizi con un link monouso all’Hub, dove può creare un nome utente e una password. Questi vengono poi utilizzati per creare automaticamente gli account utente corrispondenti sui tre servizi separati.

L’Hub sa anche a quali gruppi/forum, team/canali e aree di archiviazione l’utente dovrebbe avere accesso e li aggiunge nei luoghi pertinenti tramite le API.

Con l’evoluzione, l’Hub ha visto lo sviluppo di ulteriori funzionalità, così che ora un utente può utilizzarlo per cercare canali e forum, richiedere di unirvisi e svolgere varie altre funzioni amministrative sia per i Campioni Tecnici che per gli utenti.

Ora può anche fornire una forma di accesso singolo (single sign-on), in modo che, accedendo all’Hub, un utente possa accedere a uno degli altri servizi con un singolo clic (alcuni dei lavori in quest’area hanno incluso l’esclusione dei login standard di tipo social media aziendale in uso).

Abbiamo esaminato vari modi per integrare la chat e gestire l’archiviazione dei file in un unico sistema (tutti e tre offrono alcune di queste possibilità), ma in tutti i casi si tratta di enormi compromessi e si finisce per ottenere un cammello (un cavallo progettato da un comitato) come Basecamp. Meglio attenersi a una soluzione dedicata di razza per ciascuna delle funzioni principali e farle bene.

7 Mi Piace

Wow! È incredibile!!! Mi piace davvero, davvero questa soluzione di creare un portale per permettere alle persone di iscriversi a diversi canali di comunicazione, invece di cercare di far fare tutto a una singola piattaforma per ogni funzione. Sto salvando questo post nei preferiti, così che in futuro, se dovessimo dover risolvere lo stesso problema, avremo un’idea di cosa sia possibile.

A proposito, sai per caso se questa configurazione può funzionare con Slack e Google Suite (in particolare Google Groups e Shared Drives?)

2 Mi Piace

Grazie per le belle parole. Concordo pienamente sull’utilizzo di soluzioni diverse per esigenze diverse. Anche se, quando si è trattato di un calendario condiviso flessibile, per ora abbiamo optato per quello integrato in Nextcloud.

Per quelle specifiche applicazioni non lo so. Dipenderà dalle funzionalità API che offrono. Il software commerciale tende a essere più limitato rispetto al FOSS. (e nel nostro caso avevamo particolarmente bisogno di abbandonare Google)

1 Mi Piace