O mundo depende de sistemas de computação complexos e distribuídos e dos engenheiros que os mantêm. Esses sistemas formam a espinha dorsal de inúmeros sistemas e indústrias, incluindo áreas financeiras, companhias aéreas, varejistas e provedores de software como serviço (SaaS). À medida que a importância desses sistemas aumenta, aumentam também as expectativas dos clientes quanto à disponibilidade. Garantir que esses sistemas sejam confiáveis é uma tarefa crítica, mas muitas vezes negligenciada ou sub-priorizada.
Esta série de artigos explicará o que significa confiabilidade, por que é importante e como as equipes podem tornar a confiabilidade uma prioridade em suas organizações. Você aprenderá como integrar práticas de confiabilidade à cultura de sua organização, como reduzir o risco de incidentes e interrupções e como identificar e lidar com falhas em seus sistemas. Também forneceremos links para guias, tutoriais, vídeos e webinars para que você possa aprender mais.
O que é confiabilidade?
Confiabilidade é a capacidade de um sistema permanecer disponível por um período de tempo. Sistemas confiáveis são aqueles que podem executar continuamente suas funções principais sem interrupções de serviço, erros ou reduções significativas no desempenho. No entanto, existem muitas maneiras diferentes de um sistema falhar, especialmente quando um sistema se torna maior, mais dinâmico e mais complexo. Nossos sistemas – e as pessoas que operam esses sistemas – devem ser capazes de se recuperar dessas falhas. Essa capacidade de recuperação é chamada de resiliência. Para maximizar a disponibilidade, os sistemas devem ser confiáveis e resilientes.
Por que a confiabilidade é um desafio?
A confiabilidade não é apenas uma questão de habilitar a replicação em um banco de dados ou ter sistemas redundantes em execução em uma região separada. Confiabilidade é um alinhamento de tecnologia, práticas de engenharia e cultura organizacional. As equipes de engenharia devem não apenas entender a importância de melhorar a confiabilidade, mas também ter o conhecimento, as ferramentas, as práticas e o suporte organizacional para tornar a confiabilidade parte de seu fluxo de trabalho diário. Para equipes de engenharia de confiabilidade de sites (SRE, sigla em inglês), isso significa priorizar redundância, tolerância a falhas, recuperação automatizada e mecanismos semelhantes. E quando ocorrem falhas, as equipes de gerenciamento de incidentes devem ter o conhecimento e a prática para responder e corrigi-las rapidamente.
Além disso, a confiabilidade não é um projeto único e de curto prazo. Isso exige criação de uma prática de confiabilidade em nossa organização, treinamento de nossas equipes para desenvolver e testar a confiabilidade e abordar os modos de falha em nossos sistemas. Nossos sistemas também mudam com o tempo, à medida que novos funcionários são integrados, novos códigos são implantados e comportamentos imprevistos surgem. Assim como o teste de controle de qualidade é um processo contínuo que revela defeitos e regressões no código, o teste de confiabilidade é um processo contínuo que revela defeitos nos sistemas.
Aprenda como QA está mudando lendo nosso white paper: Como aplicativos modernos estão mudando os testes tradicionais.
Ao longo desse processo, as equipes também devem superar obstáculos e riscos para seus esforços de confiabilidade, incluindo:
- Continuar a construir e manter aplicativos.
- Atender a incidentes e interrupções.
- Concluir as principais iniciativas técnicas, como a migração de data centers locais para a nuvem (16% das organizações citam o desempenho e a confiabilidade como um dos principais desafios para a adoção geral da nuvem).
- Adotando novas tecnologias, como containers e Kubernetes.
Para muitas organizações, esses obstáculos podem se tornar impedimentos à confiabilidade.
No entanto, uma iniciativa de confiabilidade tem benefícios significativos que compensam esses desafios.
Por que você deve priorizar a confiabilidade?
O risco mais óbvio de não priorizar a confiabilidade é o aumento das interrupções, que são interrupções nas operações normais de um sistema. As interrupções têm consequências significativas no mundo real. De acordo com o Gartner, as empresas perdem uma média de US$ 336.000 por hora de inatividade, em relação aos principais sites de comércio eletrônico arriscam até US$ 13 milhões em vendas perdidas por hora de inatividade. Isso não inclui outros efeitos prejudiciais de longo prazo, como perdas na confiança do cliente, diminuição da avaliação da empresa e os custos indiretos de correção de interrupções (salários de engenheiros, restauração de backups, criação de infraestrutura adicional etc.). Para empresas que fornecem serviços críticos, as interrupções podem ter um impacto direto na vida dos clientes.
Há outros benefícios também. Do ponto de vista operacional, melhorar a confiabilidade permite que as equipes gastem menos tempo mitigando os danos causados por interrupções e mais tempo se concentrando em suas principais competências. De acordo com o relatório State of Chaos Engineering de 2021, as organizações que priorizam a confiabilidade têm:
Menos incidentes de alta gravidade por mês.
- Menor tempo de resolução de incidentes (medido pelo tempo médio para resolução).
- Menor número de bugs enviados para produção.
Melhorar a confiabilidade também melhora a experiência do cliente, cria confiança em sua marca e oferece uma vantagem competitiva. Em última análise, a confiabilidade não é apenas um investimento em tecnologia, mas um investimento no crescimento e no sucesso da organização.
Como começar a melhorar a confiabilidade?
Como mencionado anteriormente, a confiabilidade é uma jornada que envolve várias áreas do negócio.
Podemos separar essa jornada em três elementos principais: cultura, observabilidade e tecnologia.
Cultura
A abordagem da organização para a confiabilidade.
- Educar as equipes sobre o que é confiabilidade, por que é importante e como elas podem contribuir.
- Treinando e engajando equipes em práticas de confiabilidade.
- Criar estratégias para antecipar e responder a incidentes.
Observabilidade
A compreensão de como os sistemas operam e se comportam.
- Usando observabilidade e monitoramento para medir o estado de seus sistemas.
- Usando alertas para monitorar e detectar falhas.
- Definir metas de confiabilidade e acompanhar o progresso em direção a uma maior confiabilidade técnica.
Tecnologia
Os sistemas que sua organização opera ou utiliza para fornecer seus serviços, incluindo sistemas em nuvem e dependências de terceiros.
- Encontrar e mitigar possíveis falhas em sistemas distribuídos.
- Solução de problemas e tratamento de falhas quando elas ocorrem o mais rápido possível.
- Implementação de mecanismos automatizados para detectar e recuperar rapidamente de falhas.