- 📄 Descrição
- 🏛️ Arquitetura
- 🛠️ Tecnologias Utilizadas
- ⚙️ Configuração do Ambiente
- 🚀 Execução
- 🐳 Ambiente de Desenvolvimento com Docker
- 🌐 Ambiente de Produção com Docker
- 🧪 Testes
- 🤝 Contribuições
- 📏 Padrões de Código
- 📚 Documentação
- 📜 Licença
- 📞 Contato
Este repositório contém 1 dos microserviços da nova software que e de autenticação e autorização, uma plataforma inovadora para Nova software, teve seu início em 2023 com intuito de ser um sistema onde fornece serviços personalizados atendendo as demandas de micro empresas que estão iniciando no mercado de ecommerce ou seja vendas online. O sistemas está na sua faze de desenvolvimento é previsto que seu término ocorrerá em 2025, entretanto até o desenvolvimento ser totalmente concluído alguns serviços seriam disponibilizados afim de teste feitos pelos próprios usuário compreendendo as reais necessidades do mesmo.. O sistema é construído para ser escalável, modular e de fácil manutenção, utilizando uma arquitetura baseada em microserviços.
A arquitetura do sistema é baseada em microserviços, cada um responsável por uma função específica e comunicando-se entre si através de APIs REST e mensageria. A seguir, uma visão geral dos principais componentes:
- Gateway de API: Centraliza e gerencia todas as requisições dos clientes, distribuindo-as para os microserviços apropriados.
- Serviço de Autenticação: Gerencia a autenticação e autorização dos usuários, utilizando OAuth 2.0.
- Serviço de Usuários: Controla o cadastro, atualização e gerenciamento de perfis de usuários.
- Serviço de Pagamentos: Processa pagamentos e transações financeiras de maneira segura e eficiente.
- Serviço de Relatórios: Gera relatórios detalhados com base nos dados do sistema, utilizando Python.
- Serviço de Notificações: Envia notificações por e-mail e SMS aos usuários, utilizando AWS SNS e SES.
- Linguagens de Programação:
- Java (Spring Boot para construção de microserviços robustos e escaláveis)
- Python (para geração de relatórios e processamento de dados)
- Banco de Dados:
- MySQL (para dados relacionais)
- Mensageria:
- RabbitMQ (mensageria e filas de tarefas)
- AWS SNS (serviço de notificação)
- Infraestrutura:
- Docker (contenedorização de aplicações)
- Kubernetes (orquestração de contêineres)
- Cache e Armazenamento:
- Redis (cache de alto desempenho)
- Monitoramento e Observabilidade:
- Prometheus (coleta e monitoramento de métricas)
- Grafana (visualização de métricas e dashboards)
- Docker
- Docker Compose
- Git
- JDK 11+ (para serviços Spring Boot)
- Python 3.8+ (para serviços Python)
-
Clone o repositório:
git@github.com:Nova-Software-Organization/Nova-core.git
-
Configure as variáveis de ambiente criando um arquivo
application-dev.properties
na raiz do projeto e defina as variáveis necessárias:DATABASE_URL=mysql://usuario:senha@localhost:5432/meubanco REDIS_URL=redis://localhost:6379/0 RABBITMQ_URL=amqp://guest:guest@localhost:5672/ AWS_ACCESS_KEY_ID=sua_chave_de_acesso AWS_SECRET_ACCESS_KEY=sua_chave_secreta AWS_REGION=sua_regiao JWT_SECRET=seu_segredo_jwt
-
Instale as dependências:
-
Para serviços Java com Spring Boot:
./mvnw install
-
Para serviços Python:
pip install -r requirements.txt
-
-
Inicie os contêineres Docker:
docker-compose up -d
Para iniciar um microserviço específico, siga o exemplo abaixo:
-
Navegue até o diretório do serviço desejado:
-
Para o serviço de autenticação (Spring Boot):
cd services/auth_service
-
Para o serviço de relatórios (Python):
cd services/report_service
-
-
Inicie o serviço:
-
Para serviços Java com Spring Boot:
./mvnw spring-boot:run
-
Para serviços Python:
uvicorn main:app --host 0.0.0.0 --port 8000
-
-
Acesse o serviço através da URL:
http://localhost:8000
-
Certifique-se de que o Docker e o Docker Compose estão instalados em seu sistema.
-
Clone o repositório e navegue até a pasta do projeto, matendo o projeto docker-dev junto com os microserviços:
git clone git@github.com:Nova-Software-Organization/docker-dev.git cd docker-dev
-
Crie e configure o arquivo
.env
com as variáveis de ambiente necessárias (veja a seção Configuração do Ambiente). -
Suba os contêineres Docker para o ambiente de desenvolvimento:
docker-compose -f docker-compose.dev.yml up -d
-
Para visualizar os logs dos contêineres em tempo real:
docker-compose logs -f
Durante o desenvolvimento, você pode acessar os serviços individuais através dos contêineres Docker. Utilize volumes do Docker para sincronizar o código local com os contêineres para um desenvolvimento mais rápido.
Para acessar um contêiner específico e realizar comandos diretamente nele:
docker-compose exec <nome_do_servico> /bin/sh
-
Certifique-se de que o Docker e o Docker Compose estão instalados no servidor de produção.
-
Clone o repositório no servidor de produção:
git clone git@github.com:Nova-Software-Organization/docker-dev.git cd repositorio
-
Configure as variáveis de ambiente necessárias em um arquivo
.env.prod
:DATABASE_URL=postgresql://usuario:senha@db_producao:5432/meubanco REDIS_URL=redis://redis_producao:6379/0 RABBITMQ_URL=amqp://guest:guest@rabbitmq_producao:5672/ AWS_ACCESS_KEY_ID=sua_chave_de_acesso_producao AWS_SECRET_ACCESS_KEY=sua_chave_secreta_producao AWS_REGION=sua_regiao_producao JWT_SECRET=seu_segredo_jwt_producao
-
Suba os contêineres Docker para o ambiente de produção:
docker-compose -f docker-compose.prod.yml up -d
Para monitorar os serviços e visualizar logs:
docker-compose -f docker-compose.prod.yml logs -f
Para aplicar atualizações e realizar deploy contínuo:
-
Puxe as últimas mudanças do repositório:
git pull origin main
-
Recrie os contêineres com as novas mudanças:
docker-compose -f docker-compose.prod.yml up -d --build
Execute os testes automatizados utilizando os seguintes comandos:
-
Para serviços Java com Spring Boot:
./mvnw test
-
Para serviços Python:
pytest
Contribuições são bem-vindas! Por favor, siga os passos abaixo para contribuir:
- Faça um fork do projeto.
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature
). - Commit suas mudanças (
git commit -m 'Adiciona nova feature'
). - Push para a branch (
git push origin feature/nova-feature
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Para dúvidas e suporte, entre em contato com novasoftwareorganization@gmail.com