- Descrição
- Funcionalidades
- Tecnologias Utilizadas
- Requisitos para Execução
- Como Rodar o Projeto Localmente
- Estrutura do Projeto
- Diagrama de Implantação
- Modelo Entidade-Relacional
- Fluxo de Construção do Ambiente
- Registros de Decisão Arquitetural
- ADR001 - Interface
- ADR002 - Arquitetura
- ADR003 - Banco de dados
- ADR004 - Banco de dados
- ADR005 - Evolve DB Docker
- ADR006 - Database Setup
- ADR007 - Migration tiers
- ADR008 - Cross Cutting
- ADR009 - Localization
- ADR010 - Business
- ADR011 - Startup context builder
- ADR012 - Hangfire antiforgery token
- ADR013 - Setup
- Teste de carga
- Licença
O BC Cash Flow é um sistema desenvolvido em C# para o controle de fluxo de caixa | permitindo a gestão de lançamentos diários de débitos e créditos, além da consolidação do saldo diário. O sistema é projetado com foco em escalabilidade, resiliência e segurança, garantindo alta disponibilidade e desempenho.
- Registro de Lançamentos: Adicione lançamentos de débito e crédito com descrição, valor e data.
- Consolidação de Saldo Diário: Gere um relatório consolidado do saldo diário.
- Resiliência: O sistema de lançamentos opera de forma independente, mesmo com falhas no serviço de consolidação.
- Escalabilidade: Suporte para alta demanda de requisições nos momentos de pico.
- C#
- .NET Core
- SQL Server (ou outro banco de dados relacional)
- RabbitMQ
- Redis
- Hangfire
- Evolve
- JMeter
- Docker Compose
- Clone o repositório:
git clone https://github.com/mfedatto/bc-cashflow.git
- Navegue até o diretório de infra como código:
cd iac
- Suba a composição via docker compose:
docker compose up -d
/docs/
: Documentação técnica do projeto./src/
: Código fonte do sistema./iac/
: Infra como código./db/
: Database migration./tests/
: Planos de teste.
ADR001
- InterfaceADR002
- ArquiteturaADR003
- Banco de dadosADR004
- Banco de dadosADR005
- Evolve DB DockerADR006
- Database SetupADR007
- Migration tiersADR008
- Cross CuttingADR009
- LocalizationADR010
- BusinessADR011
- Startup context builderADR012
- Hangfire antiforgery tokenADR013
- SetupADR014
- Dockerfile
O teste de carga foi criado usando JMeter e as definições estão no arquivo /tests/load-test.jmx
.
Ambiente novo, construído totalmente pelo docker compose up -d
.
- Intel Core i7-9700KF CPU @ 3.60/4.90GHz (stock) 8 cores
- 64,0 GB RAM
- Windows 11 amd64
Component | Tecnology | Hostname | CPUs | RAM (MB) |
---|---|---|---|---|
Web UI | ASP.Net 8 | cashflow-web |
1.0 |
256 |
Scheduler | ASP.Net 8 + Hangfire | cashflow-scheduler |
0.2 |
128 |
Database | SQL Server | cashflow-db |
1.0 |
1536 |
Cache | KeyDB (Redis) | cashflow-cache |
0.6 |
64 |
Queue | RabbitMQ | cashflow-queue |
0.2 |
128 |
- Test plan
- Settings
- Connection timeout (ms):
3000
- Response timeout (ms):
1000
- Connection timeout (ms):
- Warmup
- Threads:
3
- Ramp-up period:
0
- Loop count:
3
- Infinte:
false
- Same user in each iteration:
true
- Delay Thread creation until needed:
false
- Specifiy Thread lifetime:
false
- Duration (seconds):
disabled
- Startup delay (seconds):
disabled
- Threads:
- Load test
- Threads:
10
- Ramp-up period:
0
- Loop count: ``
- Infinte:
true
- Same user in each iteration:
true
- Delay Thread creation until needed:
false
- Specifiy Thread lifetime:
true
- Duration (seconds):
120
- Startup delay (seconds):
0
- Threads:
- Settings
Label | # Samples | Average | Min | Max | Std. Dev. | Error % | Throughput | Received KB/sec | Sent KB/sec | Avg. Bytes |
---|---|---|---|---|---|---|---|---|---|---|
GET / |
5905 |
2 |
0 |
68 |
5.36 |
0.000% |
49.23295 |
150.15 |
5.72 |
3123.0 |
GET /Users |
5905 |
9 |
0 |
1000 |
23.08 |
0.000% |
49.23541 |
170.02 |
5.96 |
3536.0 |
GET /Users/Details/{id}} |
5905 |
6 |
0 |
80 |
10.99 |
0.000% |
49.21407 |
167.30 |
6.44 |
3481.0 |
GET /Accounts |
5904 |
9 |
1 |
1836 |
38.04 |
0.000% |
49.21682 |
191.20 |
6.10 |
3978.0 |
GET /Transactions |
5903 |
60 |
4 |
314 |
38.25 |
0.000% |
49.19372 |
808.00 |
6.29 |
16819.1 |
POST /Transactions/Create |
5901 |
99 |
19 |
3912 |
179.16 |
0.000% |
49.17623 |
814.54 |
19.83 |
16961.2 |
TOTAL | 35423 |
31 |
0 |
3912 |
85.23 |
0.000% |
295.05397 |
2299.82 |
50.32 |
7981.7 |
Ambiente novo, construído totalmente pelo docker compose up -d
.
- Intel Core i7-9700KF CPU @ 3.60/4.90GHz (stock) 8 cores
- 64,0 GB RAM
- Windows 11 amd64
Component | Tecnology | Hostname | CPUs | RAM (MB) |
---|---|---|---|---|
Web UI | ASP.Net 8 | cashflow-web |
n/a | n/a |
Scheduler | ASP.Net 8 + Hangfire | cashflow-scheduler |
n/a | n/a |
Database | SQL Server | cashflow-db |
n/a | n/a |
Cache | KeyDB (Redis) | cashflow-cache |
n/a | n/a |
Queue | RabbitMQ | cashflow-queue |
n/a | n/a |
- Warmup
- Threads:
3
- Ramp-up period:
0
- Loop count:
3
- Infinte:
false
- Same user in each iteration:
true
- Delay Thread creation until needed:
false
- Specifiy Thread lifetime:
false
- Duration (seconds):
disabled
- Startup delay (seconds):
disabled
- Threads:
- Load test
- Threads:
10
- Ramp-up period:
0
- Loop count: ``
- Infinte:
true
- Same user in each iteration:
true
- Delay Thread creation until needed:
false
- Specifiy Thread lifetime:
true
- Duration (seconds):
120
- Startup delay (seconds):
0
- Threads:
Label | # Samples | Average | Min | Max | Std. Dev. | Error % | Throughput | Received KB/sec | Sent KB/sec | Avg. Bytes |
---|---|---|---|---|---|---|---|---|---|---|
GET / |
9068 |
1 |
0 |
41 |
1.19 |
0.000% |
75.57737 |
230.50 |
8.78 |
3123.0 |
GET /Users |
9068 |
3 |
0 |
166 |
3.20 |
0.000% |
75.58115 |
260.99 |
9.15 |
3536.0 |
GET /Users/Details/{id} |
9068 |
3 |
0 |
58 |
2.97 |
0.000% |
75.57863 |
256.92 |
9.89 |
3481.0 |
GET /Accounts |
9068 |
4 |
1 |
199 |
4.12 |
0.000% |
75.58997 |
293.65 |
9.37 |
3978.0 |
GET /Transactions |
9067 |
43 |
3 |
246 |
21.67 |
0.000% |
75.53693 |
1241.84 |
9.66 |
16834.7 |
POST /Transactions/Create |
9064 |
63 |
14 |
2820 |
97.48 |
0.000% |
75.52138 |
1251.44 |
30.45 |
16968.4 |
TOTAL | 54403 |
19 |
0 |
2820 |
47.56 |
0.000% |
453.07516 |
3533.47 |
77.27 |
7986.0 |
Este projeto é licenciado sob a MIT License.