0

Entendo minha favorita arquitetura de APIs em node.js (FDA vs DDD vs VSA)

Contexto

  • Sou dev web há 11 anos
  • Nos últimos 6 especialista em frontend
  • Venho utilizando o node.js para APIs nos últimos 4 anos

Isso quer dizer que não sou expert em construção de APIs

Introdução

Meu aprendizado com o node.js foi majoritariamente prático.

Fiz um curso na Udemy e depois disso sai fazendo API.

Neste ano eu comecei a me perguntar um pouco mais sobre a base teorica da arquitetura que aprendi a criar minhas APIs. O curso que fiz era bem voltado para a parte prática mesmo, fazer o negócio funcionar, e pronto. Isso foi ótimo na época.

Objetivo

Resolvi então entender qual base teorica de arquitetura eu vinha usando. Já criei ao menos umas 10 APIs utilizando:

Node.js + Express + MongoDB (e nas mais recentes o TypeScript)

Método

Basicamente perguntei ao co-pilot para ler minha API mais robusta até então e me dizer qual arquitetura eu vinha utilizando por todos esses anos

Resultado

Recebi três termos primários para definir a arquitetura do meu projeto:

1. Feature-Driven Architecture (FDA)

Eu tenho uma pasta modules com subpastas. Cada subpasta represente a totalidade de uma funcionalidade, contendo controller.ts, model.ts, routes.ts, types.ts, e etc.

E ai utilizo algumas pastas no mesmo nível de modules contendo código compartilhado entre esses módulos, como middlewares, config, langs ...

2. Domain-Driven Design (DDD) - Simplificado

A IA identificou fortes traços do DDD na minha arquitetura, pois cada módulo se relaciona ao um contexto de negócio.

Para realmente classificar como DDD, eu precisaria aplicar alguns padrões de orientação a objetos, como agregados e value object, e também uma camada de abstração repositório

Daqui eu tirei alguns pontos interessantes de estudo :)

3. Vertical Slice Architecture (VSA)

Pelo o que eu entendi, esse padrão seria essa divisão modular ainda mais estrtita e apropriada para aplicação de microserviços. Não se aplica ao meu caso.

Conclusão

FDA para mim é ótimo por sua simplicidade e facilidade em relacionar o código com o mundo real. Fácil de entender e organizar as coisas.

DDD seria a progressão natural para ampliar o potencial de escalar a API de uma maneira mais sólida. Eu já ouvi falar sobre o NestJS, que utilizaria uma abordagem mais baseada em classes, o que acredito que pode me ajudar. Um possível próximo de tópcio de estudos para mim.

VSA é uso de caso específico, para quando a API já estiver grande e com necessidade de crescer mais...ainda vou chegar lá

Me conta ai

Me fala sua experiência com alguma dessas arquiteturas e o que vale a pena aprender

Carregando publicação patrocinada...
2

O problema do NestJS é que ele é do tipo de framework que sequestra sua aplicação, tudo o que você faz tem que girar em torno dos módulos e services do NestJS chegando num ponto que você não sabe onde termina o NestJS e começa sua aplicação. É um acoplamento muito forçado, da mesma forma que outros do tipo como Rails, Django, Laravel....

1

Entendi, agradeço sua perspectiva :)

Creio que consigo aplicar os padrões do DDD com Node.js e express também né, em geral não gosto tanto desses super acoplamentos com os frameworks também, acaba gerando outros problemas