L = λ × W: Um Retângulo
Lei de Little: A Equação Mais Útil no Planejamento de Capacidade
John Little provou em 1961 que para qualquer fila estável, independentemente de sua estrutura interna: L = λ × W, onde:
- L = número médio de itens no sistema (fila + em atendimento)
- λ (lambda) = taxa média de chegada de itens por unidade de tempo
- W = tempo médio que cada item permanece no sistema
A leitura geométrica: trace a taxa de chegada λ em um eixo & o tempo de residência W no outro. O produto L é a área do retângulo que formam. O planejamento de capacidade vive dentro deste retângulo.
Por que importa: qualquer duas das três quantidades determinam a terceira. Se você medir taxa de transferência & latência, você sabe ocupação. Se você medir ocupação & taxa de transferência, você sabe latência. A lei é robusta: aplica-se a solicitações web, mesas de restaurante, filas de supermercado & pipelines de CPU sem modificação.
Três exemplos concretos:
- Um serviço web processa 200 solicitações/segundo com latência média de 50 ms (0,05 s). L = 200 × 0,05 = 10 solicitações em voo a qualquer momento.
- Uma cafeteria serve 60 clientes/hora com tempo de permanência médio de 15 minutos (0,25 h). L = 60 × 0,25 = 15 clientes dentro em média.
- Uma linha de fábrica produz 100 widgets/hora com cada widget levando 2 horas de ponta a ponta. L = 100 × 2 = 200 widgets em processo.
Implicação de provisionamento: se você conseguir dimensionar para L (itens em voo concorrentes), você dimensionou o sistema. O número de threads de trabalho, conexões de banco de dados ou slots de fila todos derivam de L.
Dimensionando um Pool de Trabalho
Seu serviço de transcodificação de vídeo é dimensionado para uma taxa média de chegada de 30 trabalhos de transcodificação por minuto, cada um levando 90 segundos de ponta a ponta. O pool de trabalho atual tem 30 workers.
Por Que a Latência Explode Além de 80% de Utilização
A Curva Mais Importante no Planejamento de Capacidade
Trace a utilização no eixo x (0% a 100%) & a latência média no eixo y. A forma que emerge é uma das curvas mais consequentes em operações: explica por que os times almejam utilização bem abaixo de 100%, por que a margem reservada não é desperdício, & por que sistemas rodando 'eficientemente' em alta utilização caem sem aviso.
A curva de fila M/M/1: para um sistema com chegadas Poisson (aleatórias) & tempos de serviço exponenciais (aleatórios), o tempo médio de espera segue:
W_q = ρ / (μ(1-ρ))
onde ρ (rho) é a utilização (0 a 1) & μ é a taxa de serviço. O denominador (1-ρ) é o detalhe crucial: conforme ρ se aproxima de 1, o denominador se aproxima de 0, & o tempo de espera se aproxima do infinito.
Exemplos numéricos (multiplicador de latência vs ρ para M/M/1):
- ρ = 0,5: razão de latência 1,0 (baseline)
- ρ = 0,7: razão de latência ~2,3
- ρ = 0,8: razão de latência ~4,0
- ρ = 0,9: razão de latência ~9,0
- ρ = 0,95: razão de latência ~19,0
- ρ = 0,99: razão de latência ~99,0
O cotovelo fica em torno de 70-80% de utilização. Abaixo do cotovelo, adicionar carga aumenta a latência lentamente. Acima do cotovelo, a latência explode não-linearmente. É por isso que a regra canônica de SRE é: almeje utilização em estado estacionário abaixo de 80%, nunca rode sustentado acima de 90%.
Por que os times tradicionais subestimam isso: um servidor a 60% de CPU 'parece ocupado' mas tem confortável margem de latência. Um servidor a 90% de CPU 'parece produtivo' mas está a um pequeno aumento de carga de uma catástrofe de latência. A verdade geométrica: a inclinação da curva é a ameaça real, não seu valor y atual.
Lendo a Curva
Um time roda um serviço a 85% de utilização de CPU em estado estacionário. A latência p99 atual é 200 ms. Eles estão considerando adicionar 30% mais tráfego para consolidar carga de outro serviço que está sendo descontinuado.
Inclinação, Intercepto, & o Cone de Previsão
Lendo o Crescimento a partir de uma Inclinação
A previsão de demanda se reduz (em muitos casos) a desenhar a linha certa através dos dados históricos. As propriedades geométricas dessa linha: inclinação, intercepto & cone de incerteza, codificam a previsão inteira.
Tendência linear (y = mx + b): apropriada para janelas curtas ou processos genuinamente lineares. A inclinação m é a taxa de crescimento por unidade de tempo. O intercepto b é o valor inicial. Útil quando o crescimento é constante. Tende a subestimar quando o processo é realmente composto.
Tendência exponencial (y = b × e^(mx)): apropriada para crescimento composto: adoção viral, efeitos de rede de usuários, multiplicidade sazonal. Em uma escala y logarítmica, o crescimento exponencial se torna linear, o que facilita a estimativa de inclinação. A inclinação m em escala logarítmica é a taxa de crescimento por unidade de tempo.
Linear em partes: apropriada quando o crescimento tem regimes distintos. Uma startup pode crescer lentamente por 18 meses, depois ter uma inflexão viral que produz 6 meses de crescimento explosivo, depois platô. Três segmentos lineares se encaixam melhor do que qualquer curva única.
Cone de previsão: a estimativa central mais os limites superior e inferior, desenhados como um cone de alargamento no futuro. A largura do cone cresce com o tempo porque a incerteza se compõe. Uma previsão de 4 semanas pode ter limites de ±10%; uma previsão de 12 meses geralmente tem ±50% ou mais.
Decomposição de sazonalidade: a demanda real combina tendência + ciclo sazonal + ruído. Bibliotecas estatísticas (statsmodels, Prophet) decompõem uma série em esses três componentes, permitindo que a tendência seja projetada separadamente do padrão sazonal. Geometricamente, a tendência é a deriva subjacente, a sazonalidade é a ondulação periódica no topo, & o ruído é o jitter residual.
Escolhendo um Modelo de Tendência
Você tem 24 meses de volumes de solicitação mensais. Meses 1-12 cresceram de 1M para 2M (aparência linear, +83K/mês). Meses 13-18 cresceram de 2M para 4M (mais inclinado, +330K/mês). Meses 19-24 cresceram de 4M para 12M (muito mais inclinado ainda). Marketing confirma que um recurso de produto viral foi lançado no mês 13 impulsionando a inflexão.
Capacidade vs Demanda como Geometria 2D
O Gráfico em que Todo Time de Capacidade Vive
Trace o tempo no eixo x. Trace a demanda & capacidade no eixo y como duas linhas separadas. O intervalo vertical entre elas em qualquer ponto no tempo é a margem. A área 2D entre as curvas é o envoltório de margem.
Três formas de referência:
- Envoltório saudável: a linha de capacidade fica confortavelmente acima da linha de demanda. O intervalo pode diminuir durante picos mas nunca desaparece. O envoltório é uma banda de segurança.
- Envoltório fechando: a capacidade cresce mais lentamente do que a demanda. O intervalo se estreita ao longo do tempo. O ponto de intersecção no futuro é quando o sistema fica sem margem: a data em que o time deve adicionar capacidade até.
- Envoltório invertido: a demanda excede a capacidade. O sistema está em território de incidente. A magnitude vertical da inversão é o déficit que deve ser servido de alguma forma (transbordamento de fila, taxas de erro, impacto ao cliente).
O gráfico padrão de planejamento de capacidade traça:
- Histórico de demanda recente (linha azul sólida)
- Previsão de demanda com limites (linha tracejada + cone sombreado)
- Capacidade atual (linha verde sólida)
- Adições de capacidade planejadas com datas de entrega (função em degraus)
- A data de intersecção onde a demanda prevista cruza a capacidade atual: este é o prazo para o próximo provisionamento
A regra de decisão visual: mantenha a função em degraus de capacidade acima do limite superior do cone de previsão em todos os momentos. Não provisione para a estimativa central; provisione para o limite superior. O custo de sobre-provisionamento é finito (alguma capacidade ociosa); o custo de sob-provisionamento é ilimitado (usuários perdidos, falha em cascata, dano à reputação).
Lendo o Envoltório
Seu gráfico de capacidade mostra: demanda atual é 1.500 RPS crescendo 20% por mês. Capacidade atual é 2.500 RPS. Um novo lote de servidores (+1.500 RPS de capacidade) chega em 8 semanas. O cone de previsão tem limites de ±15% no horizonte de 8 semanas.
Geometria de Capacidade: Resumindo
Formas Que Predizem o Futuro
Você caminhou através de quatro estruturas geométricas que correm sob o planejamento de capacidade:
- Lei de Little (L = λ × W) como a área de um retângulo definindo ocupação em estado estacionário
- A curva de fila com seu cotovelo em 80% de utilização, codificando o custo não-linear de rodar quente
- Inclinações de tendência & cones de previsão que transformam dados históricos em projeções acionáveis
- Envoltórios de margem como gráficos 2D de capacidade versus demanda, com datas de intersecção marcando prazos de provisionamento
O planejamento de capacidade é, em seu núcleo visual, a disciplina de manter uma curva seguramente acima de outra ao longo do tempo. Os números são enfeite; as formas carregam a verdade. Um engenheiro de capacidade que lê a curva de fila corretamente apanhará problemas que um dashboard de CPU esconde até que o sistema já esteja queimando.
A lição complementar sobre planejamento de capacidade cobriu as práticas: medição, previsão, testes de teto, margem & escalonamento. Esta lição cobriu a geometria abaixo deles. Juntas, elas formam o andaime visual & analítico de serviços rodando que escalam sem surpresa.