-
Notifications
You must be signed in to change notification settings - Fork 0
Home
JJong-03 edited this page Mar 13, 2026
·
24 revisions
레거시 동기식 백테스트 엔진을 한 줄도 수정하지 않고, Kubernetes Job 기반 비동기 아키텍처 + GitOps로 모더니제이션한 설계 문서.
이 Wiki는 다음 순서로 읽는 것을 권장합니다.
1️⃣ 프로젝트 수행 및 완성 — 프로젝트 요약 및 수행 결과
2️⃣ 최종 아키텍처 — 시스템 전체 아키텍처 개요
3️⃣ 설계 원칙 — 핵심 설계 철학
이후 3번 설계 원칙 문서부터 하단의 Navigation 링크를 따라가시면 상세 구현 문서를 순서대로 읽으실 수 있습니다.
| Phase | 내용 | Status |
|---|---|---|
| Phase 1 | Containerization & Local Parity | ✅ Completed |
| Phase 2 | Kubernetes Runtime + Data Layer | ✅ Completed |
| Phase 3 | Web → K8s Job Orchestration | ✅ Completed |
| Phase 4 | Automation & GitOps (CI/CD) | ✅ Completed |
| Phase 5 | Observability Verification & Demo | ✅ Completed |
| Phase 6 | Documentation & Retrospective | ✅ Completed |
이 프로젝트가 의도적으로 다루지 않는 영역. 각 항목에는 근거가 있다.
- 실시간 트레이딩 시스템이 아님 — 과거 데이터 기반 시뮬레이션만 수행
- 멀티 테넌트 인증/인가(AuthN/AuthZ) 미구현 — 단일 사용자 포트폴리오 프로젝트
- 대용량 데이터셋 최적화 미수행 — MVP 데이터 규모에서 이미지 내장으로 충분
- SQLite는 로컬 개발 전용 — Production은 MySQL StatefulSet
- Prometheus/Grafana는 Phase 5 optional — stdout/stderr 로깅이 마감 필수 요건
- Helm/Kustomize 미사용 — raw YAML + GitOps로 투명성 확보
- Candlestick chart / Intraday timeframe — Phase 2+ 선택적 UI feature
- Alembic 등 마이그레이션 도구 미사용 — additive-only 스키마 정책
상세 근거 및 trade-off → Scope & Non-Goals
- 프로젝트 수행 및 완성 — 설계, 구현, 검증, 완성 과정 요약
| 문서 | 내용 |
|---|---|
| Rulebook | 프로젝트 비타협 규칙 10가지 공개 요약 |
| Design Principles | 아키텍처 원칙 — 규칙을 8가지 원칙으로 재구성 |
| Execution Lifecycle | 실행 상태 머신, K8s Job 규격, 생명주기 정책 |
| Reproducibility | 재현성 식별자, 데이터 공급 전략, 저장 경계 |
flowchart TB
A["Legacy Sync Engine<br/><span style='font-size:12px'>unchanged & validated</span>"]
B["Containerized Engine<br/><span style='font-size:12px'>Docker image (immutable)</span>"]
C["Kubernetes Job<br/><span style='font-size:12px'>1 backtest = 1 isolated execution</span>"]
D["Async Orchestration<br/><span style='font-size:12px'>run_id + DB tracking</span>"]
E["Stateless Web + MySQL<br/><span style='font-size:12px'>Source of Truth</span>"]
A -- "Wrap (No Code Change)" --> B
B -- "Submit per run_id" --> C
C -- "Persist status/results" --> D
D -- "Serve UI & /status" --> E
classDef core fill:#ffffff,stroke:#111827,stroke-width:1px,color:#111827
classDef emphasis fill:#ffffff,stroke:#111827,stroke-width:2px,color:#111827
class A,B,D,E core
class C emphasis
- Final Architecture — 통합 아키텍처 개요, 전체 시스템 조감도
- Infra Architecture — K8s 토폴로지, 계층 구조, 보안/스케일링
- App Architecture — Web↔Worker 책임 경계, JobLauncher, Adapter Layer
- Execution Lifecycle — 상태 머신, Job 규격, Failure 분류
- API-Endpoints & Schemas — Endpoint 목록, Request/Response 스키마
-
ERD-Data Model —
backtest_results테이블 스키마 - Reproducibility — 재현성 식별자, 저장 경계 (MUST/SHOULD/MUST NOT)
- CI_CD_GitOps — CI 파이프라인, GitOps 전략, Image Tag Strategy
- Rollback Runbook — Git 기반 롤백 절차, 검증 체크리스트, 실제 장애 사례
- Observability — Prometheus 메트릭, Grafana 대시보드, /metrics 엔드포인트
- 배포 & 셋업 가이드 — 환경 구축, K8s 배포 절차, DB 초기화
- Runbook-Troubleshooting — run_id 기반 장애 추적, 시나리오별 대응
- Testing Strategy
- E2E Demo Verification — run_id 기반 end-to-end 데모/검증 기록
- UI-Screens — 5-tab 대시보드, 데이터 계약
- ADR-Design Decisions — 8개 ADR (K8s Job, JSON, Stateless, API, Image Tags, Flask, MySQL, Raw YAML)
