A financial API service built in Go, demonstrating backend engineering with thread-safe concurrency, financial scenario simulations, and a scalable architecture. This project showcases advanced Go patterns, including mutex-based concurrency control and comprehensive testing (with context-based cancellation).
- 186,075 operations/second - Enterprise-grade performance
- Zero race conditions - Thread-safe financial operations
- Sub-millisecond latency - 0.537ms average response time
- Financial scenario simulations & compliance - High-Frequency Trading simulations, payment processing workflows, deadlock prevention testing, and auditing
- Production-ready - Comprehensive error handling and monitoring
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β HTTP Layer βββββΆβ Business Logic βββββΆβ Data Layer β
β (Handlers) β β (Services) β β (Database) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
ββββββΌβββββ ββββββΌβββββ ββββββΌβββββ
β Chi β β Domain β β Mock DB β
β Router β β Models β β + Tests β
βββββββββββ βββββββββββ βββββββββββ
- RWMutex: Concurrent reads, exclusive writes
- Multi-level locking: Separate mutexes for data, audit, and health monitoring
- Context cancellation: Timeout and cancellation support
- Optimistic locking: Version-based conflict detection
goapi/
βββ cmd/api/main.go # Application entry point
βββ api/api.go # API contracts & response types
βββ internal/
β βββ handlers/ # HTTP request handlers
β β βββ api.go # Route definitions & middleware
β β βββ get_coin_balance.go # Balance inquiry endpoint
β β βββ add_coins.go # Deposit endpoint
β β βββ withdraw_coins.go # Withdrawal endpoint
β β βββ transfer_coins.go # Transfer endpoint
β βββ middleware/
β β βββ authorization.go # Token-based authentication
β βββ tools/
β βββ database.go # Database interface & contracts
β βββ mockdb.go # High-performance implementation
β βββ mockdb_race_test.go # Financial system test suite
βββ go.mod # Go module dependencies
βββ README.md # Project documentation
The project includes a two-tier testing strategy that demonstrates both fundamental concurrency safety and real-world financial scenario simulations:
internal/tools/
βββ basic_test.go # Core concurrency & race condition testing
βββ financial_test.go # Financial system scenarios
βββ database.go # Interface definitions
βββ mockdb.go # High-performance implementation
Purpose: Validates fundamental thread safety and concurrency patterns essential for any financial system.
- β Concurrent Deposits - Multiple simultaneous balance additions
- β Mixed Operations - Deposits and withdrawals running concurrently
- β Concurrent Transfers - Multi-user transfer scenarios
- β Read-Write Concurrency - Simultaneous reads and writes with RWMutex
- β Performance Benchmarks - Individual operation performance testing
- Race condition detection and prevention
- Money conservation across all operations
- Data integrity under concurrent load
- Sub-millisecond operation performance
# Run basic concurrency tests
go test ./internal/tools/ -run TestBasicConcurrency -v
go test ./internal/tools/ -run TestPerformance -v
# Run performance benchmarks
go test -bench=BenchmarkBasicOperations ./internal/tools/Purpose: Demonstrates understanding of financial scenarios and compliance requirements.
- Simulates 50 concurrent trades between traders and exchange
- Tests context-based timeouts and cancellation
- Validates money conservation under extreme load
- Measures successful vs failed trade ratios
- Simulates panic withdrawals from multiple customers
- Tests system stability under extreme withdrawal pressure
- Validates no negative balance scenarios
- Ensures graceful degradation under stress
- Two-phase payment processing (customer β processor β merchant)
- 1% processing fee calculation and collection
- Automatic rollback on payment failures
- E-commerce transaction pattern simulation
- Circular transfer scenarios (AβB while BβA)
- Timeout-based deadlock detection
- System responsiveness under potential deadlock conditions
- Money conservation during complex transfer patterns
- Complete audit trail verification
- Transaction history tracking for regulatory compliance
- System health monitoring and reporting
- Data integrity validation across all operations
# Run financial system scenarios
go test ./internal/tools/ -run TestFinancialSystemScenarios -v
# Run compliance and auditing tests
go test ./internal/tools/ -run TestComplianceAndAuditing -v# Run all tests with race detection
go test -race ./internal/tools/ -v
# Run specific test categories
go test ./internal/tools/ -run TestBasicConcurrency -v
go test ./internal/tools/ -run TestFinancialSystemScenarios -v
# Performance benchmarking
go test -bench=. ./internal/tools/ -benchmem
# Generate test coverage report
go test ./internal/tools/ -cover -coverprofile=coverage.out
go tool cover -html=coverage.out# System health and metrics
GET /system/healthResponse:
{
"status": "healthy",
"uptime_seconds": 3600.5,
"operation_count": 1000000,
"components": {
"database": true,
"audit_log": true,
"performance": true
}
}- Complete transaction history
- Unique transaction IDs
- Timestamp tracking
- Status monitoring (SUCCESS/FAILED)
All endpoints require:
Authorizationheader with valid tokenusernamequery parameter
| Method | Endpoint | Description | Performance |
|---|---|---|---|
GET |
/account/coins |
Get user balance | ~0.1ms |
POST |
/account/coins/add |
Deposit coins | ~0.5ms |
POST |
/account/coins/withdraw |
Withdraw coins | ~0.5ms |
POST |
/account/coins/transfer |
Transfer between users | ~0.6ms |
Get Balance:
curl -H "Authorization: 1" \
"http://localhost:3000/account/coins?username=aaron"Transfer Coins:
curl -X POST \
-H "Authorization: 1" \
"http://localhost:3000/account/coins/transfer?username=aaron&from=aaron&to=bryan&amount=100"Performance: 100 operations in 537.417Β΅s (186,075.25 ops/sec)