Vai al contenuto
lurno
Tutti gli articoli
Blog

Sotto-organizzazioni, rami e gruppi: quando serve ciascuno

Una sotto-organizzazione è un tenant figlio. Un ramo è un albero interno lungo cui i ruoli scendono a cascata. Un gruppo è ciò tramite cui le persone vengono iscritte. Quando usare ciascuno.

The Lurno teamAugmental12 min di lettura

Una sotto-organizzazione è un'organizzazione figlia a tutti gli effetti, annidata dentro un'altra, con persone, programmi, ruoli, brand e dominio propri. Un ramo è un albero interno a una sola organizzazione — sedi, dipartimenti, aree geografiche — in cui un ruolo assegnato su un ramo vale per tutto ciò che sta sotto. Un gruppo è la coorte, la classe o la squadra tramite cui le persone vengono effettivamente iscritte. Quasi ogni piattaforma vende una o due delle tre cose sotto la stessa parola, e quasi ogni acquirente le chiede tutte e tre senza distinguerle.

Non sono alternative. Un impianto che funziona le usa tutte e tre insieme, ad altezze diverse: le sotto-organizzazioni per i confini, i rami per l'ambito, i gruppi per le iscrizioni. Mettere un pezzo della propria struttura all'altezza sbagliata non è fatale, ma costa caro da correggere, perché quando ci si accorge dell'errore le persone hanno ormai uno storico attaccato alla cosa da cui ora le si vorrebbe spostare.

  • Sotto-organizzazione — questa parte della struttura ha bisogno di un brand proprio, di un dominio proprio, di amministratori propri o di un confine a sé nella verifica di sicurezza di qualcuno? Allora è una sotto-organizzazione.
  • Ramo — questa parte esiste perché una persona possa essere messa a capo di una fetta dell'organizzazione? Allora è un ramo.
  • Gruppo — questa parte esiste perché un insieme di persone possa essere iscritto, formato e valutato insieme, fra due date? Allora è un gruppo.

L'ordine conta. La sotto-organizzazione è la risposta più pesante e la più difficile da annullare: dovrebbe essere quella per cui bisogna portare degli argomenti. Il gruppo è la più leggera, e una quota sorprendente di ciò che viene chiesto in un documento dei requisiti si rivela essere un gruppo con un nome dal suono importante.

ORGANISATION  Northwind Academy               one tenant, one contract
 SUB-ORG      Acme Corp                       own domain, own admins, own boundary
  BRANCH      EMEA                            a role granted here reaches all below
   BRANCH     Dubai office
    GROUP     Compliance intake, September     40 people, one programme, two dates

Letto dall'alto verso il basso, ogni livello risponde a una domanda diversa. Chi è separato da chi. Chi è responsabile di che cosa. Chi sta imparando questa cosa, insieme, adesso.

Sotto-organizzazione: un confine che si può consegnare ad altri

In un modello a sotto-organizzazioni, l'organizzazione è un record di prima classe e può avere un'organizzazione padre. Brand, dominio, utenti, ruoli, contenuti, iscrizioni e reportistica pendono tutti da lì. Un padre può guardare dentro i propri figli; un figlio non può guardare né verso l'alto né di lato. L'annidamento scende in profondità quanto la struttura reale — un gruppo di scuole, ciascuna scuola e, in certe reti, una federazione sopra il gruppo.

Multi-tenancy

Un'unica installazione di una piattaforma che serve molte organizzazioni, in cui ogni organizzazione vede solo le proprie persone, i propri contenuti, il proprio brand e la propria reportistica. Una sotto-organizzazione è la multi-tenancy applicata all'interno di un cliente: un tenant figlio con un confine proprio, collocato sotto un padre che può guardarci dentro. La prova non è se un tenant ottiene un logo diverso. È se la separazione sopravvive a un errore: un nuovo endpoint di esportazione scritto senza filtro dovrebbe restituire niente, non i discenti di qualcun altro.

Su quest'ultimo punto vale la pena incalzare qualsiasi fornitore, noi compresi. Se il tenant è una colonna su una riga, la separazione è quello che il codice applicativo si è ricordato di filtrare, e regge fino alla prossima funzionalità rilasciata. Se la regola sta nel database, quando il filtro manca la query non restituisce niente.

