O que as ferramentas SCM (Ansible, Puppet, Chef, etc.) fornecem?

8

Eu li bastante sobre o Gerenciamento de Configuração de Software (na Internet e também no SWEBOK), mas não sei ao certo qual é o objetivo das ferramentas de SCM. Ou, melhor dizendo, o que essas ferramentas fornecem que outras não.

Digamos que eu tenha um ambiente com as seguintes ferramentas:

  • Jenkins para integração contínua.
  • Ant como ferramenta de construção.
  • Git como sistema de controle de versão.
  • GitLab para gerenciamento de repositórios Git e também para rastreamento de problemas.
  • Ferramentas de análise e teste de código-fonte, como Sonar e JUnit.

Então, minha pergunta é: o que essas ferramentas SCM forneceriam? De que maneira eles seriam úteis?

Julen
fonte

Respostas:

10

Todas as ferramentas que você mencionou (Jenkins, ant, git) ajudam a realmente construir e testar seu artefato. No mundo java, geralmente isso pode ser guerra, ouvido ou apenas zipar com o aplicativo dentro. Às vezes, para aplicativos complicados, pode haver mais de um artefato. Para outras plataformas de programação, pode variar, DLLs, binários para várias plataformas diferentes e assim por diante.

Agora, digamos que você deseja implantar seu aplicativo. Se você tiver um servidor, poderá fazê-lo manualmente ou com algum script caseiro. Por enquanto, tudo bem :)

Mas e se você tiver muitos farms (grupos de máquinas), farms diferentes deverão ter implantações com configurações diferentes (bancos de dados, diferentes localizações geográficas). uma tarefa trivial. Sua equipe de controle de qualidade pode apenas solicitar um novo ambiente para executar seus testes, sua equipe de desempenho pode solicitar um novo ambiente ou adicionar nós ao farm para executar testes de estresse e assim por diante. Agora, gerenciar tudo isso parece complicado. É aí que ferramentas como ansible, chef, salt, fantoche e outras entram em jogo.

Na verdade, eles estão ajudando a automatizar a implantação. Eles podem fornecer receitas de implantação, instalar dependências ausentes (para executar seu projeto, podem ser necessários jre, tomcat de versão específica e nginx para conteúdo estático). Tudo isso no nível da fazenda.

Eu sei que a resposta é muito genérica e pode parecer menos óbvia para o desenvolvedor java (eu sou um desses). Mas se você tem uma equipe de sistema / pessoal de devops, eles devem apontar imediatamente os benefícios dessas ferramentas.

Mark Bramnik
fonte
Obrigado pela sua resposta. Para quem é desenvolvedor e testador de controle de qualidade e desempenho, tudo em um (meu caso), com apenas duas máquinas, desenvolvimento e produção, você recomendaria o uso dessas ferramentas de SCM? Entendo o seu ponto de vista, mas é difícil para mim entender para todos e me colocar nesse contexto, já que nunca estive nessa situação.
Julen
2
se você está implantando apenas uma guerra, provavelmente não deve usar essas ferramentas. Claro que você pode tentar um (talvez ansible ou sal funcione melhor para você). Eu provavelmente iria dar-lhes uma chance apenas para aprender algo novo e ver se minha vida teria se tornado mais fácil com essas ferramentas :)
Mark Bramnik
1
Eu acho que é o que vou fazer, muito obrigado.
Jul15
Em algum momento no futuro, será necessário escalar além da capacidade atual ou substituir o hardware existente por um kit mais moderno. O dimensionamento vertical (máquina maior) ou horizontal (separando a web do db com mais da web) usando um SCM simplificará a migração final e facilitará o teste de que você não quebrará nada em movimento. Decidir começar a experimentar agora, quando seu ambiente é simples, é uma escolha sábia. Observe que você também pode usar essas ferramentas (prefiro o Ansible por sua simplicidade e falta de confiança na instalação de agentes em todas as caixas) para provisionar seu sistema Dev).
Bryan 'BJ' Hoffpauir Jr. -