DevOps, o que significa?

Tempo de leitura: 7 minutos

DevOps
DevOps

DevOps, o que é?

Devops é um termo que tenho citado em alguns artigos, mas o que ele significa?
Um software? Um cargo? Um desenvolvedor que conhece Operações (infraestrutura)?

Nas grandes empresas, é comum estruturar equipes de acordo com seu papel. Temos equipes de desenvolvimento, equipes de teste, equipes de DBAs, equipes de segurança, equipes de infraestrutura. Também é comum ver que essas equipes trabalham de forma isolada, se possível dentro de uma sala de vidro, apelidado de aquário (rsrsrs). Os desenvolvedores escrevem código e entregam, e quem sabe, vai junto a documentação de como implantar. Na sequencia a equipe de testes faz seu papel, fazendo o software ir pra frente e pra trás para os desenvolvedores aplicar a correção de bugs, até que ele chega na equipe de infraestrutura, ou operações, é ai que ele entra em execução no ambiente de produção.

Geralmente algumas empresas aplicam os ritos do Scrum (uma metodologia de desenvolvimento de S.W), para gerenciar o desenvolvimento deste software, as vezes não, e isso torna esse ciclo (desenvolver, testar, implantar) ineficiente.

Os desenvolvedores tem uma fila de tickets, chamados, issues, para corrigirem ou features para desenvolverem. Equipe de testes gastam muito tempo repetindo “n” vezes o mesmo teste, para garantir que o que estava funcionando, ainda continua funcionando. E o time de operações devem suportar a aplicação que esta em produção (geralmente em servidores isolados dos desenvolvedores) sem ter a minima ideia de como o código foi feito ou esta se comportando.

Bem, ainda não respondi o que é DevOps, mas calma, vamos entender o problema primeiro, ai você mesmo será capaz de responder o que é DevOps!

Existe uma forma melhor de gerenciar todo esse fluxo em todas as equipes, fazendo elas interagirem, se comunicarem.

DevOps! Tá, parece fácil, mas se pesquisarmos o que é DevOps, veremos varias opniões.

Talvez essa é a vantagem do DevOps, ser flexível ao ponto de qualquer empresa aplicar seus conceitos e melhorar esse fluxo de desenvolvimento de software e interação com operações.

Eu particularmente gosto de definir DevOps como uma cultura, onde temos praticas, metodologias que podemos seguir, adaptar ao nosso dia a dia e alcançar um ambiente de TI, seguro e estável para a aplicação e todos.

Com isso alcançamos produtos de qualidade superior, os desenvolvedores codificam, os testers aplicam scripts de cenários de testes, e o time de infraestrutura implanta a aplicação de forma automatizada. Sem mexer nas entranhas do ambiente a cada versão disponibilizada.

Isso garante o que o software sai da linha de codificação e chega a produção o mais estável possível.

Para alcançar esse feito, é preciso ferramentas de automação, seja de build, de teste, ou de implantação. Algumas ferramentas fazem tudo isso. Vamos falar sobre elas em outro artigo.

Essas ferramentas geram métricas, apontam linhas de códigos não performáticas, testam sua aplicação e a colocam em produção com poucos cliques.

Por mais que DevOps seja flexível e fácil de você adotar na sua empresa, existe alguns conceitos que temos que seguir.
Eles se resumem em CAMS. Cultura, Automação, Medição e Compartilhamento (Sharing).

Cultura, DevOps (o nome) é uma abreviação para desenvolvimento e operações. É como juntar desenvolvedores e operações, fazendo-os interagir, se comunicar. É a colaboração entre as equipes.

Automação, remove todos os obstáculos que impedem como os desenvolvedores vão entregar recursos incríveis. Assim que você começar a automatizar, cuidado para não enlouquecer querendo automatizar tudo. Não é bem por ai, um bom ponto para começar o processo automático de um processo contínuo. Ele deve construir seu software e executar o teste de unidade em cada commit, em seguida, notificar uma equipe de sucesso ou Falha.

Depois de automatizar o processo de integração contínua, você pode começar um processo automatizado de entrega contínua. Cada artefato de compilação bem-sucedido produzido pelo servidor de integração contínuo deve ser implantado em algum ambiente que espelhe uma produção. É aqui que deve ser executado nos testes automatizados de aceitação do sistema, bem como os testes não funcionais automatizados. Exemplos de testes não funcionais como outros testes de carga e auditorias de segurança, entre outros.

A automação é uma parte importante de obter o código em produção de forma rápida e eficiente. Também é importante para gerenciar infra-estrutura. Ser capaz de gerenciar uma infra-estrutura no código é realmente uma das minhas partes favoritas do DevOps porque você pode codificar como sua infra-estrutura deve ser estabelecida, e acho que incrivelmente valioso.

Medição: Você não pode tomar decisões na base do chete com o seu software e infra-estrutura. É por isso que a medição é tão importante. Antes, eu disse que DevOps é sobre como melhorar a eficiência do desenvolvimento. Portanto, você precisa saber o que está acontecendo, como seu pipeline está executando e como sua infra-estrutura está se comportando. Há um monte de soluções de monitoramento no mercado para diferentes camadas da pilha de tecnologia. O tempo para pesquisar uma opção que é melhor para você vai compensar numa forma de recuperação de problemas mais rápido. Isso pode ajuda-lo a passar de reativo para proativo.

E o Sharing: O conceito de compartilhamento em DevOps significa que você deve estar compartilhando os problemas e soluções que você está trabalhando em toda a sua empresa. Quando você enfrenta desafios, você deve conversar com diferentes departamentos e pessoas em sua empresa. E você deve compartilhar suas soluções com os mesmos grupos para todos os que concordam em uma solução compartilhada e impede que outras equipes para re-inventem a roda. Considere a compartilhamento como um facilitador para uma colaboração e transparência.

E porque DevOps é importante?

As forma antiga de desenvolver software não só não escala bem. Leva muito tempo para entregar muito pouco.

Por outro lado, DevOps escala melhor porque você deve ser capaz de apertar um botão e liberar um ambiente de produção ou qualquer outro ambiente com pouco ou nenhum tempo de inatividade. Porque você está realizando testes automatizados começando com o teste de unidade e todo o caminho até testes de aceitação, e permitirá que você evite problemas facilmente testáveis ​​sempre que for até a produção.

Agora que você é capaz de obter código em produção tão rapidamente, você tem tempo para experimentar, testar, inovar! Isso pode ser na forma de testes A / B ou na criação de uma prova de conceito para implantar em um ambiente de teste para alguns testes exploratórios. Isto é o que o termo “fail fast” se refere. Se falhar em um ambiente controlado, alem de ser rápida a percepção, não prejudica o ambiente de produção. Mesmo que as respostas sejam negativas, pelo menos você não terá investido tanto tempo. “Fail fast” é uma das coisas que a cultura DevOps permitirá que você faça.

Existem casos de adoção e sucesso com DevOps?

Sim, na minha carreira ja passei por 3 empresas que adotaram DevOps (inclusive, uma vende consultoria de DevOps, a melhora do Brasil!) e entregam software com qualidade e rapidez! Não perdem tempo testando, re-testando, implantando. Apertam um botão e tudo está no ar! Aproveitam o tempo para Inovar.

Deixo como referência o caso do Spotify e o Google, que tem sua propria cultura de DevOps, os SRE!

Quer aprender mais sobre Cloud Computing e DevOps?

Insira o seu endereço de email abaixo para receber gratuitamente as atualizações do blog!

>