This project is a simulated digital bank, developed as part of a portfolio to test technologies like Ocelot, RabbitMQ, Redis, Entity Framework Core, and Docker. The system consists of an API Gateway (Ocelot) and two main APIs: Client and Manager. The project uses Docker to orchestrate the containers and ensure consistent service execution across different environments.
- Ocelot: API Gateway used for routing and load balancing between the Client and Manager APIs.
- Docker and Docker Compose: Tools used to containerize the services, ensuring portability and consistency across different environments.
- Entity Framework Core: ORM (Object-Relational Mapping) for interacting with the SQL database, applying migrations to manage the schema.
- RabbitMQ: Messaging system for asynchronous communication between services.
- Redis: Used for caching, improving performance by storing frequently accessed data in memory.
- Swagger: Interactive documentation interface for easily testing and exploring the APIs.
- Unit Tests: Written to validate code behavior and ensure quality.
This project uses .NET 8, and all major dependencies are encapsulated in Docker containers, simplifying the setup. However, if you wish to run unit tests, you may need to have the .NET SDK installed locally.
- Docker: Install Docker
- Docker Compose: Install Docker Compose
- .NET SDK 8 (only if you want to run tests locally outside of Docker): Install .NET SDK
To run the project locally, follow the steps below:
- Clone the repository:
git clone https://github.com/RochaRaphael/RRBank
docker-compose up --build
Gateway (Ocelot): http://localhost:8084/swagger
dotnet ef migrations add InitialCreate --project ../RRBank.Infra dotnet ef database update
After these steps, the project will be ready for use, and the APIs will be accessible via the API Gateway.
The project has two additional services that are used in certain operations:
RabbitMQ: Used for asynchronous communication between services, especially for tasks involving message queues.
Both services are configured in Docker Compose and will be automatically provisioned when running the docker-compose up command.
Português[PT/BR]
Este projeto é um banco digital simulado, desenvolvido como parte de um portfólio para testar tecnologias como Ocelot, RabbitMQ, Redis, Entity Framework Core e Docker. O sistema é composto por um API Gateway (Ocelot) e duas APIs principais: Client e Manager. O projeto utiliza Docker para orquestrar os contêineres e garantir a execução padronizada dos serviços.
- Ocelot: Gateway de API usado para roteamento e balanceamento de carga entre as APIs Client e Manager.
- Docker e Docker Compose: Ferramentas utilizadas para containerizar os serviços, garantindo portabilidade e consistência em diferentes ambientes.
- Entity Framework Core: ORM (Object-Relational Mapping) para trabalhar com o banco de dados SQL, aplicando migrations para gerenciar o esquema.
- RabbitMQ: Sistema de mensageria para comunicação assíncrona entre os serviços.
- Redis: Utilizado para caching, melhorando a performance ao armazenar dados frequentemente acessados em memória.
- Swagger: Interface de documentação interativa para testar e explorar as APIs de maneira fácil e eficiente.
- Testes Unitários: Escritos para validar o comportamento do código e garantir a qualidade.
Este projeto utiliza .NET 8 e todas as dependências principais estão encapsuladas em contêineres Docker, o que simplifica a configuração. No entanto, se você deseja executar os testes unitários, pode ser necessário ter o SDK do .NET instalado localmente.
- Docker: Instalar Docker
- Docker Compose: Instalar Docker Compose
- .NET SDK 8 (apenas se você pretende rodar os testes localmente fora do Docker): Instalar .NET SDK
Para executar o projeto localmente, siga os passos abaixo:
- Clone o repositório:
git clone https://github.com/RochaRaphael/RRBank
docker-compose up --build
Gateway (Ocelot): http://localhost:8084/swagger
dotnet ef migrations add InitialCreate --project ../RRBank.Infra dotnet ef database update
Após esses passos, o projeto estará pronto para uso, e as APIs estarão acessíveis via o API Gateway.
O projeto conta com dois serviços adicionais que são utilizados em algumas operações:
RabbitMQ: Usado para comunicação assíncrona entre os serviços, especialmente para tarefas que envolvem filas de mensagens.
Ambos os serviços estão configurados no Docker Compose e serão automaticamente provisionados na execução do comando docker-compose up.