Este projeto é um sistema de gerenciamento de eventos e ingressos baseado em microsserviços, composto pelos serviços ms-event-manager e ms-ticket-manager, que se comunicam via RabbitMQ e utilizam MongoDB para persistência dos dados. Além disso, consome a API ViaCEP para obter endereços a partir do CEP informado. O sistema está hospedado na AWS EC2 com deploy automatizado via GitHub Actions.
- RabbitMQ: É um broker de mensageria que permite a comunicação entre microsserviços de forma assíncrona, garantindo a escalabilidade e a confiabilidade da aplicação.
- MongoDB Atlas: Banco de dados NoSQL em cloud que armazena os dados dos microsserviços, garantindo a persistência e a recuperação dos dados.
- ViaCEP API: API que fornece informações de endereço com base no CEP fornecido, facilitando o preenchimento de formulários.
- GitHub Actions: Ferramenta de CI/CD que automatiza o processo de build, testes e deploy da aplicação.
- Insomnia: Ferramenta de testes de API que permite testar os endpoints dos microsserviços.
- Swagger: Ferramenta de documentação de API que permite visualizar e testar os endpoints dos microsserviços.
- Docker Hub: Repositório de imagens Docker que armazena as imagens dos microsserviços, facilitando a distribuição e execução da aplicação.
- AWS EC2: Serviço de computação em nuvem que hospeda os microsserviços, garantindo a disponibilidade e a escalabilidade da aplicação.
- Docker: Contêineriza toda a aplicação, permitindo que ela seja escalável, possa ser baixada e executada em qualquer dispositivo com acesso ao Docker, além de facilitar sua distribuição e execução.
Responsável pelo gerenciamento de eventos, incluindo criação, consulta, atualização e exclusão de eventos.
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /create-event |
Cria um novo evento |
| GET | /get-event/{id} |
Retorna detalhes de um evento pelo ID |
| GET | /get-all-events |
Lista todos os eventos |
| GET | /get-all-events/sorted |
Lista eventos em ordem alfabética |
| PUT | /update-event/{id} |
Atualiza um evento pelo ID |
| DELETE | /delete-event/{id} |
Exclui um evento pelo ID (verifica ingressos) |
Dados de Entrada:
{
"eventName": "Show da Xuxa",
"dateTime": "2024-12-30T21:00:00",
"cep": "01020-000"
} Dados de Saída:
{
"id": "string",
"eventName": "Show da Xuxa",
"dateTime": "2024-12-30T21:00:00",
"cep": "01020-000",
"logradouro": "string",
"bairro": "string",
"cidade": "string",
"uf": "string"
}
Responsável pelo gerenciamento de ingressos, incluindo criação, consulta, atualização e cancelamento de ingressos.
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /create-ticket |
Cria um novo ingresso após validar o evento |
| GET | /get-ticket/{id} |
Retorna detalhes de um ingresso pelo ID |
| PUT | /update-ticket/{id} |
Atualiza um ingresso pelo ID |
| DELETE | /cancel-ticket/{id} |
Cancela um ingresso pelo ID (soft-delete) |
| GET | /check-tickets-by-event/{eventId} |
Verifica ingressos vinculados a um evento |
Dados de Entrada:
{
"ticketId": "string",
"customerName": "string",
"cpf": "string",
"customerMail": "string",
"eventId": "string",
"eventName": "string",
"BRLamount": "R$ 50,00",
"USDamount": "$ 10,00",
}Dados de Saída:
{
"ticketId": "string", (auto generate - sequencial)
"cpf": "string",
"customerName": "string",
"customerMail": "string",
"event": {
"eventId": "string",
"eventName": "string",
"eventDateTime": "2024-12-30T21:00:00",
"logradouro": "string",
"bairro": "string",
"cidade": "string",
"uf": "string"
},
"BRLtotalAmount": "R$ 50,00",
"USDtotalAmount": "$ 10,00",
"status": "concluído"
} - Java 17
- MongoDB Atlas
- RabbitMQ Cloud
- Docker
- AWS EC2
O deploy da aplicação foi automatizado com GitHub Actions, que realiza o build e deploy da aplicação na AWS EC2. Para isso, foi criado um arquivo de configuração .yml na pasta .github/workflows que define o pipeline de CI/CD da aplicação. A ideia é que a cada push na branch main, o GitHub Actions realize o build da aplicação gere as imagens Docker, faça o push das imagens no Docker Hub e realize o deploy da aplicação na AWS EC2. futuramente, será implementado uma etapa de testes automatizados para garantir a qualidade do código antes do deploy.
Para buscar um ticket utilizando o CPF, utilize a seguinte rota da instância EC2:
Método: GET
URL:
(Descontinuado)
http://18.216.75.28:8081/api/tickets/get-ticket-by-cpf/08080808git clone https://github.com/LiedsonLB/PbDes03_FranciscoBarros.gitNa pasta raiz do repositório clonado, execute o seguinte script no terminal:
docker compose up --buildPara acessar a documentação dos endpoint utilizados podemos acessar o swagger de cada microserviço, com o container rodando, execute:
ms-event-manager:
http://localhost:8080/swagger-ui/index.htmlms-ticket-manager:
http://localhost:8081/swagger-ui/index.htmlPara gerar o relatório de cobertura de testes, execute:
mvn clean verify jacoco:reportO relatório de cobertura estará disponível em:
target/site/jacoco/index.html
tb_event- armazena os eventos cadastrados no sistema em produção.tb_ticket- armazena os ingressos cadastrados no sistema em produção.tb_event_dev- armazena os eventos cadastrados no sistema em desenvolvimento.tb_ticket_dev- armazena os ingressos cadastrados no sistema em desenvolvimento.
ms-event-manager:
ms-ticket-manager:

- Release v1.0 ✅








