3.8 KiB
3.8 KiB
Architecture Overview
- Related REQ:
REQ-003
목표
portfolio-hub는 포트폴리오 상태 관리 기능을 API와 CLI에 동일하게 제공하고, 서비스/도메인/리포지토리 계층 분리를 통해 변경 비용을 낮춘다.
개요와 범위
런타임/구성요소 기준:
- Runtime: Python 3.11+
- API framework: FastAPI
- CLI framework: Typer
- DB driver: Psycopg v3
- Migration: Alembic
주요 목표:
- 포트폴리오 lifecycle 관리(create/update/delete/reset)
- 거래 및 잔고 영향 액션 기록(buy/sell/invest/transfer)
- API와 CLI에서 동일한 상태/ledger 조회 제공
- 공유 service/repository 계층을 통한 동작 일관성 유지
현재 범위:
- 인증된 포트폴리오 조회/변경 작업
- 관리자 기반 사용자 CRUD
- 권한 계층(read, trade-write, admin)
- feature flag 기반 PostgreSQL/Timescale 저장소
- DB bootstrap 및 migration 운영 명령
현재 비목표 / 제한:
- production 용도 메모리 fallback repository 미구현
- 외부 broker 주문 실행 미포함
- Redis/Loki 관측성 경로는 완전한 runtime wiring 미완료
상위 구성 요소
| 컴포넌트 | 책임 |
|---|---|
app/main.py |
FastAPI 앱 생성, 라우터 등록, 설정 초기화 |
app/api/ |
인증/헬스/포트폴리오/전략셋/사용자 라우트 |
app/cli/ |
운영용 명령 인터페이스와 확인 프롬프트 |
app/services/ |
API/CLI 공통 유스케이스 수행 |
app/domain/ |
포트폴리오 거래 규칙, 밸런스 계산 |
app/repositories/ |
저장소 추상화 및 Postgres 구현 |
app/db/, migrations/ |
DB 초기화 및 스키마 버전 관리 |
엔트리포인트
HTTP 서비스:
- App factory:
app.main:create_app - ASGI app:
app.main:app - OpenAPI docs:
/docs - ReDoc:
/redoc
CLI:
- Console script:
portfoliohub - Entry function:
app.cli.main:main
기본 런타임 흐름
1. API 기반 거래 처리
- 라우트에서 요청 바디와 권한을 검증한다.
- 서비스 계층에서 도메인 규칙(수량/금액/상태)을 평가한다.
- 리포지토리에서 포트폴리오/원장 데이터를 갱신한다.
- 응답 스키마로 직렬화해 반환한다.
2. CLI 기반 동일 작업 처리
- CLI 명령이 인자를 파싱하고 확인 프롬프트를 처리한다.
- API와 동일한 서비스 메서드를 호출한다.
- 결과를 터미널 친화 포맷으로 출력한다.
3. DB 활성화 경로
PORTFOLIOHUB_DB_ENABLED=true확인- DB 연결 정보(
TIMESCALEDB_*) 로딩 - Postgres 리포지토리 선택
- 필요 시 Alembic 마이그레이션 후 서비스 기동
설계 원칙
- Service Reuse First: API/CLI는 동일 service 계층을 재사용한다.
- Contract Stability: 외부 계약은
app/schemas/와 기술 문서에서 일관성을 유지한다. - Persistence Isolation: 영속성 구현 세부사항은 repository 계층에 격리한다.
- Fail Fast Config: 필수 설정 누락은 조기 실패로 드러낸다.
테스트와 호환성 기준
테스트 기준:
- 테스트 프레임워크는
pytest를 사용한다. - 주요 테스트 범위는 API, auth, CLI, domain service를 포함한다.
- 재귀 제외 경로는
temp,.git,.venv를 사용한다.
버전/호환성 기준:
- 현재 패키지 버전:
0.1.0 - API 버전 노출은 앱 버전 설정(
app_version)을 따른다. - 최소 Python 버전:
3.11
향후 확장 포인트
- Redis 기반 cache/session 통합
- Loki logging pipeline 통합
- 추가 broker 및 order-execution adapter
- 운영/admin 확장 엔드포인트
Open Implementation Points
REQ-002태그 검색 구현 시 조회 성능 요구를 만족하는 인덱스/쿼리 전략을 확정한다.- 관측성(메트릭/로그)의 표준 이벤트 스키마를 별도 문서로 확장할지 결정한다.