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:
- a rota recebe e valida o pedido
- o servico coordena a regra de negocio
- a camada de acesso fala com banco ou dependencia externa
- 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.