Unikernels são uma coisa nova e estou tendo problemas para entender quais são seus casos de uso.
Qualquer caso de uso que eu possa imaginar já é servido pela existência de Docker Containers.
Então, para que servem os Unikernels?
Unikernels são uma coisa nova e estou tendo problemas para entender quais são seus casos de uso.
Qualquer caso de uso que eu possa imaginar já é servido pela existência de Docker Containers.
Então, para que servem os Unikernels?
Os contêineres compartilham o espaço do kernel com os outros contêineres em um hipervisor físico. Geralmente, unikernels não. Todas as diferenças funcionais são basicamente manifestações dessa diferença de raiz.
Os contêineres têm uma superfície de ataque de espaço do kernel maior, por exemplo, porque o kernel de um contêiner é de uso geral: qualquer aplicativo pode ser executado em qualquer contêiner do sistema operacional correto. Um unikernel é personalizado para conter apenas os subsistemas necessários para o aplicativo em execução -- somente esse aplicativo pode ser executado no unikernel apropriado, portanto, o unikernel tem uma superfície de ataque radicalmente menor.
Além disso, os unikernels têm acesso mais direto ao hardware subjacente - portanto, são mais eficientes que os contêineres (também como resultado do tamanho do kernel mais fino, embora isso dependa muito de quantos contêineres ou unikernels são executados em um hipervisor específico). Além disso, unikernels tradicionalmente (isso está mudando) só podem executar um processo, portanto, bifurcar não é uma opção para aplicativos executados em unikernels tradicionais.
Assim, os unikernels são mais seguros e rápidos; mas mais ajuste personalizado, portanto, menos propósito geral. Eles devem ser usados para qualquer fluxo de trabalho que priorize a eficiência e a segurança sobre o reaproveitamento e a padronização do SO.