pku-app / pku-backend

0 stars 1 forks source link

Investigação para definir melhor abordagem de arquitetura backend #7

Open guigorski opened 2 years ago

guigorski commented 2 years ago

Analisar ferramentas disponíveis ou ferramentas previamente utilizadas como nest, express etc... para identificar melhor abordagem de arquitetura e desenvolvimento do sistema backend

O Backend irá precisar dos seguintes atributos:

No momento, iremos priorizar essas frentes antes de elaborar quais funcionalidades ficarão de responsabilidade do backend.

A ultima ferramenta utilizada foi Nest.js

Utzig26 commented 2 years ago

Levando em consideração os seguintes pontos:

Foram analizados os seguintes frameworks: Utilização ideal Facilidade Documentação banco de dados NodeJS Observações
Express Muito utilizado para criar APIs RESTfull. É indicada para projetos de grande porte. O foco do Express é performance, portanto o desenvolvimento é um pouco mais lento. É o mais utilizado da lista* Portanto tem muitos exemplos e QA disponível. Não possui ORM/ODM originalmente, mas funciona muito bem com o prisma.io. ✔️ Já era utilizado no projeto. Com ele o MVC demoraria mais, no entanto teríamos um produto mais robusto.
Nest É um Framework progressivo, ou seja, tem uma alta escalabilidade. O foco do Nest é a produtividade, isso não significa necessariamente uma facilidade maior no desenvolvimento. Tem uma grande comunidade, muitos exemplos, e uma documentação muito bem feita. Utiliza o TypeORM e possui uma documentação bem completa para integração de bancos NoSQL e SQL ✔️ É um framework bem moderno que objetiva a manutibilidade e produtividade.
Sails Utiliza o padrão MVC. É usado em projetos de médio Porte. Foca em agilidade de desenvolvimento. O sails Utiliza Blueprints de métodos REST oque facilita bastante o desenvolvimento e diminui a quantidade de código. Possui uma documentação aceitável e uma comunidade dedicada, mesmo que não tão grande como os demais dessa lista. Utiliza um ORM/ODM chamado Waterline, pode ser utilizado SQL & NoSQL sem problemas. ✔️ Da lista, é o que possui um desenvolvimento mais rápido e fácil, mas deixa a desejar na escalabilidade (oquê talvez não seja um problema para este projeto.)
Rails É padrão MVC, é utilizada para backends robustos de médio e grande porte. É muito fácil de importar código de terceiros com ele. Documentação completa, comunidade grande e diversificada (diferentes tipos de projetos). Lançou recentemente uma versão nova. Possui um ORM completo e muito fácil de usar. Bem documentado, por sinal.** ❌ (Ruby) Facilitaria o Desenvolvimento em aplicações de DB Relacional.

* É geralmente utilizado para projetos de inciantes para aprender Nodejs. ** No entanto, não pode ser usado com NoSQL (Ainda que existam opções ODM.)

Menção honrosa para o Flask que também pode ser uma opção. Só não consigo dizer o por quê 🤔. Foram considerados também: Fastify, Koa, Meteor, LoopBack, Django REST e Spring.