Licenze per dispositivo e utente: come calcolare la migliore assegnazione

Il nostro metodo per ottimizzare gli asset software a partire da una migliore assegnazione delle licenze per dispositivo e per utente.

Durante i nostri progetti SAM abbiamo trovato diverse aziende che, per la stessa applicazione, avevano un portafoglio di licenze che comprendeva sia licenze per utente sia licenze per dispositivo.

Diversi vendor di software, infatti, consentono di adottare il modello di licensing più adatto alle esigenze aziendali. È molto semplice capire che se hai diversi utenti che condividono un dispositivo (ad esempio, in un lavoro organizzato a turni), è più economico assegnare una licenza basata sul dispositivo. In questo caso ammortizzi il costo sul numero totale degli utenti.

Lo stesso ragionamento può essere applicato alla situazione opposta quando un utente ha più dispositivi e deve poter indifferentemente accedere alla rete aziendale da ciascuno di essi: viene assegnata una licenza per utente e il costo viene ammortizzato sul numero totale dei dispositivi.

Ma considerando che in azienda abbiamo n utenti e n device per la stessa applicazione, non sarebbe fantastico poter trovare, in base alla loro disponibilità, la migliore assegnazione per dispositivo e utenti e massimizzare la copertura? Direttamente all’interno dello strumento SAM, in modo da ottimizzare il licensing in fase di acquisto?

Sfortunatamente, non abbiamo trovato uno strumento SAM che abbia questa capacità inclusa.

Un problema troppo (NP-) difficile da risolvere

Vediamo il problema da una prospettiva tecnica (developer). Questa situazione potrebbe essere rappresentata in un grafico in cui:

• ogni dispositivo è un nodo. Questo nodo ha un costo associato pari a quello della licenza per dispositivo
• ogni utente è un nodo. Questo nodo ha un costo associato pari a quello della licenza per utente
• se l’utente A usa il dispositivo B, c’è un arco tra A e B.

Per ottimizzare, dobbiamo trovare il minimo sottoinsieme di costo dei nodi che copre tutti gli archi (nella figura, i nodi in blu possono coprire tutto).

Si tratta di un noto problema matematico conosciuto come “copertura minima ponderata dei vertici” (minimum weighted vertex coverage) che, sfortunatamente, è un problema NP-difficile. Ovvero che richiede molto tempo per il calcolo della sua soluzione (ore, giorni, settimane).

E forse è questo il motivo per cui non abbiamo trovato uno strumento che implementi nativamente questa funzione.

Manteniamo la calma e usiamo l’euristica

In informatica c’è una tecnica progettata per risolvere un problema più velocemente rispetto ai metodi classici e lo si fa privilegiando la velocità rispetto all’ottimalità, alla completezza, all’accuratezza e alla precisione. Questa tecnica è nota come euristica.

Per nostra fortuna questo tipo di problema ha un ampio studio in letteratura, quindi abbiamo avuto una vasta gamma di euristiche disponibili tra cui scegliere e abbiamo iniziato la nostra “selezione euristica”. Cosa abbiamo fatto?

• Abbiamo creato uno scenario reale con un numero relativamente piccolo di utenti e dispositivi (circa 500). Così siamo stati in grado di calcolare il “reale” costo minimo della licenza usando un approccio di forza bruta (in pratica, abbiamo testato tutte le possibili assegnazioni e trovato la migliore)

• Successivamente, abbiamo testato vari tipi di euristica il cui scopo è quello di raggiungere la soluzione ottimale per un dato problema

• Abbiamo trovato un algoritmo Greedy (un algoritmo che esegue l’euristica di risoluzione del problema facendo la scelta migliore per ogni fase) che è stato in grado di calcolare in pochi secondi una buona combinazione di assegnazione della licenza utente/dispositivo.

Come si presenta l’algoritmo?

L’algoritmo che abbiamo scelto lavora in questo modo:

1. Va creata una coda di Utenti (ordinati in base al numero di dispositivi utilizzati)
2. Va creata una coda di Dispositivi (ordinati in base al numero di utenti)
3. Fino a quando entrambe le code non sono vuote, l’algoritmo procede in questo modo:
– Sceglie dall’alto di entrambe le code l’utente/dispositivo che ci permette di risparmiare di più
– Assegna una licenza a quell’utente/dispositivo
– Rimuove quell’elemento dalla sua coda
– Rimuove dall’altra coda tutti gli elementi correlati

Risultato

Applicando questo algoritmo, si ottiene una combinazione di assegnazione di licenze utente/dispositivo con un costo uguale alla soluzione ottimale, che utilizziamo di solito per alimentare lo strumento SAM.

Con questa combinazione, riusciamo a ottimizzare periodicamente (trimestralmente) l’assegnazione delle licenze con uno sforzo manuale pari a zero.

Sfruttando il basso tempo di calcolo dell’algoritmo, è possibile essere sempre aggiornati sulla situazione attuale dell’utilizzo dei dispositivi da parte degli utenti e scegliere sempre l’assegnazione che meglio si adatta alle esigenze dell’organizzazione.

Un articolo co-firmato da Jary Busato (Consulente SAM/ITAM), Claudio Guarisco (Lead Developer) e Camilla Bottin (Marketing Specialist) di NETCOM. 

Per dubbi, informazioni, feedback… non esitare a contattarci!