Ir para conteúdo principal

Sistemas sob demanda

O que é um sistema escalável e como saber se o seu vai aguentar crescer

Um sistema escalável cresce em usuários, dados e regras de negócio. Veja os sinais de limite e as decisões que evitam reescrever.

O que é um sistema escalável

Sistema escalável é aquele que continua funcionando bem quando a organização cresce, sem precisar ser refeito. Na escalabilidade de software, esse crescimento tem três lados: mais usuários, mais dados e mais regras e áreas de negócio.

É comum olhar só para o primeiro, e isso é um erro: o sistema que aguenta muita gente ao mesmo tempo pode travar com o histórico acumulado, ou quebrar na primeira regra nova que ninguém previu.

Escalar não é só aguentar mais acessos

Pense em escala como três perguntas diferentes. Cada uma vai pressionar uma parte do sistema, e a resposta de uma não vale para as outras.

Usuários: o que cresce quando chega mais gente

É o lado mais conhecido. Mais pessoas usando ao mesmo tempo significa mais pedidos chegando ao servidor, mais sessões abertas e mais concorrência sobre as mesmas informações.

Quando esse lado falha, o sintoma é fácil de notar: sistema lento com mais usuários, telas que demoram nos horários de pico, erros intermitentes e, no pior caso, o sistema fora do ar justamente quando mais gente precisa dele.

A boa notícia é que essa é a dimensão mais conhecida e a que tem mais ferramentas prontas. Os provedores de nuvem oferecem formas de aumentar a capacidade conforme a demanda, desde que o sistema tenha sido escrito para isso.

Há dois caminhos para dar conta da demanda. Na escala vertical, o servidor é trocado por uma máquina maior, o que resolve rápido, mas tem teto. Na horizontal, o trabalho é dividido entre várias instâncias, o que só funciona se o sistema não depender de uma única máquina. Mecanismos como cache, que guarda respostas repetidas, e índices de banco, que aceleram consultas frequentes, aliviam a pressão em qualquer um dos dois.

Dados: o que cresce quando o histórico acumula

Um sistema novo trabalha com tabelas pequenas. Depois de alguns anos de uso, as mesmas tabelas guardam milhões de registros, e consultas que antes eram instantâneas passam a levar minutos.

Esse crescimento é silencioso. Ninguém percebe no dia a dia, porque a lentidão chega aos poucos. Relatórios demoram mais, buscas ficam pesadas, e a cópia de segurança passa a ocupar a janela inteira da madrugada.

O que ajuda é decidir cedo como os dados são organizados, o que fica de fácil acesso, o que pode ir para um arquivo histórico e como as consultas mais usadas são preparadas.

Regras e áreas: o que cresce quando o negócio muda

A organização cria um novo tipo de processo, uma área passa a usar o sistema com um fluxo diferente, uma regra de aprovação muda por decisão da gestão. Nada disso aumenta o número de acessos, mas cada item exige que o sistema aceite algo que não existia.

É a dimensão menos comentada, e é nela que muitas reescritas começam.

Crescer em regras e áreas sem reescrever

Por que a terceira dimensão é a mais esquecida

Usuários e dados se medem. Dá para olhar um gráfico e ver a curva subindo. Regra de negócio não aparece em gráfico: ela só mostra o custo quando alguém pede a primeira mudança difícil.

Há também um motivo de calendário. No começo do projeto, as regras conhecidas são poucas e simples, e o código que as implementa funciona bem. O problema é que, sem cuidado, cada regra entra espalhada pelo sistema: um pouco na tela, um pouco no banco, um pouco numa rotina agendada.

Aí uma mudança que parecia pequena exige mexer em seis lugares, e ninguém tem certeza de que achou todos.

Como é um sistema que absorve regra nova

Um exemplo genérico, só para ilustrar (não é um caso real). Imagine um sistema de solicitações em que toda solicitação passa por uma aprovação de chefia imediata. Dois anos depois, uma área nova precisa de duas aprovações, e uma terceira quer dispensar a aprovação abaixo de certo valor.