Il peso di una sotto-organizzazione è reale. Ognuna va configurata una volta: brand, un dominio e il suo certificato, amministratori, ruoli, impostazioni di conservazione e di consenso. In cambio si ottiene qualcosa che si può consegnare ad altri. Una sotto-organizzazione ha un titolare che non è lei, e la chiusura del rapporto è un sottoalbero da eliminare, non una lista di utenti, gruppi, corsi e report che qualcuno spera sia completa.

Qual è la differenza tra una sotto-organizzazione e un ramo?

Una sotto-organizzazione separa i dati. È un'organizzazione annidata con utenti, brand, dominio, amministratori e reportistica propri, e un confine fra sé e le organizzazioni sorelle. Un ramo dà forma alla portata. È un nodo di un albero interno a una sola organizzazione, non porta con sé un brand o un dominio separati ed esiste perché un ruolo assegnato su quel nodo valga per tutto ciò che sta sotto. La domanda che decide è se questa parte della struttura potrebbe mai essere gestita da qualcuno esterno alla sua amministrazione. Se sì, è una sotto-organizzazione. Se resta soltanto una forma interna al suo organigramma, è un ramo.

Ramo: dove si ferma un'assegnazione

Un ramo è un nodo operativo dentro una sola organizzazione. Sedi, dipartimenti, facoltà, aree geografiche, centri di erogazione, centri di costo, aree in franchising — qualunque cosa dica davvero il suo organigramma. I rami condividono il brand dell'organizzazione, il suo dominio, i suoi utenti e la sua libreria di contenuti. Quello che portano con sé è l'ambito.

La cascata è tutto il punto. Assegni a qualcuno un ruolo sul ramo EMEA e quel ruolo copre EMEA e tutto ciò che ne dipende, oggi e dopo l'apertura di altri due uffici. Senza un albero che scende a cascata, la stessa persona ha bisogno di un'assegnazione per ogni nodo, e le assegnazioni sopravvivono al motivo per cui erano state fatte. Nessuno si ricorda di revocare l'assegnazione su Dubai quando l'ufficio di Dubai chiude, perché nessuno ha una lista.

Lurno

Un'area geografica è un nodo dell'albero, quindi il responsabile di area è un'unica assegnazione che copre già la sede che aprirà l'anno prossimo.

Not this

Un'area geografica è una convenzione di denominazione, quindi il responsabile di area è nove assegnazioni più un foglio di calcolo che tiene traccia di quali fra queste dovrebbero essere ancora attive.

È sulla profondità che gli alberi dei rami sbagliano. L'albero dovrebbe rispecchiare l'organigramma, non l'orario delle lezioni. Ogni livello aggiunto è una decisione che una persona deve prendere ogni volta che entra qualcuno di nuovo, e un albero profondo cinque livelli con dentro un solo responsabile è amministrazione senza nessuno che la legga. Se a un certo livello non verrà mai assegnato un ruolo a nessuno, quel livello è un filtro di report, non un ramo.

Gruppo: l'unità tramite cui si iscrivono le persone

Un gruppo è un insieme di persone che imparano qualcosa insieme. La classe 4B. Il ciclo di compliance di settembre. La coorte dei neolaureati. Il team di progetto che segue la formazione sul nuovo prodotto prima del lancio. Un gruppo ha una composizione che cambia, di solito un programma collegato e una fine.

I gruppi sono il posto in cui deve stare il ricambio, ed è questo l'argomento per tenerli separati dagli altri due. La composizione cambia ogni settimana. Qualcuno entra in ritardo, qualcuno viene trasferito, qualcuno ripete un modulo con il ciclo successivo. Niente di tutto questo dovrebbe riscrivere i permessi di una persona o spostarla da un'organizzazione a un'altra. Spostare un discente da un gruppo a un altro è un gesto piccolo; spostare un discente da una sotto-organizzazione a un'altra è una migrazione.

Un gruppo può controllare che cosa vede una persona?

