Ambiente de desenvolvimento de provisionamento na nuvem

2

Estou planejando um ambiente de desenvolvimento na nuvem. Minha plataforma de destino é o Microsoft .Net e o id da nuvem preferida Amazon AWS (embora eu esteja aberto a sugestões).

Estou planejando comprar uma instância de alta memória sob demanda e implantar uma VM guest por desenvolvedor dentro dela. Aqui estão minhas perguntas:

  • Esta topologia é aconselhável?
  • Como um desenvolvedor faria login e trabalharia diretamente com as VMs convidadas?
  • Além de ter uma boa conexão à Internet de banda larga (e também uma conexão de backup), outros cuidados precisam ser tomados no final do desenvolvedor?
  • Como poderei gerenciar recursos no meu ambiente de desenvolvimento? Alguma ferramenta? Serviços?

Obrigado.

    
por Kabeer 12.07.2010 / 17:10

3 respostas

3

Não, isso não é aconselhável. Por um lado, a virtualização em execução no topo da virtualização terá um desempenho ruim. E a maioria dos desenvolvedores não gosta de trabalhar contra uma máquina virtual hospedada remotamente, onde cada pequena operação tem um pequeno atraso (devido à latência de rede de ~ 50 a ~ 200 ms).

A solução mais comum é algo ao longo destas linhas:

  • Todo desenvolvedor trabalha diretamente em seu próprio PC local e tem um conjunto de dependências instaladas conforme necessário (Visual Studio, .NET, IIS Express, SQL Express, etc.).
  • O código é enviado para um repositório central (Subversion, qualquer que seja).
  • Um servidor de Integração Contínua (CI) (fx Hudson , TeamCity ) faz o check-out do código do repositório, constrói-o, executa testes de unidade e, possivelmente, o instala diretamente em um servidor de teste ou de teste.

Seu servidor de CI, os servidores de teste e de teste podem ficar felizes na nuvem (mais fácil com algo como Nuvem privada virtual ). Poderia o seu repositório de código, mas se você não preferir no local, então você deve apenas terceirizá-lo para um serviço hospedado Subversion / Git.

Editar: Você pode testá-lo (esse é um dos benefícios da computação em nuvem - você pode colocar em spool um servidor em questão de minutos e testar como ele realmente funciona para você). Mas que tal executar um servidor Windows 2008 R2 internamente e configurar VMs nesse servidor? Latência de rede próxima de zero e nada difícil de fazer.

Antes de prosseguirmos, por que você não pergunta aos desenvolvedores como eles estão acostumados a fazer as coisas e o que eles preferem ...

    
por 15.07.2010 / 19:37
0

As instâncias do AWS já são máquinas virtuais em execução em um hipervisor. Não é uma boa ideia executar outra camada de virtualização para que os desenvolvedores trabalhem em uma VM dentro de uma VM em hardware que esteja na outra extremidade de uma conexão WAN. Eu sou cético de que é tecnicamente possível - mas se for, tenho certeza de que o desempenho será horrível.

    
por 13.07.2010 / 00:08
0

Todas as tecnologias de VM que você usaria nessa configuração exigem virtualização de hardware no nível da CPU. Como as instâncias do EC2 já estão em execução em um hipervisor, você não tem acesso à plataforma para o bare metal para conseguir isso.

Se você REALMENTE quiser isso, eu recomendaria um servidor dedicado em algum lugar e apenas VPN em seu mundo.

Se você estiver procurando por benefícios na nuvem, provavelmente precisará decidir sobre uma unidade apropriada (uma caixa por desenvolvedor, uma caixa por equipe etc.) e, em seguida, escolher um tamanho de instância adequado a essas necessidades. Para obter o benefício da configuração da nuvem aqui, você também precisa estar girando instâncias para cima / baixo com base nas necessidades. Os padrões de uso de uma equipe de desenvolvedores realmente não se encaixam nessa configuração.

    
por 13.07.2010 / 00:22