Pular para o conteúdo principal

Service Instance per VM

Descrição​

O serviço é empacotado como uma imagem de máquina virtual e cada instância é implantada como uma VM separada. A imagem contém o sistema operacional, o runtime e o código do serviço, e novas instâncias são criadas a partir dela.

A escala é feita aumentando ou diminuindo o número de VMs, o que plataformas IaaS automatizam com grupos de autoescala e balanceadores de carga. Um exemplo clássico é a Netflix, que empacota cada serviço como uma AMI e executa cada instância em uma instância EC2.

Problemas que resolve​

  • Isolamento entre instâncias de diferentes serviços.
  • Pilhas tecnológicas heterogêneas tratadas de modo uniforme.
  • Limites de CPU e memória por instância.
  • Implantação confiável com ferramentas maduras de infraestrutura.

Quando usar​

  • Quando já se usa uma plataforma IaaS com autoescala e balanceamento maduros.
  • Quando é necessário isolamento forte entre serviços.
  • Quando a equipe prefere uma unidade de implantação imutável e uniforme.

Quando evitar​

  • Quando é preciso construir e implantar com muita frequência e rapidez.
  • Quando o custo e a lentidão da criação de imagens inviabilizam o ciclo de entrega.

Trade-offs​

GanhoCusto / Risco
Escala simples por número de instâncias, com autoescalaConstruir imagens de VM é lento e demorado
A VM esconde a pilha tecnológica; todos os serviços iniciam e param igualImagens grandes, com sistema operacional completo
Isolamento entre instânciasMenor densidade que contêineres
Limites de CPU e memória aplicados pela VMTempo de inicialização maior
Ferramentas maduras de IaaS (balanceadores, grupos de autoescala)Custo de recursos por VM

Diagrama​

Uma única imagem de VM gera várias instâncias, atrás de um balanceador de carga.

Padrões relacionados​

Referência​