Treinamento escrito de DevOps
Como o DevOps resolve seus problemas de TI?
Você implanta continuamente
Empresas de todos os portes, de startups recém-criadas às integrantes da Fortune 100, e com qualquer portfólio de produtos e serviços de software já demonstraram que, com DevOps, equipes pequenas, independentes e autossuficientes fazem dezenas de implantações em produção todos os dias. Você projeta, compila, entrega e testa em ambientes semelhantes ao de produção. As liberações deixam de ocorrer apenas a cada três meses, depois da meia-noite, enquanto todos dormem. Você libera código várias vezes por dia, sobretudo no horário habitual de trabalho, enquanto seus clientes e o mercado que você atende continuam a usar o software e a se beneficiar dele.
O DevOps permite entregar pequenas funcionalidades de software com frequência e, com técnicas de Dark Launch, também implantar em produção pequenos trechos de funcionalidades grandes e de alto volume. Esses trechos ficam inativos em produção até que você ative a funcionalidade por meio de uma configuração. Essa técnica, por si só, pode melhorar significativamente a qualidade de vida da equipe ao evitar implantações de código de uma só vez, seus efeitos adversos imprevisíveis nos sistemas de produção e o caos e as acusações na organização.
Você organiza suas equipes em torno da missão
Para atender seu mercado, já que sua organização tem uma missão maior do que a de seus concorrentes, você organiza a área de TI em equipes de longa duração, voltadas aos produtos, serviços, capacidades e microsserviços que atendem clientes internos ou externos. Essas equipes substituem equipes temporárias que se dissolvem assim que o projeto termina ou até antes.
No modelo de equipes temporárias de projeto, os integrantes raramente sabem como o projeto se encaixa na missão maior da organização. Assim, mal conseguem assumir a responsabilidade pela própria contribuição e receber feedback adequado sobre o trabalho. Vários projetos enviam continuamente tarefas da sua especialidade, seja desenvolvimento de bancos de dados, design de interfaces, tradução ou outra área, o que gera interrupções constantes.
No modelo de equipes de longa duração, as equipes assumem de bom grado a responsabilidade pelo próprio trabalho e pelo desempenho da TI e do negócio que suas entregas possibilitam. Elas sabem exatamente como suas contribuições se encaixam na missão mais ampla da organização e qual é sua importância.
Você cria sistemas para alcançar objetivos de negócio
Você e suas equipes sabem que são pagos para atender os clientes e cumprir a missão da organização. Por isso, respeitam o tempo e os recursos de todas as pessoas da organização e dos clientes. Antes de se comprometer com um projeto de longo prazo, você experimenta e valida o valor de negócio esperado da solução de TI. Mostra aos clientes modelos, protótipos, diferentes variantes A/B ou versões simplificadas do que pretende construir. Depois, mede e registra as reações e o feedback para entender como ajustar seu produto ou serviço e descobrir se os clientes realmente gostam dele.
Uma boa impressão inicial não basta para acrescentar funcionalidades ao produto. Você testa as ideias e reúne evidências concretas, demonstráveis e reproduzíveis de que o que está construindo com os recursos da organização provavelmente vai contribuir para o resultado financeiro e diferenciar positivamente seu empregador da concorrência.
Você incorpora qualidade e monitoramento desde o início
Você cria ciclos de feedback rápidos, confiáveis e abrangentes em todas as etapas do ciclo de entrega e operação de software. Como a qualidade não é monopólio de uma equipe, todos se empenham em incorporá-la ao trabalho. Para confirmar que o trabalho foi bem feito, você dispensa a espera pelo feedback de outra equipe ou pela permissão de outra pessoa para implantar o código em produção. Você confia na revisão por pares da equipe para o projeto, o código, os testes e a infraestrutura.
Você sempre automatiza testes e incorpora monitoramento (telemetria) a toda funcionalidade que possa ser medida e testada. Se uma funcionalidade merece o tempo para ser programada e entregue, também merece testes automatizados contínuos, confiáveis, rápidos e consistentes. Ela merece ainda monitoramento contínuo e análises integradas ao software para verificar se o resultado corresponde ao motivo pelo qual você a criou. Isso vale para todos os ambientes, inclusive de produção e de não produção.
Cada envio ao repositório adapta, reestrutura ou, se necessário, recria automaticamente os ambientes operacionais. Também recompila as aplicações afetadas e executa todos os testes automatizados para validar as funcionalidades existentes e o objetivo do último envio. Se a validação for bem-sucedida, as mesmas mudanças são aplicadas automaticamente em produção.
As análises e a telemetria integradas às aplicações monitoram e registram continuamente eventos importantes no software e em seus ambientes operacionais. Métricas essenciais, como número de pedidos, número de acessos, uso e carga da CPU, uso de RAM, número de erros, duração das consultas ao banco de dados e muitas outras, são registradas continuamente e apresentadas em tempo real. Assim, em minutos ou até segundos, a equipe descobre um impacto negativo causado por uma implantação. Por isso, ciclos rápidos de feedback são essenciais para realizar o trabalho com rapidez.
Você aprende e ensina com os erros
Quando ocorre um erro, você o resolve com calma e confiança. Identifica a causa-raiz do incidente com base em evidências obtidas e observadas nos testes automatizados e na telemetria. Se, após resolver o problema, você perceber que falta um caso de teste ou alguma telemetria, acrescente esses elementos ao repositório junto com a correção.
Em um sistema complexo como o seu, ninguém consegue saber e prever tudo. Por isso, todos na organização tratam os erros como parte do amadurecimento dos produtos e serviços e como oportunidades de aprender e crescer. Você e sua organização veem os erros como uma fonte de aprendizado pessoal e organizacional.
Análises pós-incidente sem atribuição de culpa ajudam a identificar melhor as causas-raiz e a descobrir técnicas para evitar que os mesmos erros ou outros semelhantes ocorram no futuro. O incidente permite transformar o aprendizado local da equipe e do software em memória organizacional, disponível para toda a organização.
Você e sua equipe nunca são punidos pelo erro. Vocês são reconhecidos pelas lições que aprenderam e compartilharam depois do incidente. Graças à contribuição de vocês, várias equipes da organização sabem como evitar que um incidente semelhante volte a ocorrer.
Suas equipes ganham escala à medida que o negócio cresce
Imagine uma organização típica que passa de 1 para 1.000 desenvolvedores. Enquanto a organização era pequena, os desenvolvedores compilavam e implantavam continuamente o código em produção. À medida que a organização cresce, a hierarquia e a burocracia aumentam, assim como o medo de errar. Implantar código em produção passa a exigir mais coordenação e comunicação. Por isso, quando as organizações crescem, o número médio de implantações de código por dia e por desenvolvedor geralmente cai ou, na melhor das hipóteses, permanece igual.
As organizações DevOps de alto desempenho conseguem aumentar o número médio de implantações de código por dia e por desenvolvedor à medida que contratam mais desenvolvedores. Com a arquitetura de software, as equipes, a missão, a liderança e a cultura adequadas, empresas como Google, Amazon, Facebook, Netflix e Apple já demonstraram que isso é possível. Sua organização pode ser a próxima a atingir esse nível de desempenho em DevOps.
O gráfico original compara o crescimento do número diário de implantações por desenvolvedor à medida que as equipes crescem.
Veja o diagrama original ↗CONCLUSÃO
As organizações DevOps de alto desempenho superam a concorrência nos seguintes aspectos.
- Implantações de código 46 vezes mais frequentes.
- Tempo de entrega 440 vezes menor entre o commit e a implantação.
- Tempo médio de recuperação de indisponibilidade 96 vezes menor.
- Taxa de falha de mudanças 5 vezes menor, ou seja, a probabilidade de falha é de 1/5.
- Melhoria da produtividade e do volume de entregas.
- Maior confiabilidade do código e das operações.
- Melhoria do desempenho organizacional e da satisfação dos clientes.
- Maior penetração e participação no mercado e mais rentabilidade para a organização (duas vezes mais chances de alcançar esses resultados).
- Maior crescimento do valor de mercado.
A comparação abrange a frequência de implantação, o lead time, o tempo de recuperação e a taxa de falha das alterações.
Veja o diagrama original ↗