Crie um microsserviço em apenas 5 passos com HerbsJS

Neste artigo, queremos que você aprenda a construir um projeto backend completo em Node.js em menos de 5 minutos e, com apenas 5 passos, ele estará rodando! Parece mentira, né?

O HerbsJS é um grupo de bibliotecas Javascript focadas na camada de negócio (Domain Layer), com “colas” para as camadas de infraestrutura (você pode aprender mais sobre o HerbsJS e suas inspirações aqui) e, consequentemente, gera entregas mais rápidas e softwares mais robustos com baixo custo de manutenção. Te ajudando a desenvolver aplicações backend de maneira prática e ágil, adicionando mais valor ao seu domínio e lógica de negócio.

Para realizarmos o processo de configuração e criação deste projeto, vamos utilizar a herbs-cli. A CLI te ajuda a estruturar todo o ecossistema do HerbsJS criando todos os arquivos necessários dentro do diretório, como os repositórios, casos de uso, entidades, migrações e, inclusive, documentação!! Isso mesmo, até documentação será gerada de forma automática! Está preparado(a)? Vamos lá!

Passo a passo

1. Começamos instalando o  herbs-cli de maneira global:

npm i -g @herbsjs/herbs-cli

2. Iniciamos a criação de um novo projeto utilizando apenas o  comando:

herbs new

3. Assim, será apresentado uma série de questões rápidas para customizar a configuração básica do projeto:

  • Nome do projeto
  • Descrição do projeto
  • Nome do autor do projeto
  • Qual licenças você quer utilizar? Com as opções: MIT, BSD, GNU
  • Quer criar uma camada GraphQL?
  • Quer criar uma camada REST?
  • Qual banco de dados você quer utilizar? Tendo como opções: Postgres, Mongo, SQL Server e MySQL.

    Você pode optar por ter uma camada GraphQL e REST ao mesmo tempo ou ainda escolher qualquer banco de dados da lista, sem gerar impacto algum para o projeto, uma vez que o HerbsJS foca na camada de domínio e a infraestrutura é gerada automaticamente entendendo o negócio.

Rodou o comando? Pronto! A base do seu projeto está pronta!
Foi criada toda a estrutura e arquivos necessários para o seu projeto estar funcionando! Dá só uma olhada no que já foi criado para você!

Agora, o seu projeto está estruturado em 2 pastas principais, a Domain e a Infra.

Na domain, você encontrará tudo relacionado às regras de negócio, à identidade e ao propósito do projeto. Dentro dela,  estão as entidades, que são as definições dos objetos de negócio que a aplicação gerenciará e os casos de uso, que são as regras de negócio das entidades com suas particularidades e especificações para validar as regras de acordo com os cenários propostos (saiba mais sobre Entidades e Casos de uso).

Na infra, temos temos todas as definições da camada de infraestrutura do microsserviço, acesso ao banco e objetos de configuração. Sendo esta a camada de suporte para o negócio. Nela, há a pasta de API (com as camadas REST e/ou GraphQL, conforme você escolheu) a pasta config (variáveis de ambiente e conexões ao banco de dados) e a pasta data (repositórios com abstrações do banco de dados através de ORM e arquivos de migração para especificar a estrutura de tabelas do banco de dados).


4. Então é feita uma última pergunta:

  • Quer rodar agora? Ao responder que sim, irá rodar o  npm install, fazendo o download e instalando todas as dependências configuradas no package.json. Logo em seguida, rodará o herbs update, gerando os arquivos de caso de uso, repositórios e migrations.

5. Após a instalação das dependências, basta rodar npm start e ver o seu projeto funcionando na rota http://localhost:3000/

Simples assim! Uma maravilha, né?

E olha só a documentação que é autogerada durante o processo, apresentando o README, as entidades e casos de uso, automaticamente na rota http://localhost:3000/herbsshelf. Esta documentação tem o foco no domínio e sendo de fácil entendimento para os PMs e stakeholders. Quer saber mais? Saiba mais sobre o Herbs Shelf.

Projeto pronto! E agora?

Você agora tem um projeto inicial para o seu microsserviço, mas precisa continuar dando manutenção e criar novas funcionalidades. O HerbsJS continuará te ajudando a manter a agilidade e focar em entregar valor ao seu negócio, desta forma, você pode utilizar o seu tempo onde importa. Desta maneira, ao criar uma nova entidade e ao rodar o  herbs update, todo o seu projeto será atualizado com os arquivos necessários baseados nessa entidade, sendo criados os repositórios, rotas, casos de uso…

Assim, o seu projeto fica em constante evolução com as demandas de novos negócios, sem a dor de cabeça que o seu microsserviço está virando uma grande bagunça e focando no que realmente importa, o seu domínio!

Bônus

Além da criação do projeto com herbs-cli, o HerbsJS possui o Code Snippets para o Visual Studio Code, para te ajudar na manutenção e desenvolvimento de novos casos de uso e entidades dentro do projeto. Confere lá!