# QuantBench 시스템 아키텍처 ## 1. 전체 시스템 구조 ```mermaid graph TB subgraph "사용자 레이어" UI[사용자 인터페이스
Web/Mobile/Desktop] end subgraph "API 레이어" Gateway[API Gateway
인증 & Rate Limiting] end subgraph "Phase 1: 핵심 컴포넌트" Balance[balance
계좌 관리] Mgmt[mgmt
컨테이너 관리] Strategy[strategy
전략 관리] Scheduler[scheduler
실행 스케줄러] Risk[risk
리스크 관리] Data[data
데이터 관리] end subgraph "Phase 2: 프로덕션" Analytics[analytics
성과 분석] Monitor[monitor
모니터링 & 알림] end subgraph "Phase 3: 엔터프라이즈" Audit[audit
감사 로깅] Simulation[simulation
시뮬레이션] end subgraph "인프라" MQ[Message Queue
Kafka/RabbitMQ] DB[(Database
PostgreSQL)] Cache[(Cache
Redis)] Storage[(Object Storage
S3)] end subgraph "외부 시스템" Broker1[한국투자증권 API] Broker2[삼성증권 API] Broker3[키움증권 API] DataProvider[데이터 제공자
Yahoo/Alpha Vantage] end UI --> Gateway Gateway --> Mgmt Gateway --> Strategy Gateway --> Scheduler Gateway --> Analytics Gateway --> Monitor Gateway --> Simulation Scheduler --> Strategy Scheduler --> Mgmt Scheduler --> Risk Scheduler --> Balance Strategy --> Data Strategy --> Risk Mgmt --> Balance Mgmt --> Risk Analytics --> Mgmt Analytics --> Data Monitor --> Mgmt Monitor --> Balance Monitor --> Scheduler Simulation --> Strategy Simulation --> Data Simulation --> Risk Audit -.-> Mgmt Audit -.-> Strategy Audit -.-> Scheduler Audit -.-> Balance Balance --> Broker1 Balance --> Broker2 Balance --> Broker3 Data --> DataProvider Data --> Broker1 Mgmt --> DB Strategy --> DB Analytics --> DB Audit --> DB Data --> Cache Monitor --> Cache Analytics --> Storage Audit --> Storage Scheduler --> MQ Monitor --> MQ style Balance fill:#e1f5ff style Mgmt fill:#e1f5ff style Strategy fill:#e1f5ff style Scheduler fill:#e1f5ff style Risk fill:#e1f5ff style Data fill:#e1f5ff style Analytics fill:#fff4e1 style Monitor fill:#fff4e1 style Audit fill:#f0e1ff style Simulation fill:#f0e1ff ``` ## 2. 컴포넌트 개요 ### 2.1 Phase 1: 핵심 컴포넌트 | 컴포넌트 | 책임 | 주요 기능 | |---------|------|----------| | **balance** | 증권사 API 통합 및 계좌 자산 관리 | 계좌 연동, 잔고 조회, 시세 조회, 주문 처리 | | **mgmt** | 가상 자산 컨테이너 생성 및 운영 관리 | 컨테이너 생명주기, 자산 격리, 밸런스 조정 | | **strategy** | 투자 전략 구현, 백테스트, 버전 관리 | 전략 등록, 신호 생성, 백테스트, 파라미터 관리 | | **scheduler** | 전략 실행 자동화 및 리밸런싱 관리 | 스케줄 관리, 실행 트리거, 승인 워크플로우 | | **risk** | 포지션 리스크 통제 및 사전 주문 검증 | 주문 검증, 리스크 모니터링, 손절/익절 | | **data** | 시계열 데이터 수집, 저장, 제공 | 데이터 수집, 품질 관리, 데이터 제공 | ### 2.2 Phase 2: 프로덕션 컴포넌트 | 컴포넌트 | 책임 | 주요 기능 | |---------|------|----------| | **analytics** | 실거래 성과 측정 및 리포팅 | 성과 측정, 귀속 분석, 거래 분석, 리포트 생성 | | **monitor** | 시스템 상태 감시 및 이상 탐지 | 헬스 체크, 이상 탐지, 알림 관리, 대시보드 | ### 2.3 Phase 3: 엔터프라이즈 컴포넌트 | 컴포넌트 | 책임 | 주요 기능 | |---------|------|----------| | **audit** | 불변 감사 로그 및 규제 리포팅 | 감사 로그, 변경 추적, 규제 리포팅, 무결성 검증 | | **simulation** | 실전 배포 전 안전한 테스트 환경 제공 | Paper Trading, 시뮬레이션, 파라미터 최적화 | ## 3. 컴포넌트 상호작용 ### 3.1 Phase 1 컴포넌트 관계도 ```mermaid graph LR subgraph "Phase 1: MVP" subgraph "핵심 거래" Mgmt[mgmt
컨테이너 관리] Strategy[strategy
전략 엔진] Scheduler[scheduler
스케줄러] end subgraph "안전성 & 통제" Risk[risk
리스크 관리] Data[data
데이터 수집] end subgraph "증권사 연동" Balance[balance
계좌 연동] end end Scheduler -->|1. 트리거| Strategy Strategy -->|2. 신호 생성| Risk Risk -->|3. 검증 통과| Scheduler Scheduler -->|4. 주문 생성| Balance Balance -->|5. 체결 결과| Mgmt Strategy -->|시세 조회| Data Risk -->|리스크 데이터| Data Mgmt -->|자산 할당| Balance style Mgmt fill:#4CAF50,color:#fff style Strategy fill:#2196F3,color:#fff style Scheduler fill:#FF9800,color:#fff style Risk fill:#F44336,color:#fff style Data fill:#9C27B0,color:#fff style Balance fill:#00BCD4,color:#fff ``` ### 3.2 Phase별 의존성 ```mermaid graph TB subgraph "Phase 3: Enterprise" P3_1[audit
감사] P3_2[simulation
시뮬레이션] end subgraph "Phase 2: Production" P2_1[analytics
분석] P2_2[monitor
모니터링] end subgraph "Phase 1: MVP" P1_1[balance
계좌] P1_2[mgmt
컨테이너] P1_3[strategy
전략] P1_4[scheduler
스케줄러] P1_5[risk
리스크] P1_6[data
데이터] end P1_1 --> P2_1 P1_2 --> P2_1 P1_3 --> P2_1 P1_6 --> P2_1 P1_1 --> P2_2 P1_2 --> P2_2 P1_4 --> P2_2 P2_1 --> P3_1 P1_4 --> P3_1 P1_1 --> P3_1 P1_3 --> P3_2 P1_6 --> P3_2 P1_5 --> P3_2 style P1_1 fill:#e3f2fd style P1_2 fill:#e3f2fd style P1_3 fill:#e3f2fd style P1_4 fill:#e3f2fd style P1_5 fill:#e3f2fd style P1_6 fill:#e3f2fd style P2_1 fill:#fff9c4 style P2_2 fill:#fff9c4 style P3_1 fill:#f3e5f5 style P3_2 fill:#f3e5f5 ``` ## 4. 데이터 흐름 ### 4.1 시장 데이터 흐름 ```mermaid graph LR subgraph "외부 소스" Broker[증권사 API] Yahoo[Yahoo Finance] Alpha[Alpha Vantage] end subgraph "데이터 수집" Collector[Data Collector] RealTime[실시간 스트림] Historical[과거 데이터 수집] end subgraph "데이터 처리" Validator[데이터 검증] Adjuster[조정 처리] QualityCheck[품질 체크] end subgraph "저장소" Cache[(Redis
실시간)] TimeSeries[(TimescaleDB
과거)] Metadata[(Metadata
종목 정보)] end subgraph "소비자" Strategy[전략 엔진] Backtest[백테스트] Analytics[분석] Monitor[모니터] end Broker --> RealTime Yahoo --> Historical Alpha --> Historical RealTime --> Collector Historical --> Collector Collector --> Validator Validator --> QualityCheck QualityCheck -->|통과| Adjuster QualityCheck -->|실패| Alert[품질 알림] Adjuster --> Cache Adjuster --> TimeSeries Adjuster --> Metadata Cache --> Strategy Cache --> Monitor TimeSeries --> Backtest TimeSeries --> Analytics Metadata --> Strategy style Cache fill:#FF6B6B,color:#fff style TimeSeries fill:#4ECDC4,color:#fff style Metadata fill:#45B7D1,color:#fff ``` ### 4.2 주문 실행 흐름 ```mermaid graph TB Start([스케줄 트리거]) --> GetContainer[컨테이너 정보 조회] GetContainer --> GenerateSignals[신호 생성] GenerateSignals --> GetMarketData[시장 데이터 조회] GetMarketData --> Calculate[매매 신호 계산] Calculate --> RiskCheck[리스크 검증] RiskCheck --> CheckResult{검증 결과} CheckResult -->|실패| SendAlert[실패 알림] CheckResult -->|통과| CheckMode{실행 모드} CheckMode -->|AUTO| ExecuteOrder CheckMode -->|APPROVAL| RequestApproval[승인 요청] RequestApproval --> WaitApproval[승인 대기] WaitApproval --> ExecuteOrder[주문 실행] ExecuteOrder --> SubmitToBroker[증권사에 주문 제출] SubmitToBroker --> WaitFill[체결 대기] WaitFill --> UpdatePosition[포지션 업데이트] UpdatePosition --> Reconcile[밸런스 조정] Reconcile --> CalcPerformance[성과 계산] CalcPerformance --> CheckAnomaly[이상 탐지] CheckAnomaly --> End([완료]) SendAlert --> End style RiskCheck fill:#f44336,color:#fff style ExecuteOrder fill:#4caf50,color:#fff style CheckAnomaly fill:#ff9800,color:#fff ``` ## 5. 인프라 아키텍처 ### 5.1 배포 구조 ```mermaid graph TB subgraph "로드 밸런서" LB[Load Balancer
Nginx/ALB] end subgraph "애플리케이션 레이어" API1[API Gateway 1] API2[API Gateway 2] Worker1[Worker 1
scheduler/strategy] Worker2[Worker 2
analytics] end subgraph "데이터 레이어" PG_Master[(PostgreSQL
Primary)] PG_Replica[(PostgreSQL
Replica)] Redis_Master[(Redis
Primary)] Redis_Replica[(Redis
Replica)] TS[(TimescaleDB
시계열)] end subgraph "메시지 큐" Kafka[Kafka Cluster] end subgraph "스토리지" S3[(S3
리포트/백업)] end subgraph "모니터링" Prometheus[Prometheus] Grafana[Grafana] ELK[ELK Stack] end LB --> API1 LB --> API2 API1 --> Worker1 API2 --> Worker2 Worker1 --> PG_Master Worker2 --> PG_Replica Worker1 --> Redis_Master Worker2 --> Redis_Replica Worker1 --> TS Worker2 --> TS Worker1 --> Kafka Worker2 --> Kafka Worker1 --> S3 Worker2 --> S3 PG_Master -.->|복제| PG_Replica Redis_Master -.->|복제| Redis_Replica API1 --> Prometheus Worker1 --> Prometheus Prometheus --> Grafana API1 --> ELK Worker1 --> ELK style PG_Master fill:#4CAF50,color:#fff style Redis_Master fill:#FF6B6B,color:#fff style Kafka fill:#FF9800,color:#fff ``` ### 5.2 데이터베이스 스키마 분리 ```mermaid graph TB subgraph "PostgreSQL" subgraph "Core Schema" Accounts[accounts
계좌 정보] Containers[containers
컨테이너] Strategies[strategies
전략] Orders[orders
주문] Positions[positions
포지션] end subgraph "Config Schema" RiskLimits[risk_limits
리스크 한도] Schedules[schedules
스케줄] AlertRules[alert_rules
알림 규칙] end subgraph "Analytics Schema" Performance[performance
성과 데이터] Reports[reports
리포트] end subgraph "Audit Schema" AuditLogs[audit_logs
감사 로그] ChangeLogs[change_logs
변경 이력] end end subgraph "TimescaleDB" PriceBars[price_bars
가격 데이터] Metrics[metrics
메트릭] Trades[trades
거래 이력] end subgraph "Redis" RealtimePrices[실시간 시세] SessionCache[세션 캐시] RateLimits[Rate Limit] end Containers --> Accounts Strategies --> Containers Orders --> Containers Positions --> Containers RiskLimits --> Containers Schedules --> Containers Performance --> Containers Reports --> Performance AuditLogs --> Containers ChangeLogs --> Containers style Accounts fill:#e3f2fd style Containers fill:#e3f2fd style AuditLogs fill:#f3e5f5 style PriceBars fill:#fff9c4 ``` ## 6. 보안 아키텍처 ### 6.1 인증 및 권한 ```mermaid graph LR User[사용자] --> Auth[인증 서비스] Auth --> JWT[JWT 토큰 발급] JWT --> Gateway[API Gateway] Gateway --> RBAC[권한 체크] RBAC -->|관리자| AdminAPI[관리 API] RBAC -->|일반 사용자| UserAPI[사용자 API] RBAC -->|읽기 전용| ReadOnlyAPI[조회 API] AdminAPI --> Services[백엔드 서비스] UserAPI --> Services ReadOnlyAPI --> Services Services --> AuditLog[감사 로그] style Auth fill:#4CAF50,color:#fff style RBAC fill:#FF9800,color:#fff style AuditLog fill:#F44336,color:#fff ``` ### 6.2 API 키 관리 ```mermaid graph TB User[사용자] -->|API 키 입력| Encrypt[암호화] Encrypt -->|AES-256| Store[(암호화 저장소)] Scheduler[스케줄러] -->|필요 시| Decrypt[복호화] Store -->|암호화된 데이터| Decrypt Decrypt -->|평문 키| BrokerAPI[증권사 API] BrokerAPI -->|응답| Scheduler Note1[메모리에만 평문 존재] Note2[로그에 절대 기록 안함] style Encrypt fill:#4CAF50,color:#fff style Store fill:#F44336,color:#fff style Decrypt fill:#FF9800,color:#fff ``` ## 7. 확장성 고려사항 ### 7.1 수평 확장 - **API Gateway**: 로드 밸런서를 통한 다중 인스턴스 - **Worker 프로세스**: 메시지 큐 기반 작업 분산 - **데이터베이스**: Read Replica를 통한 읽기 부하 분산 - **캐시**: Redis Cluster를 통한 분산 캐싱 ### 7.2 증권사 플러그인 아키텍처 ```mermaid graph TB subgraph "Core" BrokerInterface[BrokerAdapter
인터페이스] end subgraph "플러그인" KoreaInvestment[한국투자증권
Adapter] Samsung[삼성증권
Adapter] Kiwoom[키움증권
Adapter] Future[미래 증권사
Adapter] end BrokerInterface -.->|구현| KoreaInvestment BrokerInterface -.->|구현| Samsung BrokerInterface -.->|구현| Kiwoom BrokerInterface -.->|구현| Future Balance[balance 컴포넌트] --> BrokerInterface style BrokerInterface fill:#2196F3,color:#fff style Future fill:#ddd ``` ## 8. 장애 복구 ### 8.1 장애 시나리오 및 대응 | 시나리오 | 영향 | 복구 방안 | |---------|------|----------| | 증권사 API 장애 | 주문 실행 불가 | 자동 재시도 (지수 백오프), 수동 개입 알림 | | 데이터베이스 장애 | 시스템 전체 중단 | Replica로 자동 Failover | | 시장 데이터 지연 | 신호 생성 지연 | 캐시 데이터 활용, 타임아웃 처리 | | Worker 프로세스 다운 | 특정 작업 중단 | 헬스 체크 실패 시 자동 재시작 | | 메시지 큐 장애 | 비동기 작업 중단 | 메시지 영속화, 큐 복구 후 재처리 | ### 8.2 백업 전략 - **데이터베이스**: 일일 전체 백업 + 트랜잭션 로그 백업 (Point-in-Time Recovery) - **설정**: Git 기반 버전 관리 - **감사 로그**: S3에 불변 저장 (법적 보존 기간 준수) - **백테스트 결과**: 주요 결과만 장기 보관 ## 9. 관련 문서 - [시스템 개요](./01-overview.md) - [공통 데이터 모델](./03-data-models.md) - [주요 워크플로우](./04-workflows.md) - [구현 로드맵](./05-roadmap.md) ### 구성요소 상세 문서 - [Phase 1 컴포넌트](../components/phase1/) - [Phase 2 컴포넌트](../components/phase2/) - [Phase 3 컴포넌트](../components/phase3/)