O Que o Livro de Allspaw Resolve
A Disciplina de Não Ficar Sem Capacidade
John Allspaw escreveu 'The Art of Capacity Planning' (O'Reilly, 2008; segunda edição 2017) após executar operações no Flickr durante anos de crescimento explosivo. Sua tese: planejamento de capacidade não é um exercício de planilha uma vez ao ano. É uma disciplina contínua que combina medição, previsão & julgamento de engenharia. Pule qualquer um desses três, & você fica sem capacidade em produção ou queima dinheiro em hardware que fica ocioso.
O planejamento de capacidade fica entre dois modos de falha:
- Subprovisionamento: serviços rodam quentes, latência dispara, taxas de erro sobem, clientes saem. A forma mais rápida de perder usuários em uma fase de crescimento.
- Superprovisionamento: hardware fica em 10% de utilização, finanças pergunta por que o orçamento continua crescendo sem receita acompanhando. A forma mais rápida de perder sua contagem de pessoal em uma revisão de orçamento.
A arte está em encontrar o corredor entre esses dois penhascos e ficar dentro dele enquanto a carga de trabalho muda.
Três questões centrais orientam cada exercício de capacidade:
- O que temos? Capacidade atual em unidades concretas: requisições por segundo, consultas por segundo, gigabytes de armazenamento, conexões simultâneas.
- O que precisamos? Demanda prevista em uma data futura com limites de incerteza explícitos.
- Quando devemos agir? Tempo de espera para aquisição, provisionamento ou escalonamento. Cloud reduz isso a minutos; on-premise pode significar meses.
Por Que Não Pode Ser uma Planilha
Uma empresa de comércio eletrônico planeja capacidade uma vez por ano, em novembro, extrapolando linealmente o tráfego dos últimos 12 meses. Eles rodam em servidores dedicados com tempo de aquisição de 6 semanas. Seu tráfego mostra sazonalidade semanal forte (pico 3x no fim de semana), sazonalidade anual forte (5x Black Friday), & cresceu 40% ano-sobre-ano durante três anos.
Carga de Trabalho versus Utilização
Dois Números Diferentes, Ambos Necessários
O planejamento de capacidade falha quando equipes medem apenas uma das duas dimensões essenciais.
Carga de trabalho: a demanda no sistema de fora. Requisições por segundo, transações por minuto, megabytes por segundo, usuários simultâneos. Carga de trabalho descreve o que o mundo está pedindo de você.
Utilização: como cheio o sistema roda enquanto serve essa demanda. Porcentagem de CPU, memória usada, profundidade de fila, largura de banda de rede, IOPS de disco. Utilização descreve como o sistema se sente sob essa demanda.
Carga de trabalho sozinha diz o que está chegando mas não se você pode servir. Utilização sozinha diz como cheio você está mas não o que esperar amanhã. Você precisa de ambas, traçadas lado a lado, para tomar decisões de capacidade.
Taxa de capacidade = carga de trabalho / utilização. Se você servir 1.000 requisições por segundo em 50% de CPU, sua taxa de capacidade é 2.000 RPS por 100% de CPU por servidor. Este fator de conversão permite traduzir demanda prevista em contagem de servidor necessária.
Allspaw enfatiza medição na granularidade certa. Uma amostra por minuto oculta picos de 30 segundos. Uma amostra por hora oculta tudo. Trabalho de capacidade real precisa de resolução sub-minuto para eventos de pico e resolução de minuto para tendência. Qualquer coisa mais grossa produz confiança falsa perigosa.
O Que Instrumentar
Sua equipe está iniciando instrumentação de capacidade em um lançamento de novo produto (um serviço de transcodificação de vídeo). Você pode selecionar até 8 métricas para rastrear em resolução sub-minuto. O serviço ingere uploads de vídeo, enfileira-os, transcodifica em múltiplos formatos, & escreve saídas para armazenamento de objeto.
Tendência, Sazonalidade, Incerteza
Três Camadas de Cada Previsão
Allspaw e o livro SRE do Google concordam na estrutura de uma previsão útil: tendência, sazonalidade, & limites de incerteza. Pule qualquer um e a previsão fica enganosa.
Tendência: a inclinação da demanda ao longo de meses ou anos. Frequentemente modelada com regressão linear para janelas curtas, exponencial ou piecewise-linear para crescimento composto. A linha de tendência responde 'para onde a demanda está indo em geral?'
Sazonalidade: os padrões cíclicos em múltiplas escalas de tempo. Diária (pico de tráfego à tarde), semanal (picos de fim de semana), anual (Black Friday, estação fiscal, ano escolar). Sazonalidade multiplicativa escala com a tendência; sazonalidade aditiva adiciona uma compensação constante.
Limites de incerteza: o cone de previsão. Uma previsão sem limites é um palpite. Previsões reais publicam uma estimativa central com limites superiores e inferiores explícitos, tipicamente em 90% ou 95% de confiança. O cone se amplia conforme você projeta mais no futuro. Uma previsão de 4 semanas pode ter limites de ±10%; uma previsão de 12 meses frequentemente tem ±50%.
Desacoplando crescimento de negócios de demanda técnica: previsões de planejamento de capacidade previsão de carga de trabalho técnica, mas equipes de negócios previsão de receita, inscrições, ou campanhas. O trabalho do planejador de capacidade é traduzir previsões de negócios em demanda técnica: um crescimento de inscrição de 30% pode significar 30% mais chamadas de API, mas pode significar 80% mais se novos usuários usam o sistema mais pesadamente, ou apenas 15% se convertem a taxas mais baixas. A taxa de conversão importa tanto quanto a previsão de negócios subjacente.
Previsão de Tráfego de Feriado
Seu serviço serve um site de comércio eletrônico. O tráfego de Black Friday do ano passado foi 5x a média de novembro, sustentado por 12 horas. O negócio cresceu 40% ano-sobre-ano. Marketing está lançando uma promoção paga esperada adicionar 20% adicionais ao tráfego de Black Friday este ano.
Conhecendo Seu Limite
Encontre o Limite Antes da Produção Fazer Isso
Previsão diz o que está chegando. Testes de limite dizem se o sistema pode servir. Allspaw trata testes de limite como uma entrada não negociável para planejamento de capacidade: você não conhece sua capacidade real até tê-la testado sob carga controlada.
Três tipos de testes de limite:
- Teste de carga sintética: um gerador de carga (k6, Locust, JMeter, vegeta) orienta tráfego em um serviço alvo em staging. Aumente a carga até algo quebrar. O ponto de quebra é o limite. Melhor para testes de serviço isolado.
- Simulação de incêndio em produção: deliberadamente reduzir capacidade em produção (drenar uma porcentagem de servidores, matar uma região) e observar como a capacidade restante lida com tráfego real. Testes de comportamento verdadeiro de produção incluindo interações inesperadas. Confiança mais alta mas risco mais alto.
- Carga de sombra: retocar tráfego de produção real em um serviço alvo rodando paralelo a produção. Captura padrões de carga de trabalho reais (mistura de consulta rara, agentes de usuário estranhos) sem afetar usuários. Meio-termo forte.
Headroom é o buffer entre carga atual e o limite. Regras de ouro de SRE:
- 50% headroom em estado estável para um serviço de região única (então uma falha de região não esgota a região sobrevivente)
- 30% headroom para um serviço multi-região com redundância N+2
- 100%+ headroom aproximando eventos de pico conhecidos (Black Friday, finais esportivas)
Headroom não é desperdício. É o custo de não paginar engenheiros às 3 da manhã, não perder clientes durante um pico, & não sofrer uma falha em cascata quando uma região falha. Equipes de finanças às vezes pressionam para reduzir headroom; engenheiros de capacidade devem articular o custo de rodar apertado para tornar essa conversa factual em vez de emocional.
Projetando um Teste de Limite
Você herda um serviço sem limite de capacidade documentado. A carga de produção atual é 800 requisições por segundo em 12 servidores, CPU média 35%. Marketing está anunciando uma campanha em 6 semanas esperada dirigir tráfego para 3.000 RPS em pico.
Para Cima, Para Fora, ou Diagonal
Quando Adicionar Potência, Adicionar Caixas, ou Ambas
Três estratégias de escalonamento centrais, cada uma com perfis de custo e confiabilidade distintos:
Escalonamento vertical (escalonamento para cima): máquinas maiores. Substitua servidores de 8 núcleos com servidores de 32 núcleos. Caminho mais simples; funciona até atingir limites de máquina única. Ponto único de falha permanece. Custo cresce não-linearmente: uma máquina de 32 núcleos frequentemente custa mais que 4x um de 8 núcleos.
Escalonamento horizontal (escalonamento para fora): mais máquinas. Adicione servidores atrás de um balanceador de carga. Capacidade escala linearmente com contagem de servidor. Modos de falha mudam: você deve lidar com coordenação distribuída, mas uma falha de servidor único não destrói mais o serviço. Complexidade operacional aumenta.
Escalonamento diagonal (termo de Allspaw): escale para cima primeiro para um tamanho por servidor confortável, então escale para fora de lá. Combina operações mais simples de servidores grandes com a redundância de múltiplos servidores. A maioria dos serviços de produção vivem no território de escalonamento diagonal.
Preço reservado versus sob demanda: provedores de nuvem recompensam previsibilidade. Capacidade reservada é 30-60% mais barata que sob demanda mas requer um compromisso de 1-3 anos. Planejadores de capacidade tipicamente bloqueiam demanda de estado estável com capacidade reservada e disparam para sob demanda para picos. Julgar mal essa divisão pode tanto desperdiçar dinheiro (over-reserved) ou expor orçamento para surpresa (under-reserved durante picos).
Instâncias spot e cargas de trabalho preemptível: 60-90% mais barato que sob demanda mas pode ser reivindicado com minutos de aviso. Adequado para trabalhos em lote, análise, cargas de trabalho de treinamento, ou qualquer serviço projetado para interrupção graciosa. Tráfego de produção enfrentado ao usuário tipicamente evita spot.
Escolhendo um Caminho de Escalonamento
Seu serviço de transcodificação de vídeo roda em 8 instâncias de nuvem de tamanho médio (8 núcleos cada). Você espera crescimento 3x nos próximos 6 meses. A carga de trabalho é vinculada a CPU, paralelizável por vídeo, & cada transcodificação de vídeo leva 90 segundos end-to-end. Instâncias reservadas custam 50% de sob demanda. Instâncias spot custam 30% de sob demanda mas podem ser terminadas com aviso de 2 minutos.
Carreiras de Planejamento de Capacidade
Onde as Habilidades de Planejamento de Capacidade Pagam
Planejamento de capacidade raramente é um título de trabalho por conta própria. As habilidades aparecem sob vários papéis:
Engenheiro de Confiabilidade de Site: planejamento de capacidade é uma responsabilidade central de SRE. A maioria das equipes de SRE têm um ou dois engenheiros que se especializam em capacidade, possuindo os modelos de previsão, testes de limite, & automação de provisionamento.
Engenheiro de Custo / FinOps em Nuvem: um papel mais novo focado em otimização de gasto em nuvem. Combina planejamento de capacidade com modelagem financeira, negociação de contrato, & gestão de portfólio de instâncias reservadas. Paga extremamente bem em grandes empresas nativas de nuvem porque contas de nuvem frequentemente são a segunda maior despesa após folha de pagamento.
Engenheiro de Performance: foca em eficiência por nó e teste de limite. O trabalho: extrair mais capacidade do mesmo hardware através de perfil, otimização, & mudanças arquiteturais. Conhecimento pesado de sistemas e tempo de execução de linguagem.
Especialista em Planejamento de Capacidade: em empresas muito grandes (Google, Meta, Amazon, Netflix), equipes dedicadas de planejamento de capacidade existem. Eles possuem modelos de previsão em toda a frota, negociam aquisição em escala, & coordenam com finanças em roteiros de hardware multi-ano.
Habilidades que compõem: análise de série temporal (R, Python statsmodels, Prophet), teoria de enfileiramento (M/M/1, M/M/c, Lei de Little), pelo menos uma ferramenta de gestão de configuração, pelo menos um painel de custo de nuvem, & a capacidade de escrever um relatório de previsão que um CFO pode entender e agir. As habilidades técnicas o conseguem a entrevista; as habilidades de comunicação conseguem o orçamento.
Embrulhando
O Que Você Agora Sabe
Planejamento de capacidade é uma disciplina contínua, não um exercício anual. Você cobriu:
- O corredor entre subprovisionamento e superprovisionamento
- Carga de trabalho versus utilização como as duas dimensões de medição
- Tendência, sazonalidade, & limites de incerteza como as três camadas de cada previsão
- Testes de limite (sintético, sombra, simulação de incêndio) como a única forma de conhecer capacidade real
- Buffers de headroom e por que não são desperdício
- Escalonamento diagonal e a decisão de preço reservado/sob demanda/spot
- Caminhos de carreira onde essas habilidades ganham autoridade de orçamento
Duas ideias importam mais. Preveja com limites, nunca com pontos únicos. & meça seu limite antes de produção fazer isso. Leve esses dois para frente e o resto segue.
Leitura recomendada: 'The Art of Capacity Planning' de Allspaw (O'Reilly, segunda edição 2017), os capítulos relevantes no Livro SRE do Google (livre em sre.google/books/), & 'Systems Performance' de Brendan Gregg para o trabalho de sistemas subjacente. A lição companheira geometry-of vai mais fundo na estrutura visual: Lei de Little como área, curvas de enfileiramento, inclinações de tendência, & envelopes de headroom.