Sistemas na pratica / APIs e servicos

APIs e servicos

APIs e Servicos Sem Fronteira Confusa

Como desenhar limites entre rotas, servicos e responsabilidades sem transformar o sistema numa pilha de acoplamento escondido.

O problema

Muita API nasce simples e vira confusa porque as fronteiras nunca foram decididas de verdade.

Daqui a pouco controller valida, service formata resposta, repositorio aplica regra de negocio e tudo parece funcionar ate a primeira mudanca maior.

O problema nao e so organizacao de pasta. O problema e responsabilidade misturada.

Modelo mental

Fronteira boa e fronteira que reduz duvida.

Quando alguem olha para uma parte do sistema, deveria ficar claro:

  • quem recebe a entrada
  • quem aplica regra
  • quem fala com infraestrutura
  • quem devolve a resposta

Se essas camadas se misturam demais, o sistema perde previsibilidade.

Quebrando o problema

Uma forma simples de pensar em API e servico e esta:

  1. a rota recebe e valida o pedido
  2. o servico coordena a regra de negocio
  3. a camada de acesso fala com banco ou dependencia externa
  4. a resposta volta com um formato coerente para quem consome

Nao precisa virar arquitetura de livro.

Precisa so impedir que qualquer lugar faça qualquer coisa.

Exemplo simples

Imagine um endpoint para criar pedido.

Uma versao baguncada pode:

  • validar entrada no controller
  • consultar estoque direto no controller
  • calcular total em helper solto
  • salvar no banco em varios pontos diferentes

Uma versao melhor concentra a regra em um servico:

  • a rota valida entrada e chama createOrder
  • o servico verifica estoque, calcula total e decide o fluxo
  • o repositorio so persiste

Agora fica mais claro onde mexer quando a regra muda.

Erros comuns

  • deixar regra de negocio espalhada entre controller, service e repository
  • criar camada demais sem responsabilidade real
  • desenhar servico pelo nome da entidade e nao pelo fluxo do negocio
  • acoplar resposta de API com detalhe interno de implementacao

Como um senior pensa

Um senior forte nao pensa em camada so como padrao.

Ele pensa em atrito de manutencao.

Normalmente isso soa assim:

Eu quero que a regra principal more num lugar previsivel e que a infraestrutura possa mudar sem espalhar impacto pela aplicacao inteira.

Essa frase costuma levar a uma arquitetura muito melhor do que “vamos fazer clean architecture porque sim”.

O que o entrevistador quer ver

Em entrevista, isso costuma mostrar maturidade rapido:

  • voce entende responsabilidade e fronteira
  • voce sabe separar regra de negocio de detalhe de transporte e persistencia
  • voce pensa em mudanca futura sem overengineering

Quem faz isso bem passa a imagem de alguem que consegue manter o sistema legivel conforme ele cresce.

API boa nao e a que tem mais camada. E a que deixa claro onde cada decisao mora.

Se toda mudanca atravessa o sistema inteiro, a fronteira ainda nao esta fazendo o trabalho dela.

Proximas leituras