Em um sistema que espalhou a regra, cada área vira uma exceção costurada no código existente. Em um sistema que isolou a regra, o fluxo de aprovação é uma peça configurável: a área nova ganha o seu fluxo sem que as outras sejam tocadas.

A diferença não está em usar uma tecnologia mais moderna. Está em separar o que muda com frequência do que é estável, e em dar a cada regra um lugar único para morar.

Isso é parte do que um sistema sob medida bem desenhado resolve: o processo da organização vira estrutura do sistema, em vez de remendo sobre uma ferramenta genérica.

Sinais de que o sistema chegou ao limite

Nem todo sistema lento está no limite, e nem todo sistema rápido está a salvo. Mas alguns sinais costumam aparecer antes de a situação ficar crítica:

  • Toda mudança pequena vira projeto. Um campo novo ou um fluxo ajustado leva semanas, porque ninguém sabe o que pode quebrar.
  • O desempenho piora com o tempo, sem que ninguém tenha mexido. É o sinal típico de dados acumulados.
  • A equipe evita certas partes do código. Quando existe um módulo que todos temem tocar, ele já virou gargalo.
  • A resposta de "dá para fazer?" é sempre "depende". A incerteza sobre o impacto mostra que as regras estão emaranhadas.
  • Cada área nova pede uma cópia do sistema, ou uma planilha paralela. O sistema não absorveu a variação, então ela foi para fora dele.
  • O custo de manter cresce mais rápido que o de evoluir. A maior parte do tempo vai para apagar incêndio, e não para entregar o que a gestão pediu.
  • Só uma ou duas pessoas entendem como tudo funciona. Escala também é poder trocar de gente sem parar.

Um ou dois desses sinais isolados não decidem nada. Vários juntos indicam que vale olhar a estrutura, e não só a infraestrutura.

Decisões de arquitetura que se tomam no início

Uma arquitetura escalável começa em escolhas feitas cedo. Arquitetura, aqui, quer dizer a forma como o sistema é dividido em partes e como essas partes conversam. As escolhas abaixo são baratas no começo e caras de refazer depois:

  1. Separar a regra de negócio da interface e do banco. A regra fica num lugar só, e a tela e o armazenamento podem mudar sem arrastá-la.
  2. Modelar os dados pensando no histórico. Defina cedo o que precisa ser consultado com frequência e o que pode ser arquivado.
  3. Isolar o que tende a mudar. Fluxos de aprovação, perfis de acesso e cálculos que dependem de decisão da gestão devem ser configuráveis, não fixos no código.
  4. Expor integrações por API. Quando outro sistema precisa dos dados, a conexão passa por uma interface definida, e não por acesso direto ao banco.
  5. Construir a interface em partes reutilizáveis. Um código de tela organizado em blocos é mais fácil de ampliar do que uma coleção de telas copiadas. Quando esse código já está difícil de mudar, uma revisão da arquitetura frontend costuma ser o primeiro passo, antes de pensar em reescrita.
  6. Medir desde o primeiro dia. Sem medição de tempo de resposta e de volume de dados, a lentidão só aparece quando o usuário reclama.
  7. Documentar as decisões. Saber por que algo foi feito daquele jeito evita que a próxima equipe refaça o que já foi descartado.

Nada disso elimina a necessidade de ajustes ao longo do tempo. O que essas decisões fazem é reduzir a chance de que o crescimento exija uma reescrita completa.

Para aprofundar o planejamento de crescimento dentro de um projeto, o texto sobre o que é um sistema sob demanda mostra onde esse cuidado entra no ciclo do projeto.

Antes de decidir entre ajustar ou refazer, descubra em qual das três dimensões está a pressão: usuários, dados ou regras e áreas. A solução para cada uma é diferente, e a conversa fica mais objetiva quando esse diagnóstico vem primeiro. Veja como a Evo Tech trabalha com criação de sistemas sob demanda.

Seu sistema ficou lento com o crescimento?

Conte o que você precisa e receba uma proposta com o escopo detalhado. Atendemos Brasília e todo o Distrito Federal, e órgãos e empresas de outros estados de forma remota.

oi@evotech.digital