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