Blog

Notícias, novidades e informações sobre o mundo Hard Tech

Cultivando a Excelência Operacional: torne seus sistemas operations-friendly & confiáveis

Excelência operacional. Esse termo não é nenhuma novidade e certamente você já ouviu falar diversas vezes, não é verdade? Mas antes de entrarmos em conceitos e definições do que é essa Excelência Operacional, é importante citarmos alguns depoimentos de personas que adotaram as tecnologias do DevOps sem estarem preparados para tal.

  • “Comprei DevOps e ainda não vi grandes resultados.”
  • “Adotei uma solução de monitoração adequada a esse mundo novo e agora tenho mais um dashboard para tomar conta. Não sei pra onde eu devo olhar!”
  • “Meu time de operação está sobrecarregado com a quantidade de alertas e notificações que todas essas ferramentas de monitoração estão gerando!”
  • “Kubernetes. Openshift. Containers. Tenho tudo e não melhora nada.”
  • “Os incidentes agora levam muito tempo para serem solucionados, porque existem muitas informações, uma complexidade maior, e não há uma boa visibilidade do que realmente está acontecendo no ambiente.”

Imagino que isto ocorre ou já ocorreu no seu ambiente de trabalho (ou no de um amigo) e a pergunta que fica é: qual é o problema?

Anos lidando com os problemas de nossos clientes e conversando com pessoas que passaram por esse tipo de situação, mostraram que isto ocorre porque as empresas primeiro buscam soluções através de ferramentas e esquecem que quem opera essas ferramentas e plataformas são pessoas.

Embora algumas apresentações e alguns fornecedores possam tentar te convencer do contrário, a verdade é que ferramentas não são mágicas. Elas estão aqui para tornar a vida das pessoas melhores se, e somente se, houver um objetivo claro a ser alcançado e existir um plano bem definido para tal.

Tá. E a tal da Excelência Operacional?

Bem, ela é um método para tornar sistemas (e por que não, serviços?) melhores e mais sustentáveis. Faz parte de sua missão torná-los mais confiáveis e escaláveis através da otimização das arquiteturas, processos e, claro, das pessoas que o constroem e o operam.

Não se engane, esse estado não vai ser alcançado por engano. O roadmap necessário para chegar no estado da arte envolve aprender um novo conjunto de habilidades de uso diário; atualizar processos e ferramentas; e abraçar um mindset com três princípios fundamentais, que vão te permitir mergulhar de cabeça nessa piscina de água morna.

Princípio #1 — Drift into failure

Se você tem (ou trabalha) em um negócio que não pode parar, certamente você já se fez perguntas como “O que acontece quando seu serviço não está disponível?” ou “O que acontece quando usuários não conseguem interagir online com sua aplicação?”, não é verdade? Eventos que causam uma indisponibilidade de seu serviços são bastante impactantes, seja pelo lado financeiro como também pela imagem e/ou credibilidade de sua empresa.

Por outro lado, devido as complexidades dos sistemas e também as constantes mudanças que ocorrem no dia a dia, sabemos também que falhas sempre irão existir. A discussão aqui não é sobre SE ocorrerá algum problema na sua aplicação que deixará ela indisponível, lenta ou com erros, e sim QUANDO.

Como diz Bejamin Treylor Sloss (VP 24×7 Engineering da Google) : “100% is the wrong reliability target for basically everything”. O foco não é evitar que falhas ocorram a qualquer custo, o que se deve buscar constantemente é:

Como se preparar para quando esse evento ocorrer?

Como mitigar o risco?

O quão rápido seu sistema consegue se recuperar?

Lição: espere falhas. Um componente pode falhar ou ser interrompido a qualquer momento. Componentes dependentes irão falhar a qualquer momento. Haverá falhas de rede. Os discos ficarão sem espaço.

Descubra as fraquezas de seu sistema/processo/operação, revele os riscos, faça parte da cultura blameless e o mais importante:

Princípio #2 — Data is the most valuable asset

Já concordamos que os sistemas estão sempre falhando, não é? Mas não é porque estão sempre falhando que você deve buscar que os serviços estejam perfeitos 100% do tempo.

Seus usuários estão felizes?

É neste ponto que os conceitos de SLI/SLO/Error Budget entram no jogo. Caso você não tenha lido nosso artigo sobre esse tema, por favor, pare aqui, leia e então volte novamente. Não tem problema, eu espero. Vai lá.

Basicamente é possível saber, através dessas abordagens e medidas, se a qualidade de serviço é boa o suficiente, ou seja, avalia se o serviço está em um bom estado para o usuário final ou não.

Qual o comportamento de seu usuário?

Além de saber se um serviço está num estado não confiável ou não, é preciso também rastrear o que cada usuário realiza no seu sistema. Para cada passo, você deve medir: duração, resultado, operação, logs, erros, argumentos, segmentos e outros detalhes relevantes na execução de seu produto.

Com esse conjunto de dados você consegue falar sobre a robustez e erros que seus usuários mais recebem com frequência, facilitando assim sua conversa com as áreas de negócio de sua empresa, e conseguindo também criar um processo de melhorias contínuas, ou inovações incrementais, de seu produto.

Lição: Instrumente tudo. Use dados de produção para encontrar problemas em produção. James Hamilton já dizia: “ A garantia de qualidade de um sistema crítico é um problema de mineração de dados e visualização”.

Princípio #3 — Ordering the alphabet soup

Você já deve ter lido em artigos, ouvido em eventos ou mesmo em uma conversa de bar, termos como DevOps, DevSecOps, BizDevOps, Lean, Agile, SRE, UX, Chaos Engineering, Kubernetes, Serverless, Microservices, Big Data Systems, Immutable Infrastructure, UX, Infra as Code, NoSQL, ChatOps, Operation as a Service, etc. É importante frisar que todo esses movimentos, práticas, abordagens, disciplinas e tecnologias são muito recentes. E isto tudo acaba soando muito bem para nossos ouvidos.

Mas há algo que geralmente não se admite com tanta frequência: construir e manter sistemas complexos em produção é muito difícil, demorado e estressante.

Na prática, nosso dia a dia não é nada simples, e muito se deve a dois fatores:

  • #1 Depilamos muitos Iaques: uma série interminável de pequenas tarefas que temos que fazer antes de poder trabalhar naquilo que realmente é importante
  • #2 Checklists sem fim para manter sistemas produtivos são muito longos e complexos

Quem cuida de operação tem bastante coisas para aprender com quem desenvolve um sistema (e vice-versa). Gerenciar todo esse dia-a-dia está ficando cada vez melhor graças a uma tendência que é: tratar, cada vez mais, a infraestrutura como código.

Lição: Automatize suas tarefas repetitivas. Pessoas cometem falhas, precisam dormir e esquecem coisas. Alguns dos benefícios de transformar sua operação/infraestrutura em código são:

  • Redução da necessidade intervenção manual
  • Mais pessoas são capazes de realizar tarefas
  • Aumento do reuso
  • Confiabilidade no processo e na execução
  • Controle de versão
  • Tudo está documentado

Tenha em mente que a automação deve ser vista como uma parceira da equipe, e não um substituto para as atividades/ações dos seres humanos.

Escrito por: 

Thiago Maciel, Tech specialist Inmetrics 

 

Quer saber mais sobre o assunto? Entre em contato conosco.