La flessibilità.
Se utilizzi l'hosting condiviso in cui l'applicazione è in esecuzione all'interno di un contenitore, sei limitato a un piccolo insieme di attività molto specifiche che puoi eseguire.
Se usi una macchina virtuale, sei limitato dal sistema operativo e dall'hypervisor, ma il tuo spazio di manovra è molto più grande.
Ad esempio, su una VM, è possibile accedere a tutti i file, il che significa anche che è possibile installare tutto ciò che si desidera. Ciò rende possibile fare cose che non è possibile fare su una piattaforma di hosting condiviso. Esempi:
-
Se hai bisogno di Redis come soluzione di caching, puoi farlo. In un caso di un contenitore, non hai questa libertà.
-
Se hai bisogno di avere una partizione nella RAM per un accesso molto veloce, una VM Linux ti permetterà di farlo ; su hosting condiviso, non ci sarà modo di avere questo tipo di personalizzazione.
Inoltre, hai il vantaggio di strumenti che sono stati utilizzati per anni o decenni dagli amministratori di sistema per gestire i server. Ad esempio, se si dispone di una macchina virtuale, di solito è possibile accedervi con SSH o tramite RDP. In un caso di server basato su container, le uniche cose che puoi usare come cliente sono gli strumenti (di solito mal fatti) forniti dalla società di hosting. Ciò rende estremamente difficile l'impossibilità di profilare o debuggare le applicazioni, e anche un compito più semplice come generare un dump o leggere i file di log può diventare inutilmente complicato.
Non c'è nulla di sbagliato nell'approccio container di per sé. Ha i suoi usi perfettamente validi. Ma non è la risposta a tutto: a volte, è necessaria una virtualizzazione effettiva.