Equilibrar a necessidade de confiabilidade do serviço com a necessidade de lançar novas funcionalidades.
→Definir um Objetivo de Nível de Serviço (SLO) (ex: 99,9% de disponibilidade). Os 0,1% restantes são o orçamento de erro. Se o orçamento estiver em grande parte intacto, lançar funcionalidades. Se o orçamento estiver esgotado, interromper os lançamentos de funcionalidades e focar em melhorias de confiabilidade.
Por quê: O orçamento de erro fornece uma estrutura baseada em dados para tomar decisões de risco, alinhando equipes de engenharia, produto e negócios em um objetivo comum.
Aprender com incidentes para evitar que eles recorram, ao mesmo tempo em que se fomenta uma cultura de segurança psicológica.
→Conduzir post-mortems sem culpa (blameless postmortems) após incidentes. Focar a investigação em fatores sistêmicos, lacunas de processo e falhas de ferramentas, e não em atribuir culpa a indivíduos. O resultado deve ser uma lista de itens de melhoria acionáveis.
Por quê: Uma cultura sem culpa incentiva a comunicação honesta e aberta, levando a uma compreensão mais precisa das causas-raiz de um incidente e a ações preventivas mais eficazes.
Coordenar a resposta a um incidente grave de forma eficaz, evitando confusão e esforço duplicado.
→Implementar um Sistema de Comando de Incidentes (ICS) com funções claramente definidas: Comandante do Incidente (coordenação geral), Líder de Operações (investigação técnica/correção) e Líder de Comunicações (atualizações para stakeholders).
Por quê: O ICS fornece uma estrutura padronizada e escalável para resposta a incidentes, garantindo linhas claras de autoridade e comunicação, o que é crucial para resolver problemas complexos rapidamente.
Medir o desempenho de uma organização de entrega de software.
→Acompanhar as quatro principais métricas DORA: Frequência de Implantação (com que frequência), Tempo de Lead para Alterações (quão rápido do commit à implantação), Taxa de Falha de Alteração (qual percentual das implantações causa falha) e Tempo para Restaurar o Serviço (MTTR).
Por quê: Essas quatro métricas fornecem uma visão equilibrada tanto da velocidade de desenvolvimento quanto da estabilidade operacional, e provaram correlacionar-se com organizações de alto desempenho.
Uma equipe SRE está gastando muito tempo em tarefas operacionais manuais e repetitivas (toil), não deixando tempo para projetos de engenharia.
→Identificar e quantificar o "toil" mais demorado. Priorizar e automatizar essas tarefas (ex: implementar autoscaling em vez de escalonamento manual, auto-remediação para alertas comuns). Limitar o "toil" a < 50% do tempo do engenheiro.
Por quê: "Toil" é um fardo para a produtividade e o moral. Reduzir sistematicamente através da automação libera os engenheiros para trabalhar em melhorias de confiabilidade de longo prazo.
Atribuir custos de nuvem com precisão a diferentes equipes, serviços ou ambientes em uma infraestrutura compartilhada.
→Implementar uma estratégia consistente de rotulagem/tagging. Usar esses rótulos para filtrar em relatórios do Cloud Billing. Para GKE, habilitar a alocação de custos do GKE para detalhar os custos por namespace ou carga de trabalho.
Por quê: A alocação de custos precisa proporciona visibilidade, o que impulsiona a responsabilização. Equipes que podem ver seus gastos são capacitadas a otimizá-los.
Otimizar custos de computação para um conjunto diversificado de cargas de trabalho (estáveis, interrompíveis, dev/test).
→Correlacionar a carga de trabalho com o modelo de precificação. Usar Committed Use Discounts (CUDs) para cargas de trabalho estáveis, 24/7. Usar Spot VMs para jobs tolerantes a falhas e interrompíveis (ex: processamento em lote). Agendar ambientes de dev/test para desligar fora do horário comercial.
Por quê: Uma abordagem de precificação de computação "tamanho único" é ineficiente. Usar a ferramenta certa para o trabalho pode levar a economias significativas (>70%) sem impactar o desempenho.
Otimizar custos e desempenho do GKE garantindo que os pods estejam solicitando quantidades apropriadas de CPU e memória.
→Implantar o Vertical Pod Autoscaler (VPA) no modo `recommendation`. Analisar suas sugestões para ajustar os `requests` de recursos dos pods. Uma vez confiante, mudar para o modo `auto` para dimensionamento contínuo.
Por quê: O provisionamento excessivo de pods desperdiça dinheiro, enquanto o provisionamento insuficiente causa problemas de desempenho (throttling, OOMKilled). O VPA usa dados de uso reais para fazer recomendações precisas de dimensionamento, melhorando tanto a eficiência quanto a estabilidade.
Reduzir a latência causada por "cold starts" para um serviço do Cloud Run.
→Configurar um valor `min-instances` para manter um número de instâncias "quentes". Além disso, otimizar a imagem do container (imagem base menor, menos camadas) e o código de inicialização da aplicação (inicialização preguiçosa).
Por quê: `min-instances` é a forma mais direta de reduzir "cold starts", mas tem um custo. Combiná-lo com a otimização de container e código oferece uma abordagem equilibrada para desempenho e custo.
Otimizar custos para uma carga de trabalho de análise BigQuery em grande escala com padrões de consulta variáveis.
→Mudar do preço sob demanda para BigQuery Editions (slots). Comprar um compromisso de slot de linha de base para carga previsível e habilitar autoscaling para picos. Além disso, otimizar consultas usando tabelas particionadas/clusterizadas e evitando `SELECT *`.
Por quê: Para cargas de trabalho consistentes, o preço baseado em slots é mais econômico do que o sob demanda. O autoscaling oferece flexibilidade para picos enquanto controla os custos. A otimização de consultas e tabelas reduz a quantidade de dados processados, diminuindo diretamente os custos.
Reduzir altos custos de saída de rede (network egress) para uma aplicação distribuída globalmente.
→Usar Cloud CDN para armazenar em cache conteúdo estático na borda, mais próximo dos usuários. Para tráfego dinâmico, escolher o Nível de Serviço de Rede apropriado (Premium para desempenho, Standard para economia de custos). Processar dados regionalmente para minimizar o tráfego entre regiões.
Por quê: A saída de rede (Egress) é um grande fator de custo. O CDN descarrega o tráfego da origem, reduzindo diretamente a saída. O uso cuidadoso dos níveis de rede e o processamento de dados regional podem reduzir significativamente os custos.