Non dovrebbe, e un sistema che glielo permette insegnerà cattive abitudini ai suoi amministratori. Un gruppo risponde a una sola domanda: chi sta imparando questa cosa, insieme, adesso. I permessi arrivano dai ruoli, assegnati su un'organizzazione o su un ramo. Quando i gruppi vengono usati come portatori di permessi, seguono due guasti. Le persone vengono aggiunte a classi di cui non fanno parte perché possano vedere un report, e questo falsa ogni cifra di completamento che quella classe produce. E togliere qualcuno da una classe toglie in silenzio l'accesso a qualcosa di scollegato, senza che nessuno colleghi la cosa al cambiamento che l'ha causata. Il gruppo decide l'iscrizione; il ruolo decide la portata.

Tre esempi svolti

Un gruppo di scuole

Una rete con due scuole, o un editore che ne gestisce 114, ha la stessa forma a larghezze diverse. Ogni scuola è una sotto-organizzazione: ha un nome che i genitori riconoscono, un dirigente che è titolare del proprio organico, di solito un dominio proprio e spesso una propria ispezione e una propria convenzione di finanziamento. La rete sta sopra di loro e può guardare verso il basso.

Dentro una scuola, i cicli e i dipartimenti sono rami: il responsabile del dipartimento scientifico è un'unica assegnazione che copre ogni classe di scienze dell'istituto. Le classi, le sezioni e i gruppi di livello sono gruppi.

Riverside Trust                             the group
├── Riverside Primary       SUB-ORG         own domain, own head, own inspection
│   ├── Early years         BRANCH
│   └── Key stage 2         BRANCH
│       └── Class 4B        GROUP           28 pupils, one form tutor
└── Riverside High          SUB-ORG         own domain, own head
    ├── Sciences            BRANCH          head of department scoped here
    └── Humanities          BRANCH
        └── Year 10 history, set 2   GROUP

La trappola, qui, sono gli anni di corso. Qualcuno vuole i risultati per anno su tutta la rete, così gli anni di corso vengono creati come organizzazioni, e a quel punto ogni alunno si trova nel tipo di contenitore sbagliato e le impostazioni di brand e di dominio di ogni scuola vanno ripetute anno per anno. L'anno è un attributo di un gruppo e una dimensione di un report. Non è un tenant.

Un'academy aziendale

Prenda un'academy aziendale che eroga formazione per 15 aziende clienti da un unico tenant. Ogni azienda cliente è una sotto-organizzazione. Ottiene un dominio proprio, amministratori propri che possono pubblicare ed estrarre report senza scrivere un'email all'academy, un brand proprio e un confine che tiene quando il team di sicurezza del cliente chiede conto delle altre 14.

Dentro un cliente, le business unit e le aree geografiche sono rami, perché il responsabile della formazione del cliente ha bisogno di un'unica assegnazione che le copra tutte e un responsabile di area di una che ne copra una fetta. Il ciclo di onboarding di settembre, l'edizione annuale del corso anticorruzione, le dodici persone che seguono il percorso di leadership: quelli sono gruppi, e vengono creati e chiusi di continuo.

La trappola, qui, è una sotto-organizzazione per ogni incarico. Un cliente firma per tre corsi, così vengono create tre organizzazioni, ciascuna con il proprio brand da configurare e i propri amministratori da invitare, e poi il cliente chiede un report unico su tutti e tre e nessuno riesce a produrlo. Un cliente, una sotto-organizzazione. Tre corsi sono tre gruppi.

Un ente di formazione

Un ente di formazione gestisce un misto, ed è proprio il misto a far guadagnare al modello il suo posto. C'è un catalogo pubblico con iscrizioni aperte sotto il brand dell'ente. Ci sono contratti corporate, ognuno dei quali vuole un'academy che somigli al cliente. Ci sono percorsi accreditati con coorti fisse, valutatori e un ente certificatore che chiederà i registri.

Your training company                       everything below is yours to administer
├── Public catalogue        BRANCH          open enrolments, your own brand
│   └── Project management, Nov intake      GROUP
├── Acme Corp               SUB-ORG         learn.acme.com, Acme's own admins
│   ├── EMEA                BRANCH
│   └── Americas            BRANCH
└── Borden Group            SUB-ORG         training.bordengroup.com
    └── Borden Manufacturing    SUB-ORG     a subsidiary with its own brand

