As ferramentas são aceleradoras que ajudam a conduzir a mudança baseada na cultura e na direção atuais. As escolhas de ferramentas devops podem ser percebidas como ganhos rápidos. Entender por que eles são ganhos rápidos, e seu impacto sobre as estruturas existentes, é importante para evitar obscurecer questões em equipes e organizações.
A incapacidade de examinar os problemas com valores, normas e estrutura organizacional leva a condições de fracasso invisíveis à medida que a dívida cultural se acumula. Se ferramentas, ou a falta dela, ficam no caminho de indivíduos ou equipes que trabalham bem em conjunto, suas iniciativas não terá êxito. Se o custo da colaboração é alto, não investir em ferramentas (ou pior, investir em ferramentas pobres) aumenta esse custo.
Ferramentas de desenvolvimento de software ajudam com o processo de programação, documentação, teste e correção de bugs em aplicativos e serviços. Não restritas a papéis específicos, essas ferramentas são importantes para quem trabalha em software de alguma forma.
Ambiente de Desenvolvimento Local
Controle de versão
Gerenciamento de artefatos
Um artefato é a saída de qualquer etapa no processo de desenvolvimento de software. Ao escolher entre um repositório simples e um repositório de recursos mais complexo, entenda o custo do suporte a serviços adicionais, bem como preocupações de segurança inerentes.
Um repositório de artefatos deve ser:
- Seguro;
- Confiável
- Estável;
- Acessível; e
- Versionado.
Automação
As ferramentas de automação reduzem mão-de-obra, energia e / ou materiais usados com o objetivo de melhorar a qualidade, a precisão e a precisão dos resultados.
1. Instalação do servidor:
A instalação do servidor é a automação da configuração e configuração de servidores individuais. Fabricantes de hardware como HP e Dell fornecem uma ferramenta que funciona para a sua marca de hardware. Algumas distribuições Linux também fornecem ferramentas específicas para sistemas operacionais.
Como exemplo, Cobbler e Kickstart podem ser usados para automatizar a instalação do servidor do Red Hat Enterprise Linux ou CentOS. O pessoal de operações pode escrever arquivos Kickstart que podem especificar o particionamento do disco rígido, a configuração da rede, os pacotes de software a serem instalados e muito mais.
2. Automação de infraestrutura
Fundamentalmente, a automação de infraestrutura está provisionando elementos de infraestrutura através do tratamento como código, assim como o resto do software, com a capacidade de recuperar negócios por meio de backups de dados, repositório de código e recursos de computação.
Terminologia adicional relacionada ao gerenciamento de infraestrutura inclui:
Chef
Trata-se de um framework para sistemas e infraestrutura em nuvem, automatizando construção, entregas, gerenciamento de equipamentos por meio de scripts curtos e repetíveis.
Ele contém módulos de configurações flexíveis e plugáveis (cookbooks) e oferece muitas opções disponíveis em plataformas colaborativas dedicadas à ferramenta.
- Desvio de configuração O drift de configuração é o fenômeno em que os servidores mudarão ou se afastarão da configuração desejada ao longo do tempo.
- MTBF é o tempo médio entre a falha: o tempo de atividade entre dois estados de falha.
- MTTR é tempo médio para reparar: o tempo que leva para restaurar a operação a um sistema.
- Disponibilidade é uma medida comumente usada de quantas vezes um sistema ou serviço está disponível em comparação com o tempo total que deve ser utilizável. Disponibilidade = MTBF / (MTBF + MTTR).
- Gerenciamento de capacidade O gerenciamento de capacidade é um processo usado para garantir que a infraestrutura e outros recursos sejam dimensionados corretamente para atender às necessidades atuais e futuras de negócios de uma maneira econômica.
- Servidor Snowflake: é um servidor que obteve sua configuração atual desejada por meio de muitas mudanças manuais, muitas vezes uma combinação de bruxaria de linha de comando, arquivos de configuração, remendos aplicados à mão e até configurações e instalações GUI.
3. Aprovisionamento do Sistema:
Enquanto as empresas tiveram que planejar, comprar e provisionar hardware nos data centers, agora eles têm a opção de investir em infraestrutura de nuvem. Com a computação sob demanda, as empresas podem comprar apenas o que precisam e escalar para cima e para baixo, conforme necessário. Esta infraestrutura pode ser adquirida e aprovisionada muito mais rapidamente do que o hardware físico, e muitas vezes é mais econômica para as organizações.
O provisionamento do sistema estende a automação da infraestrutura, permitindo que as empresas definam sua infraestrutura em termos de clusters de sistemas dependentes em vez de apenas nós individuais. Ele permite que os indivíduos especifiquem como eles querem que um grupo de servidores seja provisionado uma vez e, em seguida, usem automaticamente essa especificação quantas vezes quiserem mais tarde.
4. Testar e construir automação:
Nos dias dos primeiros computadores e compiladores, os programas eram raramente contidos em mais de um arquivo de origem. Como os programas começaram a crescer em tamanho e complexidade, os desenvolvedores começaram a dividi-los em vários arquivos de origem. Bibliotecas padrão de código disponibilizadas aos usuários de uma determinada linguagem de programação adiciona complexidade.
Com tantos diferentes arquivos de origem precisando ser compilados corretamente para obter os executáveis do programa final, tornou-se necessário automatizar os processos de compilação.
As ferramentas de automação de compilação hoje geralmente especificam como o software deve ser construído (quais etapas precisam ser feitas e em que ordem) e quais dependências são necessárias (o que outro software precisa estar presente para que a construção seja bem-sucedida).
Algumas ferramentas são mais adequadas para projetos em linguagens de programação específicas, como Maven e Ant do Apache, que, embora tecnicamente possam ser usados com outros idiomas, são mais usados em projetos Java. Outros, como Hudson ou Jenkins, podem ser usados mais amplamente com uma gama mais ampla de projetos.
O monitoramento é um tópico abrangente que pode ser dividido em várias facetas – na maioria das vezes, eventos e análises. Os métodos de coleta de informações incluem métricas e logs.
O monitoramento inclui a coleta de métricas básicas no nível do sistema, como se um servidor está para cima ou para baixo, quanto de memória e CPU estão sendo usadas e como cada disco é completo, bem como monitoramento de aplicativos de nível superior, que pode variar de quantos pedidos de usuários que um servidor da Web está processando, quantos itens estão enfileirados em um sistema de enfileiramento, quanto tempo uma determinada página da Web leva para carregar e quais são as consultas de execução mais longa em um banco de dados.
Enquanto uma vez que apenas o domínio de sistemas e administradores de rede, como o software cresce mais complexo e equipes colaborar mais, as pessoas estão começando a perceber que o monitoramento é um reflexo central da saúde do produto.
Métricas
Logging
O log é a geração, filtragem, gravação e análise de eventos que ocorrem em um sistema devido a mensagens de sistema operacional ou de software. Ao rastrear a origem de um problema de software, uma das primeiras coisas que os engenheiros fazem com frequência é verificar os logs de todas as mensagens de erro relevantes.
Logs podem ser tesouros de informações úteis, e com o armazenamento ficando mais barato e mais barato, apenas sobre qualquer log que você pode querer pode ser salvo e armazenado para uso posterior. Os logs podem vir dos aplicativos que você desenvolve, de ferramentas de terceiros que você usa e até mesmo do próprio sistema operacional.
Como não há um padrão de registro em todo o software, pode ser difícil categorizar e qualificar eventos dentro de logs para identificar padrões de preocupação.
Alerta
Monitoramento e alerta são importantes não só de uma perspectiva de desempenho, mas também de um preventivo, na medida em que ajudá-lo a descobrir sobre potenciais problemas antes que se tornem problemas reais para seus clientes.
Eventos
Gestão de eventos é o elemento de monitoramento que atua sobre o conhecimento existente em torno de impactos a sistemas e serviços. Para serviços 24/7, isso geralmente reflete a necessidade de informações em tempo real sobre o status de todos os diferentes componentes da infraestrutura. Um sistema é configurado para monitorar uma métrica ou log específico com base em um evento definido e para sinalizar ou alertar se um limite é cruzado ou uma condição de alerta foi atendida.
Com muito desenvolvimento de software agora sendo feito em software da web que é esperado para estar disponível 24/7, mais consideração está sendo dada a manipulação de alertas que ocorrem quando os engenheiros estão em casa em vez de no escritório. Uma maneira de lidar com isso é configurar o máximo de manipulação de eventos automatizada possível
Ao longo do tempo, desde a automação da instalação do servidor até a configuração e automação da infraestrutura, há uma tendência para simplificar e remover as tarefas repetitivas que podem estar sujeitas a erros humanos. Com a introdução de contêineres, o pipeline do laptop para a produção simplificou mais.
À medida que a automação é adicionada às diferentes partes do ambiente, novos padrões são descobertos. Com a automação de infraestrutura, a aderência a uma versão de um sistema operacional é menos importante, uma vez que rapidamente a criação de uma nova instância com pacotes atualizados em um novo sistema pode ser mais útil do ponto de vista da segurança.
O fornecimento contínuo e a implantação contínua libertaram os seres humanos para se concentrarem no que importa. Ciclos de feedback reduzidos automatizados através da automação de compilação com testes nos dão confiança adicional e insight em nossos sistemas.
Quer conhecer como funciona um pipeline de ponta a ponta com as ferramentas devops? Conheça nosso treinamento gratuito “pipeline devops” e veja na prática como funciona!