O que foi a falha do GitHub em 17 de agosto
Em 17 de agosto de 2026, o GitHub enfrentou uma indisponibilidade que durou 7 horas e 47 minutos. O problema atingiu o site, a autenticação, as APIs, o GitHub Actions, os pull requests, as issues e o Copilot.
O próprio GitHub informou que a falha começou quando o tráfego chegou a um novo pico e um componente crítico da infraestrutura, localizado no datacenter da região Central dos Estados Unidos, não conseguiu acompanhar a demanda. A pressão de capacidade se espalhou para outros serviços.
O incidente importa para qualquer equipe brasileira que dependa de GitHub para publicar código, executar pipelines ou receber alterações. A lição não é abandonar a plataforma, mas reconhecer que uma dependência central precisa de cópia local, observabilidade e um plano de recuperação testado.
O relatório do GitHub descreve uma falha de capacidade, não uma alteração de código ou configuração que tenha iniciado o incidente.
Como a falha se espalhou
Quando um componente de infraestrutura perde capacidade, o efeito pode aparecer em serviços que parecem independentes. Autenticação, API, Actions e a interface web compartilham caminhos de rede e sistemas de suporte. Se um desses caminhos fica saturado, o usuário percebe erros em várias áreas ao mesmo tempo.
A recuperação também teve uma dificuldade conhecida em sistemas distribuídos: alguns serviços do Copilot entraram em um loop de novas tentativas no cliente. Os retries aumentaram o tráfego durante a recuperação e precisaram ser controlados antes que o tráfego pudesse ser restaurado com segurança.
Esse mecanismo é chamado de retry storm. Uma aplicação que tenta novamente sem limite, sem intervalo crescente e sem orçamento de tentativas pode transformar uma falha parcial em uma onda de novas requisições. O resultado é mais carga justamente quando o sistema já está vulnerável.
for tentativa in 1 2 3; do
resposta=$(curl -sS -o /dev/null -w "%{http_code}" https://api.exemplo.com/health)
[ "$resposta" = "200" ] && break
sleep $((tentativa * 2))
doneUm retry responsável combina limite de tentativas, espera crescente e uma condição clara para desistir. Em produção, também é importante registrar o motivo da repetição para diferenciar indisponibilidade externa de erro no próprio aplicativo.
O que o GitHub oferece e por que a interrupção pesa
O GitHub reúne repositórios Git, colaboração por pull requests, issues, APIs e automação com GitHub Actions. Para muitas equipes, essas peças formam uma cadeia contínua que começa no commit e termina no deploy.
O GitHub Actions é especialmente sensível a incidentes porque executa testes, builds, migrações e publicações. Quando os runners ou a API ficam indisponíveis, o código pode continuar existindo no computador do desenvolvedor, mas o fluxo de entrega deixa de avançar.
A plataforma também concentra autenticação e comunicação do projeto. Se o login falha, a equipe pode perder acesso ao repositório, aos secrets e às telas de acompanhamento ao mesmo tempo. Esse é o motivo para tratar o GitHub como uma dependência operacional, não apenas como um site de hospedagem de código.
- Repositórios: armazenam histórico, branches e tags do projeto.
- Pull requests: organizam revisão, discussão e integração de mudanças.
- Actions: automatizam testes, empacotamento e deploy.
- APIs: conectam ferramentas internas ao fluxo de desenvolvimento.
Como começar: prepare seu fluxo em etapas
O primeiro passo é descobrir onde o seu processo realmente depende do GitHub. Liste os comandos, automações e serviços que precisam de autenticação, acesso à API, download de artefatos ou execução de workflows.
Depois, mantenha um clone local atualizado para cada repositório crítico. Em projetos importantes, crie também um bundle do Git. Ele guarda branches e referências em um único arquivo que pode ser copiado para um armazenamento independente.
git fetch --all --prune
git bundle create backup-repos.bundle --all
sha256sum backup-repos.bundlePor fim, documente o que fazer durante uma indisponibilidade. Defina quem comunica o incidente, onde fica o último artefato, como bloquear um deploy automático e qual serviço alternativo pode receber uma publicação emergencial.
Não guarde o único backup no mesmo provedor do repositório. Um bundle no computador de um desenvolvedor ajuda, mas uma segunda cópia em armazenamento independente é mais segura.
Exemplo prático: um runbook para o dia do incidente
Imagine que o seu time precisa publicar uma correção e o GitHub não responde. Antes de repetir o comando várias vezes, consulte a página de status e confirme se o erro também ocorre fora da sua rede. Essa distinção evita perder tempo investigando DNS, VPN ou credenciais locais quando a origem é externa.
Se o código já está no clone local, preserve o estado atual com uma branch e gere um bundle. Se o deploy precisa continuar, use o artefato produzido pelo último pipeline aprovado, desde que sua política de segurança permita a promoção sem uma nova execução.
git status --short
git branch incidente-GitHub-2026-08-17
git bundle create incidente-GitHub.bundle --all
sha256sum incidente-GitHub.bundleDepois que o serviço voltar, não libere tudo de uma vez. Valide autenticação, API, Actions e o acesso aos artefatos. Reexecute os workflows com atenção para evitar duas publicações do mesmo commit ou uma migração repetida.
Não transforme uma indisponibilidade em duplicidade de deploy. Registre o commit publicado e confirme o estado do ambiente antes de reprocessar uma fila inteira.
Comparação com alternativas
Usar outra plataforma como GitLab ou Bitbucket pode reduzir a dependência de um único fornecedor, mas não elimina a necessidade de operar bem. Cada alternativa também tem APIs, runners, autenticação e serviços de armazenamento que podem falhar.
Um forge auto-hospedado, como uma instalação própria de GitLab ou Gitea, oferece mais controle sobre dados e disponibilidade local. Em troca, a equipe assume atualizações, backups, segurança, armazenamento, observabilidade e resposta a incidentes.
Para a maioria dos times pequenos, a melhor escolha é manter o GitHub como plataforma principal e criar uma cópia independente dos repositórios e artefatos críticos. Times maiores podem combinar espelhamento periódico com um segundo provedor e uma política de failover.
- GitHub: bom ecossistema e integração ampla, com dependência de serviços hospedados.
- GitLab ou Bitbucket: alternativa de plataforma, útil quando a organização já usa seu ecossistema.
- Forge próprio: mais controle, mas exige operação contínua e responsabilidade integral.
Pontos positivos e limitações da lição
O ponto positivo do incidente é tornar visível uma dependência que costuma ficar escondida. Um clone local, um bundle e um runbook são medidas simples que aumentam a capacidade de resposta sem exigir uma migração imediata.
Outra vantagem é revisar os retries entre serviços. Limites, backoff, circuit breakers e timeouts reduzem a chance de uma falha externa derrubar também o seu sistema. Essas práticas são úteis mesmo quando o provedor nunca fica indisponível.
A limitação é que nenhum backup substitui completamente a plataforma. Um bundle preserva o Git, mas não reproduz automaticamente issues, secrets, comentários, regras de proteção, runners e artefatos. A estratégia precisa separar o que é essencial para recuperar o código do que é necessário para recuperar toda a operação.
Faça um exercício trimestral: restaure um repositório a partir do backup, reconfigure um pipeline mínimo e meça quanto tempo leva até um deploy controlado.
Casos de uso reais
Desenvolvedor solo: um bundle semanal e uma cópia dos arquivos de configuração evitam que uma indisponibilidade apague um dia inteiro de trabalho. O objetivo é voltar a editar e testar localmente sem esperar o provedor.
Startup em crescimento: o time pode manter o GitHub como origem, mas guardar imagens de contêiner e artefatos de release em um local independente. Assim, um pipeline parado não impede uma ação de emergência já aprovada.
Empresa com vários times: a equipe de plataforma deve definir limites de retry, alarmes e um inventário de dependências. Também pode manter um espelho dos repositórios críticos e ensaiar uma recuperação sem acesso à interface web.
Consultoria ou agência: um runbook por cliente reduz a confusão quando um deploy falha durante uma janela de publicação. A documentação precisa informar o último commit, o artefato válido, o contato responsável e o procedimento de rollback.
Dicas e boas práticas
Comece pela continuidade do código. Repositórios críticos devem ter clones atualizados, tags de release e backups com checksum. Não espere um incidente para descobrir que o backup não abre.
Use tags imutáveis ou outra convenção equivalente para identificar releases. Um nome como v2.4.1 é mais seguro para recuperação do que depender apenas da branch principal.
Depois, cuide do comportamento da aplicação. Toda chamada a serviço externo deve ter timeout, limite de retries e logs com correlação. Repetir para sempre mascara a causa e pode piorar a saturação.
Retry sem jitter e sem orçamento de tentativas pode sincronizar milhares de clientes no mesmo intervalo. Espalhar as tentativas reduz picos artificiais.
Por último, monitore o que realmente bloqueia o negócio. Não olhe apenas para o status geral do provedor: verifique autenticação, API, filas de CI, artefatos e a última versão publicada.
Crie um teste sintético que abre o repositório de teste, dispara um workflow simples e confirma a chegada do artefato. Ele revela impacto operacional antes que o usuário final faça isso.
Vale a pena mudar sua estratégia?
Vale a pena revisar a estratégia, mas não necessariamente trocar de plataforma. O GitHub continua sendo útil para colaboração e automação; o problema está em depender dele sem cópias, sem limites de retry e sem um caminho de recuperação.
Para um projeto pequeno, comece hoje com clone local atualizado, bundle, checksum e uma página de runbook. Para uma equipe maior, acrescente espelhamento, inventário de dependências, monitoramento sintético e um exercício de failover.
O próximo passo é medir o tempo de recuperação de um repositório crítico sem acesso ao GitHub. Se a resposta for "não sabemos", esse é o trabalho mais importante antes do próximo incidente.
Comentários
Deixar um comentárioVocê precisa ter uma conta no Cafe com Dev Pai para comentar.