Due cose da notare. Il catalogo pubblico è un ramo, non una sotto-organizzazione, perché sono il suo brand, il suo dominio e il suo personale: non c'è niente da separare. E il terzo livello è reale: un cliente con controllate che hanno un'identità propria è un caso normale per un ente di formazione, ed è il caso che un modello a sotto-account profondo un solo livello non riesce a esprimere senza convenzioni di denominazione.

Quattro domande prima di disegnare l'albero

  1. Per quali parti il browser di un estraneo dovrebbe mostrare un brand diverso e un indirizzo diverso? Quelle sono sotto-organizzazioni.
  2. Di quali parti bisogna mettere a capo una persona indicata per nome? Quelle sono rami.
  3. Quali parti hanno una data di inizio e una data di fine? Quelle sono gruppi.
  4. Quali parti esistono solo perché un report ha bisogno di un filtro? Quelle non sono nessuna delle tre.

La quarta domanda è quella che fa risparmiare più lavoro. Moltissima struttura viene costruita perché qualcuno vuole i numeri tagliati in un certo modo, e la struttura è il modo più costoso possibile per ottenere un filtro. L'ambito della reportistica dovrebbe seguire l'albero dei rami e il gruppo, non il contrario.

Ogni sede dovrebbe essere una sotto-organizzazione a sé?

Solo se la sede ha qualcosa che un confine protegge: un brand e un dominio propri, amministratori propri che non dovrebbero vedere le altre sedi, oppure un proprio ente regolatore, una propria ispezione o un proprio contratto. Una sede che condivide il brand, l'organico e un'unica segreteria amministrativa è un ramo. La differenza pratica sta in chi fa il lavoro: le sotto-organizzazioni si configurano una alla volta, mentre i rami si disegnano una volta sola e tutto eredita. I gruppi di scuole con nomi distinti finiscono di solito con una sotto-organizzazione per scuola. Un'unica università con quattro sedi finisce di solito con i rami.

Come funziona in Lurno

Lurno ha tutte e tre le cose come primitive distinte, ed è per questo che vale la pena di un articolo così lungo. Le sotto-organizzazioni si annidano senza limiti di profondità, ciascuna con un brand proprio e un dominio personalizzato proprio con TLS automatico — il lato brand e dominio è descritto nella pagina white-label. Dentro un'organizzazione c'è un secondo albero, separato, fatto di rami, e un ruolo assegnato su un ramo scende a cascata lungo di esso. I gruppi sono la primitiva delle iscrizioni e non portano con sé permessi propri.

Il confine è imposto in Postgres e non nel codice applicativo: 868 policy di row-level security distribuite su 676 migrazioni, così una query che si dimentica il filtro non restituisce niente. È questa l'affermazione da verificare con qualsiasi fornitore — il dettaglio è nella pagina sicurezza.

Due limiti, detti chiaramente perché cambiano il modo in cui si pianifica un rollout. Gli account si creano su invito: la registrazione self-service e i pagamenti sono in sviluppo, quindi un'organizzazione cliente viene configurata e fatturata invece di acquistare da sé. E l'accesso partner (silent SSO) è disponibile oggi, mentre SAML e OIDC sono in roadmap e non rilasciati; se l'ufficio IT di un cliente ha già deciso come si autenticherà il personale, lo faccia emergere presto. Il modello di erogazione per gli enti che rivendono formazione è nella pagina enti di formazione.

In breve

Le sotto-organizzazioni separano. I rami delimitano. I gruppi iscrivono. Quando non è chiaro che cosa sia un pezzo della sua struttura, si chieda che cosa si rompe se sbaglia: mettere un confine dove serviva un ramo costa configurazioni ripetute e un report che non si riesce a produrre, e mettere un ramo dove serviva un confine costa una conversazione con il team di sicurezza di qualcuno. Disegni l'albero prima di caricare i dati, e faccia difendere a qualcuno ogni sotto-organizzazione della lista.