Este projeto é uma aplicação que tem como o objetivo de demonstrar como configurar e utilizar tecnologias modernas para criar um sistema escalável e distribuído.
O projeto é dividido em dois microserviços principais:
- Worker: Responsável por fornecer informações sobre trabalhadores, como nome e renda diária.
- Payroll: Responsável por calcular pagamentos com base nos dados fornecidos pelo serviço Worker.
- Spring Boot: Framework para criação de aplicações Java.
- Eureka: Serviço de descoberta que permite que os microserviços se encontrem e se comuniquem.
- OpenFeign: Biblioteca para simplificar a comunicação entre microserviços através de chamadas REST.
- H2 Database: Banco de dados em memória para testes. help
- Spring Cloud Gateway: Para gerenciar e rotear requisições entre os microserviços, proporcionando uma única entrada para o sistema. help
- Resilience4j: Para implementar padrões de tolerância a falhas e melhorar a resiliência do sistema. help help²
- Spring Cloud Config: Para gerenciar a configuração dos microserviços de forma centralizada, permitindo alterações dinâmicas sem necessidade de reinício. (Manutenção)
- OAuth 2: Para implementar autenticação, garantindo que os serviços estejam protegidos e apenas acessíveis a usuários autorizados. Thiago Marquet
- Docker: Para implementar facilidades no deploy no serviço de keycloak. help
O projeto será expandido com a adição das seguintes tecnologias e funcionalidades:
- OAuth 2: Para implementar autorização por Role do usuário.
- Docker: Para implementar facilidades no deploy e uso de contêineres.
- Kafka: Para implementar mensageria e programação orientada a eventos entre os serviços.
- Java 17 ou superior
- Maven
- Docker (opcional)
Este projeto serve como guia tanto para estudantes de Back End que desejam conhecer o conceito de arquitetura de microsserviços, e para desenvolvedores já alocados no mercado de trabalho, com desejo de replicar os conceitos aqui aplicados ou como forma de referência para a modelagem de um sistema próprio. Sinta-se livre para entrar em contato comigo via Email, Issues ou forks para a atualização, esclarecimentos de dúvidas ou sobre melhorias do projeto.
Foi utilizado como base o curso do Nelio Alves, link, e toneladas de materiais oficiais das tecnologias. E para finalizar, acredito que esse codebase sejá uma boa atualização do curso mencionado, visto as atualizações das tecnologias e liguagem usada. Vem me dando um bom trabalho manter esse código atualizado e em boa legibilidade e documentado, dito isso, toda ajuda é bem vinda.
Meus agradecimentos, atenciosamente, Lucas Dias Jorge :)