Receba Enteligensia

Início / Tecnologia / Uma arquitetura simples, em três peças

Tecnologia · 3 min de leitura

Uma arquitetura simples, em três peças

Lógica, banco de dados e CDN: como separar quem decide, onde os dados vivem e como os arquivos grandes chegam ao usuário.

Quase todo site ou aplicativo pode ser descrito com três peças, cada uma com um trabalho diferente. Separar essas responsabilidades facilita entender onde está cada problema, crescer quando o tráfego aumenta e trocar uma tecnologia sem refazer o resto.

EXEC: onde a lógica vive

O EXEC pode ser escrito em qualquer linguagem: Python, Go, JavaScript, Java, C# ou outra. A escolha depende do time e do problema, mas o papel é sempre o mesmo. Ele recebe uma requisição, decide o que fazer, lê ou grava no banco e devolve uma resposta.

Uma boa prática é não guardar estado na memória do EXEC entre uma requisição e outra. Assim, dá para rodar várias cópias atrás de um balanceador, e qualquer uma delas atende qualquer pedido. Sessões e caches ficam fora, no banco ou em outro serviço.

Database: dados que mudam o tempo todo

Saldos, pedidos, carrinhos e sessões precisam estar sempre atualizados e corretos. Por isso o banco é a fonte da verdade do sistema. Quando algo precisa acontecer por inteiro ou não acontecer, o banco oferece transações: uma transferência debita uma conta e credita outra, ou as duas operações acontecem, ou nenhuma delas.

CDN: dados grandes que quase nunca mudam

Imagens, vídeos, bibliotecas de JavaScript e CSS, fontes e downloads são grandes e não mudam com frequência. Uma CDN, ou rede de entrega de conteúdo, copia esses arquivos para servidores espalhados pelo mundo e entrega cada um do ponto mais próximo de quem pede. Assim, o EXEC e o banco não gastam tempo nem banda com arquivos que poderiam estar em outro lugar.

Uma técnica útil é colocar um hash do conteúdo no nome do arquivo, como app.3f9a1c.js. Se o conteúdo muda, o nome muda, e a CDN e o navegador podem guardar a versão antiga para sempre sem risco de servir algo errado.

O caminho de cada pedido

Escolha um tipo de pedido abaixo e veja, passo a passo, quais peças participam.

Cliente navegador ou app EXEC lógica Database dados dinâmicos CDN arquivos grandes
  1. Escolha um tipo de pedido para ver o caminho que ele percorre.

Regras práticas

Um exemplo em pseudocódigo

GET /saldo              (EXEC)
  usuario = autenticar(requisicao)
  saldo   = banco.consultar("SELECT valor FROM contas WHERE id = ?", usuario.id)
  responder(saldo)

GET /videos/aula-03.mp4 (CDN, o EXEC não participa)

Quando isso não basta

Com muito tráfego, entram réplicas de banco, filas para tarefas demoradas e caches de leitura. Mesmo assim, o desenho continua o mesmo: a lógica responde aos pedidos, o banco guarda o que muda e a CDN entrega o que é grande e estável.

Teste rápido

1. Onde deve ficar um vídeo de 2 GB que quase nunca muda?
2. Por que o EXEC deve evitar guardar estado na memória entre requisições?