- O texto discute a experiência do autor ao gerenciar o desempenho do Postgres em uma aplicação SaaS, na qual o banco de dados estava tendo dificuldade para suportar a carga.
- A equipe do autor fazia escalonamento vertical, trocando o banco por uma instância maior sempre que ele ficava ocupado demais. Porém, eles já estavam usando a maior instância disponível e se aproximavam de um estado de sobrecarga.
- Foram propostas duas soluções possíveis: fazer sharding de escritas em clusters de banco de dados independentes e dividir o monólito em vários serviços conectados (microsserviços).
- Ambas as soluções aumentariam a capacidade e ofereceriam opções interessantes de tolerância a falhas e resiliência operacional, mas também elevariam bastante a complexidade.
- O autor argumenta que o custo real do aumento de complexidade é a atenção, o que torna mais complicada toda decisão técnica posterior.
- O autor sugere que, antes de aumentar muito a complexidade, geralmente há espaço para “espremer” um pouco mais de desempenho do sistema existente, seja ajustando a carga de trabalho, otimizando a performance ou complementando o sistema de alguma forma.
- No caso deles, ao otimizar consultas pesadas, ajustar as configurações do Postgres e descarregar algumas consultas caras somente de leitura para um banco de réplicas, eles reduziram o pico semanal de uso de CPU do banco de dados de 90% para 30%.
- O autor conclui que a complexidade é necessária e inevitável, mas que o ideal é adiar esse aumento pelo maior tempo possível e primeiro extrair o máximo de desempenho do sistema existente.
1 comentários
Comentários do Hacker News