Estratégia de controle de acesso para implementação de produção

1

Temos um modelo de desenvolvimento em que cada desenvolvedor é responsável por implantar o programa pelo qual é responsável.

O que queremos alcançar é o seguinte:

  1. para que todos os desenvolvedores possam implantar seus aplicativos em nosso ambiente de produção.
  2. tenha um bom nível de segurança
  3. ter responsabilidade sobre quem fez o quê.
  4. acompanhe qual aplicativo usa quais recursos.

Atualmente, escrevemos todos os nossos scripts de implantação em fabric .

Nós configuramos uma conta para cada aplicativo. Chaves SSH para essa conta são entregues aos desenvolvedores responsáveis por implantar esse aplicativo. Essa conta também é usada para executar o aplicativo.

Isso alcança o ponto 1, 4 e um pouco 2, mas não 3. Ele também tem a desvantagem de que o ambiente do servidor deve ser preparado, pois não queremos fornecer acesso root às contas do aplicativo (as dependências são instaladas por alguém que é raiz, diretórios criados).

Como devemos configurar nossa estratégia de implantação para resolver os pontos acima, e perdemos alguma meta importante para a estratégia?

    
por Alexander Kjäll 08.12.2009 / 17:41

1 resposta

1

Temos uma estratégia semelhante agora e estamos nos afastando dela, exatamente por causa do seu ponto 3) acima.

Situação em que um programador também é responsável por lançamentos parece muito legal e simples, conveniente e rápido, mas se você se preocupa com a estabilidade do sistema e a responsabilidade, ele rapidamente se transforma em um pesadelo, pois incentiva hacks rápidos ("noone" tem que saber, aqui, nós consertamos isso rapidamente, como se nunca tivesse acontecido ") e desencoraja a documentação apropriada (" mas todo mundo sabe disso "). Revisão por pares? Fuhghehtaboutit;)

Tudo o que você terá com esse sistema é uma luta perpétua entre administradores de sistema e programadores, confie em mim, eu estava lá há pouco tempo.

O único caminho para um sistema estável e bem documentado é que todas as etapas necessárias para uma versão são documentadas, roteirizadas e testadas com a maior freqüência possível, de preferência os sistemas de teste devem ser automaticamente reconstruídos todos os dias. Uma vez que você esteja nesse estágio, qualquer um pode executar os scripts e fazer o lançamento, e não deve ser ele quem os escreveu, já que ele não tem interesse em relatar suas próprias omissões.

    
por 08.12.2009 / 20:33