As vantagens de usar máquinas virtuais não são tanto no aumento do desempenho em si. A idéia principal é que, em muitos casos, você deseja o isolamento do sistema, ou seja, você não deseja que um sistema interfira no outro. Isso desempenha um papel importante na computação em nuvem, já que um provedor pode hospedar appliances para muitos clientes diferentes e, é claro, eles precisam estar separados com segurança. Se uma abordagem bare metal for usada, caso em que cada cliente tem sua própria máquina, os sistemas provavelmente não serão totalmente utilizados. Hospedar muitas VMs em uma única máquina física aumenta a utilização e, ao mesmo tempo, oferece um ambiente seguro.
No entanto, a hospedagem de VMs vem com sua própria sobrecarga . O software pode não funcionar tão eficientemente no hardware virtualizado, as máquinas virtuais devem ser gerenciadas a partir do host e há muita redundância entre as VMs. Isso introduz uma penalidade no desempenho, em vez de um bônus.
No seu caso, você pode querer executar cada serviço em uma máquina virtual separada por motivos de segurança ou manutenção. Se um de seus serviços for comprometido, outros podem não ser afetados. Além disso, é fácil criar instantâneos de cada VM, o que facilita a manutenção, entre outras coisas. Eu não apostaria no melhor desempenho.
Uma alternativa às VMs é a virtualização do nível do sistema operacional , como a tecnologia de contêineres, recentemente popularizada no Linux pelo Docker . Eles permitem várias instâncias de espaço de usuário isoladas, eliminando a necessidade de executar vários sistemas operacionais completos, reduzindo significativamente a penalidade de desempenho e fornecendo muitas das vantagens das VMs. Os contêineres do Docker são fáceis de implementar e também suportam instantâneos.