Diferença entre DevOps e Software Configuration Management


15

Qual é a diferença entre Operações de Desenvolvimento e Gerenciamento de Configuração de Software?

Para mim, parece ser o mesmo desde que o DevOps e o Software Configuration Management estejam focados em:

  1. Estabelecendo infraestrutura de desenvolvimento - sendo responsável pelo controle de versão , gerenciamento de compilação, gerenciamento de implantação, gerenciamento de dependências, integração e entrega contínuas etc.
  2. Usando práticas recomendadas para organizar o ambiente de desenvolvedores .
  3. Garantia de qualidade dos processos de desenvolvimento - reunindo métricas de eficácia no desenvolvimento, trabalhando na eliminação de gargalos no processo de desenvolvimento (executando testes de unidade, avaliando a cobertura de testes de unidade, executando inspeções, etc.)
  4. Gerenciamento de infraestrutura - direcione as plataformas e suas especificidades.
  5. Gerenciamento de liberação - certificando-se de que a liberação foi entregue ao cliente / cliente a tempo.

Talvez esteja faltando alguma coisa? Este link mostra que o uso do termo 'Gerenciamento de configuração de software' prevalece. Mas, ainda assim, que combinação de palavras você prefere usar para descrever a variedade de atividades listadas: Operações de Desenvolvimento ou Gerenciamento de Configuração de Software ?

Respostas:


18

Os termos descrevem conceitos e responsabilidades muito semelhantes e, em geral , são um tanto sinônimos. O termo "DevOps" é relativamente novo, popularizado pela conferência Devopsdays Ghent 2009 e pelos eventos subsequentes do Devopsdays . É melhor descrito neste diagrama :

insira a descrição da imagem aqui

Por outro lado, o Software Configuration Management é um termo muito mais estabelecido na profissão e deriva do termo não específico do software Configuration Management . O Gerenciamento de Configuração de Software é frequentemente referenciado em um contexto de engenharia de software, uma definição simples é dada por Roger Pressman em "Engenharia de Software: Uma Abordagem do Profissional" :

é um conjunto de atividades projetadas para controlar as mudanças, identificando os produtos de trabalho que provavelmente serão alterados, estabelecendo relacionamentos entre eles, definindo mecanismos para gerenciar diferentes versões desses produtos de trabalho, controlando as mudanças impostas e auditando e relatando as alterações feitas.

Embora todos os termos que você menciona sejam vagos, o DevOps parece ser apenas uma maneira menos formal de descrever mais ou menos o mesmo conjunto de princípios que o Gerenciamento de configuração, ou o Gerenciamento de configuração de software, se visto da perspectiva de um desenvolvedor de software, priorizando especialmente as equipes fortemente acopladas :

O DevOps é uma resposta à crescente conscientização de que há uma desconexão entre o que é tradicionalmente considerado atividade de desenvolvimento e o que é tradicionalmente considerado atividade de operações. Essa desconexão geralmente se manifesta como conflito e ineficiência.

No mesmo artigo, são observadas as semelhanças com o SCM:

Adicionar ao Muro da Confusão é a incompatibilidade muito comum nas ferramentas de desenvolvimento e operações. Dê uma olhada nas ferramentas populares que os desenvolvedores solicitam e usam diariamente. Em seguida, dê uma olhada nas ferramentas populares que os administradores de sistemas solicitam e usam diariamente. Com algumas exceções notáveis, como rastreadores de erros e talvez SCM , é duvidoso que você tenha muito interesse em usar as ferramentas uns dos outros ou uma integração significativa entre eles. Mesmo se houver alguma sobreposição nos tipos de ferramentas, geralmente as implementações serão diferentes em cada grupo.

Quanto ao uso dos termos, sua comparação realmente não faz sentido:

  1. SCM é um subconjunto de CM, não um termo competitivo,
  2. DevOps é um termo relativamente novo, não faz sentido comparar com termos estabelecidos,
  3. O DevOps deriva do Developer Operations (obviamente), mas raramente é expandido como tal.

Você quer dizer SCM como Gerenciamento de código-fonte ou Gerenciamento de configuração de software como um subconjunto do CM?
alternativo 19/01/12

@zaphod_beeblebrox: essa imagem foi tirada do artigo da wikipedia: en.wikipedia.org/wiki/DevOps :)
alternativo

@altern Parágrafo sob a imagem bonita: "Por outro lado, Gerenciamento de Configuração de Software é um termo muito mais estabelecido na profissão e deriva do termo não específico de software Gerenciamento de Configuração". : P Também a foto foi tirada do blog ao qual eu vinculei. Se o autor tirasse da Wikipedia, eu não saberia.
precisa saber é

@zaphod_beeblebrox: Provavelmente eu deveria mudar o título da minha pergunta então
alternativamente

@altern O que você quer dizer? O Gerenciamento de Configuração de Software não está apenas no título. Também o que diabos é "Gerenciamento de Código Fonte". Você quer dizer controle de revisão? Se sim, o controle de revisão é um aspecto do Gerenciamento de Configuração de Software; portanto, a resposta permanece como está. Mas comparar o controle de revisão com os devops é estranho, para dizer o mínimo.
yannis

6

Pessoalmente, como gerente sênior de configuração de software por muitos anos (10 anos ou mais), ouço os termos incompatíveis em várias situações da vida real. Não é incomum para o pessoal não técnico devido à natureza relativa dos cargos. Ambos têm funções, necessidades e requisitos específicos semelhantes, mas que podem ser claramente divididos na minha opinião.

