Melhores práticas para dimensionamento e planejamento de capacidade: somente VM? VM + contêiner? Somente contêiner? Conjunto ? Algo mais?

Melhores práticas para dimensionamento e planejamento de capacidade: somente VM? VM + contêiner? Somente contêiner? Conjunto ? Algo mais?

(Não consigo encontrar uma pergunta semelhante que já tenha sido respondida, mas talvez não use as palavras boas porque sou um estudante francês;))
A resposta mais próxima do que estou procurando é:Melhores práticas de topologia de hardware de aplicativos da Web escalonáveismas não responde tudo

Eu construí uma pequena nuvem privada (Openstack) na qual executo VMs KVM, na maioria das vezes uma VM por domínio/site, para minhas dezenas de sites e também para alguns clientes.
Pretendo testar se consigo evoluir para uma "nuvem híbrida", tendo algumas coisas rodando dentro da minha nuvem, e outras no EC2, então quero saber se o meu "jeito de fazer" é o mais adequado para meu uso.
Essas VMs executam CoreOS, que executa diferentes serviços Docker (um contêiner para Nginx, um contêiner para pgsql, etc...). Se um serviço começar a ficar muito "curto" em alguma coisa, eu crio uma VM maior, copio a VM antiga para a VM maior e excluo a antiga, ou crio uma VM dedicada para o serviço necessário (por exemplo, um segunda VM dedicada ao Nginx para lidar com mais conexões).

No entanto, estou me perguntando se não estou fazendo coisas erradas.
Escolhi usar este “modelo” porque queroforteisolamento entre os diferentes domínios/clientes, porque eu queria antigamente brincar e me acostumar mais com o Docker, e porque considero o Docker uma das maneiras mais eficazes de implantar serviços rapidamente.

Devo preferiruse apenas VMs(portanto, não há contêineres) com uma VM por serviço (em vez de uma VM por domínio)?
Oudevo usar apenas contêineresseparar os diferentes serviços e executá-los todos misturados em meus nós? Tipo, dezenas e dezenas de containers de diferentes serviços e diferentes clientes? Então, como posso isolar de forma eficaz os diferentes domínios/clientes? E então como dimensionar esses serviços? Apenas adicionando mais nós?
Ou devo criar um cluster de grandes VMs ou máquinas bare metal e usá-las paracrie um grande cluster CoreOSqual deve ser capaz de crescer com a adição de mais nós bare metal? Então a mesma pergunta que se aplica aos contêineres.

Desculpe se minha pergunta parece muito idiota, novata ou inadequada, mas prefiro perguntar agora do que quando será tarde demais para dar um passo atrás;)

Qualquer sugestão é bem vinda :)

S

Responder1

Não há problema em usar as duas VMsecontêineres, especialmente neste tipo de cenário.

As VMs fornecem uma camada de isolamento segura que é ao mesmo tempo barata e cara: - é barata em mão de obra, porque você não precisa trabalhar muito para obter uma boa segurança com as VMs; - é caro em recursos, porque a sobrecarga das VMs pode ser significativa, especialmente para pequenos serviços que exigem quantidades modestas de RAM.

(A “taxa de virtualização” pode ser considerada uma pequena constante; para grandes serviços, essa constante é insignificante, mas para pequenos serviços, torna-se uma fração significativa da pegada total.)

Os contêineres, por outro lado, oferecem uma solução barata e eficienteisolamento de softwaree método de implantação (no sentido de que você pode implantar vários contêineres lado a lado sem se preocupar com versões conflitantes).

Além disso, se você deseja implementar nuvem híbrida (ou seja, transferência de uma nuvem privada para uma pública), os contêineres são uma maneira muito fácil de conectar os dois ambientes, abstraindo suas diferenças.

Minha estratégia pessoal (assumindo que estou entendendo suas necessidades corretamente) seria isolar os locatários com VMs e contar com uma nuvem privada simples (OpenStack ou outra), implantar em contêineres e mover esses contêineres entre sua nuvem privada e uma nuvem pública. nuvem conforme necessário. É claro que você pode redimensionar suas VMs (em qualquer nuvem) para acomodar a flutuação nos requisitos de recursos.

informação relacionada