Engenharia de Confiabilidade de Sites (SRE) Aprimore tarefas operacionais com observabilidade, automação e gerenciamento de incidentes
Marcelo Costa
Prefácio
Por muitos anos, procurei a opção ideal entre os diversos papéis da Engenharia de Software que combinasse com minha paixão por requisitos não funcionais, onde eu tivesse exposição a todo o ciclo de vida de desenvolvimento, pudesse escrever código como se todo dia fosse uma "Hackathon" e que eu colaborasse com outras áreas da organização, exercitando conhecimento técnico, comunicação e empatia com meus colegas e clientes.
E foi assim que eu encontrei Site Reliability Engineering (SRE), ou Engenharia de Confiabilidade de Sites. Foi em SRE que eu encontrei o espaço para amadurecer ainda mais essas competências e implementar práticas adotadas por times de engenharia de grandes empresas que são utilizadas como referência entre os profissionais de TI.
SREs são conhecidos como "pau para toda obra", contribuindo com o desenvolvimento, testes, releases ou propondo mudanças de infraestrutura. SREs detêm um entendimento profundo de observabilidade (métricas, monitoramento, alertas etc.) e ajudam a organização com a melhoria de processos através do gerenciamento de incidentes, sempre envolvidos em conversas com outros times, ajudando onde for necessário.
Essa paixão por SRE é que me motivou a escrever este livro, que vai ajudar você a aprender mais sobre as práticas de SRE. Cada capítulo foi produzido com muito entusiasmo, compartilhando a experiência adquirida nos campos de batalha e descrevendo conceitos com exemplos fáceis de digerir.
Prepare um café, chá ou seja lá qual for sua bebida favorita e venha devorar estas páginas!
Ah, claro, não precisa ler tudo, apenas 99% ou 99.9% (você vai aprender mais sobre "os noves" neste livro).
Sobre o livro
Os conceitos de SRE ajudam times a obter uma disciplina para lidar com eventos inesperados, identificando as entidades envolvidas no evento e quantificando impacto através de métricas para determinar prioridades. Isso ajuda toda a organização, melhorando a percepção dos clientes e a qualidade de vida dos próprios funcionários da empresa, ao evitar o "caos" da ausência de processos, a imprevisibilidade e falta de dados sobre o estado atual do sistema e de seus usuários.
Se você está interessado(a) em se tornar SRE, ou já atua como tal mas procura saber mais sobre as implementações de tais práticas em outras organizações, vai encontrar muitas informações valiosas neste livro. Se você trabalha com Desenvolvimento, Suporte, Sistemas, QA, Análise de Dados, Operações ou qualquer outra área da Engenharia de Software, já que as práticas de SRE englobam toda a organização, você eventualmente terá que interagir com o time de SRE. Se a organização em que você trabalha não possui um time de SRE, talvez outro time ou um grupo de engenheiros(as) já esteja executando práticas similares. Então você pode obter um melhor entendimento sobre tais práticas para enriquecer essa interação e talvez você deva até recomendar este livro para eles.
Os capítulos mais conceituais deste livro são úteis para qualquer membro de uma organização que pode estar envolvido(a) em um evento onde o sistema não funciona como esperado (tal evento é conhecido como "incidente", que será explicado melhor no capítulo 2). O envolvimento não está relacionado com *culpa*, mas sim com *colaboração* entre diferentes departamentos como Gerenciamento de produto ou Marketing. Por exemplo, se alguma funcionalidade do website ou aplicativo da empresa ficar indisponível por mais de uma hora, talvez seja a hora de emitir uma mensagem notificando clientes de que "Estamos enfrentando dificuldades e vamos fornecer mais informações em breve". Depois que o sistema for restaurado, praticamente todos os departamentos são mais do que bem-vindos a participar de um Post Mortem (a autópsia do incidente, discutida em detalhe no capítulo 12), já que nessa reunião podem ser discutidos tópicos como "impacto financeiro" ou até mesmo estratégias para acomodar as próximas campanhas de marketing.
Com a disciplina da definição de prioridades (Objetivos de Nível de Serviço são explicados no capítulo 9), este livro se torna útil também para gerentes e executivos interessados em entender os benefícios de SRE, caso estejam explorando a ideia de criar um time para melhorar a reputação do negócio da empresa através de sistemas com alta disponibilidade e amadurecer processos para, em caso de incidentes, restaurar a experiência de seus clientes de forma mais eficiente.
Basicamente, o livro é recomendado principalmente para engenheiros de software, mas os conceitos encontrados aqui devem interessar também a líderes que desejam promover um melhor equilíbrio entre a performance de um sistema e a carga de trabalho de seus engenheiros, e até mesmo colaboradores de qualquer departamento que desejam ajudar com a melhoria de processos e aprender mais sobre tecnologias relacionadas a confiabilidade.
Afinal, estamos todos juntos nisso, não é mesmo?
Como o livro está organizado
Temos um material preparado com muita dedicação para você apreciar. Vamos mergulhar no mundo da Engenharia de Confiabilidade de Sites: aprender os conceitos, falar sobre a infraestrutura que abriga os sistemas, como são observados (Observabilidade), SLOs (Objetivos de Nível de Serviço), gerenciamento de incidentes, automação de tarefas repetitivas, Engenharia do Caos e outras práticas comuns aplicadas na indústria.
A primeira parte foca nos fundamentos. Vamos definir o que é SRE e entender como se relaciona com outros papeis na Engenharia de Software, descrever brevemente as suas competências (que têm seus respectivos capítulos onde podemos nos aprofundar depois) e vamos explicar o ciclo de vida do desenvolvimento de software.
Na parte 2 (Infraestrutura), os capítulos vão explorar arquiteturas de software confiáveis, incluindo alguns exemplos de arquiteturas utilizadas com frequência na indústria, e plataformas de runtime (execução). Vamos discutir os fundamentos do ciclo de desenvolvimento, seguido do entendimento da infraestrutura e suas tecnologias com foco em Escalabilidade, Disponibilidade e Resiliência.
A parte 3 vai mergulhar em conceitos de observabilidade, tecnologias de Métricas, Logs, Traces, ferramentas de monitoramento, e vamos desenvolver uma aplicação de exemplo utilizando a linguagem de programação Golang.
Objetivos de Nível de Serviço (Service Level Objectives, ou "SLOs") são apresentados na parte 4, este é o conceito mais importante para SREs já que guia todas as outras práticas. SLOs ajudam toda a organização a identificar como um determinado serviço se comporta, a severidade de sua interrupção e como observar seus principais indicadores. Se você tiver que priorizar alguma parte deste livro para a sua leitura, estes são os capítulos que você está procurando.
As competências de SRE serão explicadas com mais detalhes na parte 5 (Gerenciamento de incidentes). Munidos do conhecimento adquirido nas partes anteriores, podemos imergir no ciclo de vida de um incidente e Post Mortems e, quando analisarmos um exemplo de um incidente, poderemos reconhecer os conceitos e tecnologias que serão mencionados. Vamos explorar outros tópicos da Engenharia de Confiabilidade, discutindo oportunidades para automatizar atividades repetitivas (eliminate toil) e desenvolver ferramentas para ajudar a resolver tarefas rotineiras.
Vamos conhecer a Engenharia do Caos e aprender como SRE pode colaborar com outros engenheiros para realizar "injeções de falhas" em serviços, assim como seus respectivos componentes de infraestrutura ou dependências, para, propositalmente, criar eventos que testam a resiliência dos serviços e aprender como ele se comporta durante um desastre ou uma degradação parcial. Vamos falar também sobre outras práticas comuns da indústria como monitoramento sintético, interruptores de funcionalidades (feature toggles), redirecionamento de tráfego para resolução de incidentes e algumas dicas sobre como gerenciar a confiabilidade de aplicativos móveis.
Espero que o aprendizado deste livro sirva como combustível para discussões voltadas para a adoção de novos processos e que ajude leitores a navegar o planejamento de novas propostas para Observabilidade e Gerenciamento de Incidentes.
Sobre o autor
Natural de Fortaleza, Ceará, Marcelo Costa atua como Site Reliability Engineer em Chicago, Illinois. Começou sua carreira como Desenvolvedor Web enquanto estudava para obter o diploma de Bacharel em Administração de empresas. Logo depois aceitou uma proposta para se tornar Engenheiro de Suporte, trabalhando para uma multinacional responsável por soluções de gerenciamento de conteúdo com uma suite de produtos compatível com várias tecnologias de gigantes da indústria como Microsoft e Oracle. Teve exposição a diferentes arquiteturas, problemas de performance e investigações de bugs. Obteve várias certificações, entre elas: SCJP (Sun Certified Java Programmer), LPIC (Linux Professional Institute Certified), ITIL (Information Technology Infrastructure Library) e FCE (First Certificate in English) emitida pela University of Cambridge ESOL (English for Speakers of Other Languages).
Em 2012, se mudou para a Irlanda para trabalhar como Senior Sytems Engineer e obteve um mestrado em Enterprise Application Development na Atlantic Technological University em Letterkenny, Co. Donegal, Ireland. Trabalhou em empresas famosas como IBM e Twitter. Nesse período, como Cloud Integration Engineer, esteve envolvido em projetos de pipelines de Integração Contínua e Entrega Contínua de serviços conteinerizados com a tecnologia Docker para deployments com Kubernetes em plataformas na Nuvem. Depois, como Reliability Engineer, utilizou ferramentas de monitoramento e gerenciou incidentes no TCC (Twitter Command Center) como IMOC (Incident Manager On-Call).
Em 2019, se mudou novamente, desta vez para os Estados Unidos para trabalhar na Universidade de Chicago e atualmente trabalha para o setor privado como Site Reliability Engineer, envolvido em projetos de observabilidade e automação para gerenciamento de incidentes para melhorar a confiabilidade de serviços operando na plataforma Amazon Web Services (AWS).
O autor teve experiência com ambientes onde as práticas de SRE já eram bastante amadurecidas e atualmente trabalha em projetos para a implementação das mesmas práticas em seus estágios mais iniciais.
Sumário
- Parte 1: Fundamentos
- 1 O que é SRE?
- 1.1 Conhecendo SRE
- 1.2 Um pouco de história
- 1.3 Outros times de engenharia de software e SRE
- 2 Competências de SRE
- 2.1 SLOs, SLIs e Orçamento de Erro
- 2.2 Gerenciamento de incidentes
- 2.3 Observabilidade
- 2.4 Desenvolvimento de ferramentas e automação de atividades repetitivas
- 2.5 Engenharia do Caos
- 2.6 O que mais SREs fazem?
- 3 O ciclo de vida do desenvolvimento de software
- 3.1 Ambientes
- 3.2 Uma breve revisão sobre Integração Contínua e Entrega Contínua (CI/CD)
- 3.3 Testes e Quality Assurance
- 3.4 Estratégias de deployments para confiabilidade
- 3.5 Gerenciamento de releases
- 3.6 O serviço está em Produção, e agora?
- Parte 2: Infraestrutura
- 4 Arquiteturas de software confiáveis
- 4.1 Escalabilidade
- 4.2 Disponibilidade
- 4.3 Resiliência
- 5 Plataformas de runtime
- 5.1 Soluções On-Premises
- 5.2 Soluções na Nuvem
- 5.3 Outras plataformas
- Parte 3: Observabilidade
- 6 Métricas
- 6.1 Os 4 sinais de ouro de SRE
- 6.2 Bancos de dados de série temporal
- 6.3 Cuidados com métricas
- 6.4 OpenTelemetry
- 6.5 Criando uma aplicação de exemplo
- 7 Logs
- 7.1 Logs em ação
- 8 Traces
- 8.1 Traces em ação
- 8.2 Amostragem de Traces
- Parte 4: Conceitos de confiabilidade
- 9 Objetivos de Nível de Serviço (SLOs)
- 9.1 SLO
- 9.2 SLIs
- 9.3 Orçamento de Erro
- 10 Boas práticas para alertas
- 10.1 Alertando de acordo com SLOs e SLIs
- 10.2 Alertas e níveis de prioridade
- 10.3 Documentando passos acionáveis para alertas
- 10.4 Lidando com alertas durante o plantão (on-call)
- Parte 5: Gerenciamento de incidentes
- 11 Ferramentas de SRE
- 11.1 Metaengenharia
- 11.2 Sobre construir as próprias ferramentas ou adotar soluções existentes no mercado
- 11.3 Sugestões de ferramentas
- 12 O ciclo de vida de um incidente
- 12.1 Problema reportado
- 12.2 Triagem
- 12.3 Diagnóstico
- 12.4 Tratamento
- 12.5 Revisão
- 12.6 Conclusão
- 13 Outras práticas para melhorias de confiabilidade
- 13.1 Orientações básicas
- 13.2 Monitoramento Sintético
- 13.3 Simulações de incidentes
- 13.4 Interruptores de funcionalidades
- 13.5 Redirecionamento de tráfego
- 13.6 Considerações finais
- 14 Bibliografia
- 14.1 Recomendações
Dados do produto
- Número de páginas:
- 304
- ISBN:
- 978-85-5519-396-5
- Data publicação:
- 02/2025