Acredito que a melhor maneira de descrever a divisão desses papéis é focar em sua relatividade à interação. Isso significa que o Software Configuration Management se concentra nos sistemas e ambientes internos, juntamente com a integração, implantação, liberação e gerenciamento do código-fonte. Onde o Developer Operations (DevOps) se concentra mais no aspecto operacional da arquitetura de aplicativo enfrentada externamente, mantendo um entendimento claro do código conforme ele foi projetado para uso e a prática de seu ambiente. Se o desempenho de uma máquina estiver mostrando sinais de degradação, a comunicação entre vários aplicativos estiver com defeito, a comunicação business to business (BtB) e / ou as limitações da arquitetura em relação a um ambiente de produção, você deverá procurar nas Operações do Desenvolvedor seu diagnóstico e solução.

Normalmente, na minha experiência, o Software Configuration Manager também pode fazer isso, mas isso afasta o foco principal de rastreamento, gerenciamento e implantação de configurações de ambiente e revisões de software. Gerenciamento do software que permite a separação de tarefas, rastreamento de bugs e defeitos, rastreamento de projetos, ciclo de vida e fluxo de trabalho de desenvolvimento de software. Essas tarefas não são o foco principal das operações do desenvolvedor e, portanto, são menos imperativas, mas ainda podem ser realizadas.

Eu já vi muitos casos de confusão de cada um, e em cada um deles há um cruzamento limitado. No entanto, é mais importante pensar nas diferenças entre as responsabilidades de cada uma das posições independentes em relação ao seu foco principal. Principalmente ao lidar com sistemas e hardware utilizados internamente para gerenciar a configuração de ambientes e o lançamento do produto, você procuraria um Gerenciador de Configuração de Software. Por outro lado, ao lidar com o desempenho do sistema, o monitoramento, a pesquisa e o diagnóstico dos sistemas usados ​​pelos seus clientes, você deve procurar o Developer Operations ou o DevOps.

Agora, isso não é um discurso pretensioso, nem uma resposta definitiva, mas uma identificação pessoal das diferenças de cada uma das posições. Gostaria de saber se estou bem fora da base ou se as coisas são esclarecidas com esta resposta.


2
Honestamente, quando tudo se resume, o DevOps é tornar os desenvolvedores de software totalmente conscientes e responsáveis ​​pelo Gerenciamento de Configuração de Software. Quando você faz isso, obtém uma abordagem totalmente diferente do SCM do que era tradicionalmente feito - uma mais focada na integração contínua e na entrega contínua e outra com (normalmente) menos seres humanos na mistura. Os DevOps podem ser (e geralmente são) vistos como o Lean aplicado ao SCM, assim como o Agile pode ser visto como o Lean aplicado ao desenvolvimento de software.
Calphool 03/03

4

Você seria pressionado a encontrar uma definição sólida para o DevOps. É mais uma ideia do que um trabalho a ser feito. E é uma idéia nova demais para que todos concordem exatamente com o que isso significa. No entanto, aqui está a minha opinião.

DevOps é realmente apenas um novo termo para gerenciamento de configuração, mas foi escolhido para mostrar que a função não é individual, é uma colaboração entre a equipe de desenvolvimento e a equipe de operações.

Historicamente, o gerenciamento da configuração seria feito exclusivamente pela equipe de desenvolvimento e depois entregue às operações que veriam tudo com profunda suspeita. O que é justo o suficiente, para ser honesto. Eles são responsáveis ​​por isso. Eles são os primeiros a serem chamados às 4 da manhã quando dá errado. Eles realmente deveriam ter algum envolvimento em seu desenvolvimento.


1

Este é o simples esclarecimento da pergunta: DevOps é um termo usado para descrever a coordenação ou o relacionamento entre Desenvolvimento (desenvolvendo os códigos de programa no ambiente de desenvolvimento) e Operações (garantindo o máximo tempo de atividade do ambiente de produção).

O Gerenciamento de Configuração de Software é um meio de atingir essa coordenação. O SCM envolveu ferramentas e técnicas para gerenciar a automação do processo de transição do desenvolvimento para a produção (operações)

Para resumir, o SCM conecta Dev e Ops.

A conexão entre desenvolvimento e operações é SCM


-1

Vejo que os DEVOPs estão no final da execução operacional - scripts de automação de implantação, criação de ambientes, esse tipo de coisa. O SCM, por outro lado, trata da integridade dos produtos e do gerenciamento e rastreabilidade efetivos das alterações nos produtos. Sempre vi o ALM como parte do SCM - afinal, como diabos você pode gerenciar alterações em um produto se não tem idéia dos drivers para a alteração ou quem os fez? As estruturas de implantação podem se dividir em ambos os lados - e de que lado dependerá invariavelmente das necessidades regulatórias da organização para a qual você trabalha - afinal de contas - você deseja que um desenvolvedor seja capaz de fazer um hack rápido, o que significa que sua máquina de diálise só funciona corretamente 99,99% do momento, ou você precisa dessa situação para permitir a invasão do código do site porque seus desenvolvedores têm endereços IP codificados?


4
Isso parece mais como um discurso retórico do que uma resposta para a pergunta
mosquito

Deer Hunter, A Rant, sim, com certeza, mas é relevante? 100%. Confie em mim - até que a indústria cresça e pare com os truques, as marchas da morte não apenas continuarão, como piorarão. Isto é uma promessa.
23414 Jack

Rants estão bem, mas stackexchange não é o lugar para eles.
Matt freake
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.