SpecVital Architecture
Overview
SpecVital은 GitHub 리포지토리의 테스트 파일을 분석하고 시각화하는 플랫폼.
┌─────────────────────────────────────────────────────────────────────────────────┐
│ SpecVital Platform │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────┐ ┌────────────────────────────┐ │ │
│ │ │ web │ │ worker (repository) │ │ │
│ │ │ │ │ │ │ │
│ │ │ API + │ │ ┌──────────┐ ┌─────────┐ │ │ │
│ │ │Dashboard│ │ │ Analyzer │ │Scheduler│ │ │ │
│ │ └────┬────┘ │ └────┬─────┘ └─────────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ ▼ │ │ │
│ │ │ │ ┌────────┐ │ │ │
│ │ │ │ │ core │ (Library) │ │ │
│ │ │ │ └────────┘ │ │ │
│ │ │ └───────┬────────────────────┘ │ │
│ │ │ │ │ │
│ │ └───────────────────┬───────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────────────┐ │ │
│ │ │ PostgreSQL │ │ │
│ │ │ (Data + River Queue) │ │ │
│ │ └──────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘Repositories
core
역할: Tree-sitter 기반 테스트 파서 엔진
| 항목 | 내용 |
|---|---|
| 언어 | Go |
| 유형 | Library |
| 소비자 | worker |
worker
역할: 분석 워커 (analyzer, spec-generator)
| 항목 | 내용 |
|---|---|
| 언어 | Go |
| 의존성 | core, infra (PostgreSQL) |
Data Flow
┌─────────┐ ┌─────────┐
│ User │ │ User │
└────┬────┘ └────▲────┘
│ 1. Request │ 6. View
▼ │
┌─────────────────────────────────────────────────────────────────────────────┐
│ Web Service │
│ │
│ ┌─────────┐ 2. Enqueue 3. Consume ┌───────────┐ │
│ │ web │──────────────────────────────────────────────────▶│ worker │ │
│ │ (API) │ │ (Analyzer)│ │
│ └────┬────┘ └─────┬─────┘ │
│ │ │ │
│ │ 5. Read Results 4. Parse (core) │ │
│ │ │ │
│ │ ┌────────────────────────────┐ │ │
│ └───────────▶│ PostgreSQL │◀────────────────────┘ │
│ │ (Data + River Queue) │ │
│ └────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘흐름:
- 사용자가 GitHub URL로 분석 요청
- web이 River 큐(PostgreSQL)에 작업 등록
- worker (analyzer)가 River에서 작업 수신
- worker가 core로 테스트 파싱 후 결과 저장
- web이 DB에서 결과 조회
- 사용자에게 시각화된 결과 표시
Deployment
배포 플랫폼
| 서비스 | 플랫폼 |
|---|---|
| PostgreSQL | Neon |
| web-backend | Railway |
| web-frontend | Vercel |
| worker-analyzer | Railway |
| worker-scheduler | Railway |
확장성
| Service | 확장성 | 비고 |
|---|---|---|
| web | 수평 확장 | Stateless |
| worker (Analyzer) | 수평 확장 | Stateless, 병렬 처리 |
| worker (Scheduler) | 단일 인스턴스 | Cron 작업 |
