# 프로덕션 센터별 워크플로우 — 3-Device MCP 클러스터 아키텍처

> **버전:** v1.1 (2026-04-25, 박씨 정정)
> **철학:** 각 디바이스의 강점만 극대화, 연산은 *그 자리에서* 끝낸다
> **공식:** `핸드폰(텍스트) + 태블릿(미디어) + WSL(AI 풀스택) + Vast.ai(GPU 부스터) = 워크센터 3분할`
> **적용 레포:** dtslib-localpc, parksy-image, parksy-audio, dtslib-cloud-appstore

---

## 📌 v1.1 정정 (2026-04-25 박씨 직접 발언)

> "텍스트나 웹페이지 이런 것들은 핸드폰에서 충분히 핸드폰 연산으로 될 것 같고, 화면 녹화 진짜 내 판서 강의 같은 것들은 태블릿 안에서 연산해서 끝날 것 같다는 판단이 들어서. AI 사용해서 전부 풀스택 자동화할 때는 WSL 환경이 필요하고 경우에 따라서 베스트(Vast.ai)를 사용하는 거고. 워크센터를 이렇게 세 가지로 나눠 놓고 분산시키자."

### v1.0 → v1.1 변경 핵심

| 항목 | v1.0 (DeepSeek 초안) | v1.1 (박씨 정정) |
|---|---|---|
| WSL/PC 역할 | "양산 금지, 개발 전용" | **AI 풀스택 양산 전용 + 개발** |
| 분산 원칙 | "PC 부담 경감" | **"연산이 끝나는 자리에서 끝낸다"** |
| GPU 위치 | Cloud = MCP 버스 | Vast.ai = WSL이 호출하는 GPU 부스터 |
| 폰/태블릿 | "PC 외주" | **자율 워크센터** (단순 작업 거기서 종결) |

→ v1.0 의 "PC는 양산하지 않는다" 원칙은 **무효**. 본문 §1.C, §4, §7 전체에서 v1.1 정정 우선 적용.

---

## 0. 배경 — 왜 이 구조인가

### 문제 정의

기존 구조는 PC(WSL) 하나가 **개발 + 양산 + AI 연산을 전부 떠안았다.**

```
❌ OLD: PC 단일 과부하
┌─────────────────────────────────────────┐
│  PC (WSL)                               │
│  ├── 코드 개발/테스트                    │
│  ├── 텍스트 크롤링/요약/번역              │
│  ├── 이미지 생성/편집                     │
│  ├── 영상 편집/인코딩                    │
│  ├── TTS 음성 생성                       │
│  ├── 텔레그램 봇 상시 운영               │
│  ├── MCP 서버 호스팅                     │
│  └── AI 모델 학습/추론 (→Vast)           │
│                                         │
│  😵 CPU 100% / RAM 부족 / GPU 없음       │
│  😵 24/7 가동 → 발열 + 전기세            │
│  😵 양산 병목 = PC가 죽으면 전체 마비     │
└─────────────────────────────────────────┘
```

### 해결 방향

세 디바이스를 **각자의 강점 영역**으로 분할하고, MCP라는 공통 API 버스로 연결한다.

```
✅ NEW: 3-Device MCP 클러스터
┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│  S25 Ultra   │  │  Tab S9 5G  │  │  PC (WSL)   │
│  = 관제센터   │  │  = 미디어센터│  │  = 개발센터  │
│  (CLI/텍스트) │  │  (S펜/영상) │  │  (코드/빌드) │
└──────┬───────┘  └──────┬───────┘  └──────┬───────┘
       │                 │                 │
       └─────────┬───────┴───────┬─────────┘
                 ▼               ▼
        ┌──────────────────────────────────┐
        │        ☁️  클라우드 GPU 팜       │
        │  Vast.ai / RunPod / GCP A100     │
        │  (AI 이미지/영상/TTS/학습)        │
        └──────────────────────────────────┘
```

---

## 1. 센터별 역할 정의

### 📱 센터 A: S25 Ultra — CLI/텍스트 관제센터

| 항목 | 내용 |
|------|------|
| **물리 위치** | 손 안 / 주머니 / 어디든 |
| **코드명** | phone_claude, phone_aider (tmux) |
| **강점** | NPU 45TOPS + 12GB RAM + 5G + 이동성 |
| **약점** | 작은 화면, 배터리 한계 |
| **전원** | 배터리 + 충전기 |

#### 전담 작업 (양산)

| 작업군 | 도구 | 설명 |
|--------|------|------|
| **텍스트 처리** | Python + BERT/3B LLM | 크롤링 → 요약 → 번역 → 생성 |
| **웹 자동화** | requests + BS4 | URL 수집, RSS, 콘텐츠 파싱 |
| **Git/GitHub** | gh CLI + git | 레포 관리, 커밋, PR, 릴리즈 |
| **Claude Code** | npx @anthropic-ai/claude-code | 아키텍처 설계, 코드 리뷰, 기획 |
| **Aider + DeepSeek** | aider-chat | 저비용 코드 구현 ($0.14/M tokens) |
| **STT (Whisper)** | Whisper.cpp (NPU) | 음성 → 텍스트 변환 |
| **ffmpeg 경량** | pkg install ffmpeg | 포맷 변환, 트림, 오디오 추출 |
| **MCP 서버 배포** | railway CLI | 로컬 개발 → 클라우드 배포 |
| **파이프라인 관리** | 5-Lane tmux | 전체 워크플로우 오케스트레이션 |
| **RAG/지식 검색** | ChromaDB + LLM | 문서 검색 → 질문응답 |
| **데이터 분석** | Python + pandas | 숫자 처리, 통계, CSV/JSON |

#### 양산 조건

```
항시 온라인 (5G/WiFi)      ✅
오프라인 가능              ✅ (텍스트/STT는 로컬)
외부 이동 중 가능           ✅
배터리 없이 충전 중 운영    ✅
24/7 연속 작업             ❌ (배터리/발열)
```

---

### 📟 센터 B: Tab S9 5G — 미디어 스튜디오

| 항목 | 내용 |
|------|------|
| **물리 위치** | 책상 / 거실 / 스튜디오 |
| **코드명** | tab_claude, tab_aider (tmux) |
| **강점** | S펜 + 1600×2560 화면 + 5G |
| **약점** | RAM 7GB → GPU 추론 불가 |
| **전원** | 충전기 고정 권장 |

#### 전담 작업 (양산)

| 작업군 | 도구 | 설명 |
|--------|------|------|
| **S펜 드로잉/스케치** | 갤럭시 노트 / Sketchbook | 이미지 파이프라인 원본 입력 |
| **화면 녹화 (강의)** | 기본 화면 녹화 + S펜 필기 | 1600p 고해상도 강의 캡처 |
| **영상 컷 편집** | 갤럭시 스튜디오 or ffmpeg | 구간 자르기, 속도 조절 |
| **썸네일 제작** | 갤럭시 포토에디터 + PWA | 간단 텍스트/이미지 합성 |
| **YouTube 업로드** | MCP → YouTube API | 완성 영상 자동 업로드 |
| **PWA 대시보드** | dtslib-cloud-appstore | 큐 상태, 작업 로그 모니터링 |
| **텔레그램 모니터링** | 텔레그램 앱 | 알림 수신, 간단 명령 |
| **문서/노트 정리** | 삼성 노트 or PWA | 강의 스크립트 편집 |

#### 양산 조건

```
항시 온라인 (5G/WiFi)      ✅
오프라인 가능              ✅ (녹화/드로잉은 로컬)
S펜 필기 동시 녹화         ✅ (Tab만 가능)
24/7 연속 작업             ❌ (발열, RAM 부족)
GPU 추론                  ❌ (물리적 한계)
```

---

### 🖥️ 센터 C: PC (WSL2 + Windows) — 개발 스튜디오

| 항목 | 내용 |
|------|------|
| **물리 위치** | 책상 고정 |
| **코드명** | terminal (WSL tmux) |
| **강점** | 16GB RAM + D:1.7TB + Windows 전용 소프트웨어 |
| **약점** | GPU 없음 (UHD 620 내장), 고정형 |
| **전원** | 24/7 연결 |

#### 전담 작업 (AI 풀스택 양산 + 개발)

| 작업군 | 도구 | 설명 |
|--------|------|------|
| **AI 풀스택 자동화** | Claude Code + MCP + Vast.ai | 멀티 단계 파이프라인 양산 (이게 메인) |
| **코드 작성/리뷰** | Claude Code + Aider | 새 기능 개발, 리팩토링 |
| **로컬 테스트** | pytest / unittest | 유닛 테스트, 통합 테스트 |
| **Git 브랜치 관리** | git + gh CLI | PR 리뷰, 머지, 릴리즈 |
| **아키텍처 설계** | Claude Code | 전체 구조 설계, 의사결정 |
| **MCP 서버 개발+호스팅** | Python FastAPI | 새 MCP 툴 개발, tmux 봇 상주 |
| **Docker 이미지 빌드** | Docker CLI | 컨테이너 이미지, Railway 배포 |
| **REAPER + BBC SO** | Windows Native | MIDI 렌더링 (DAW 전용) |
| **matchering 마스터링** | matchering library | 오디오 마스터링 (CPU) |
| **FluidSynth 렌더** | FluidSynth + SF2 | MIDI → WAV 렌더링 |
| **대용량 파일 관리** | D: 1.7TB 스토리지 | 모델/데이터/백업 보관 |
| **GPU 부스터 호출** | Vast.ai SSH + ComfyUI | FLUX/WAN/학습 (필요시만) |

#### 핵심 원칙: WSL은 AI 풀스택 양산 전용

```
✅ WSL이 하는 것:
   - AI 풀스택 자동화 양산 (이게 메인)
   - 멀티 파일 리팩터링 / 28레포 광역 작업
   - MCP 서버 개발 + 호스팅 (tmux 상주)
   - 새 코드 작성/테스트/배포
   - Windows 전용 작업 (REAPER 등)
   - Vast.ai GPU 부스터 호출 (필요시)

❌ WSL이 하지 않는 것 (단말기로 분산):
   - 단순 텍스트 크롤링/요약/번역 → 핸드폰에서 종결
   - 화면 녹화/판서 강의/영상 컷 → 태블릿에서 종결
   - 단순 웹 자동화 → 핸드폰에서 종결

🎯 분산 기준: "연산이 끝나는 자리에서 끝낸다"
   → 그 디바이스 RAM/NPU 로 처리 가능하면 거기서 종결
   → WSL 까지 끌고 올 이유가 있을 때만 WSL 행
```

---

### ☁️ 센터 D: 클라우드 GPU 팜 — AI 팩토리

| 서비스 | 작업 | 비용 |
|--------|------|------|
| **Vast.ai** (RTX 4090) | FLUX.1-dev 이미지 생성 | ~$0.001/장 |
| **Vast.ai** (RTX 4090) | WAN 2.1 I2V 영상 생성 | ~$0.01/클립 |
| **RunPod** (RTX 3090) | GPT-SoVITS TTS 추론 | ~$0.002/건 |
| **RunPod** (RTX 3090) | RVC 학습/추론 | ~$0.10/10분 |
| **GCP A100** | DiffSinger 대규모 학습 | ~$2/hr |
| **Railway** | MCP 서버 상시 호스팅 | 무료 티어 |

---

## 2. MCP 통합 버스 — 센터 연결

각 센터는 MCP(모델 컨텍스트 프로토콜)로 연결된다.

```
[S25] ──HTTP/SSE──→ [Railway MCP] ←──HTTP/SSE── [Tab S9]
                      │
                      ├── Vast.ai (이미지/영상)
                      ├── RunPod (TTS/RVC)
                      ├── GCP A100 (학습)
                      ├── GitHub API (레포 관리)
                      ├── YouTube API (업로드)
                      └── Telegram API (봇/알림)
```

### MCP가 연결하는 것

| 연결 | 방향 | 프로토콜 |
|------|------|---------|
| S25 → MCP | 클라이언트 → 서버 | HTTP/SSE |
| Tab S9 → MCP | 클라이언트 → 서버 | HTTP/SSE |
| PC → MCP | 클라이언트 → 서버 | HTTP/SSE |
| MCP → Vast.ai | HTTP API | REST |
| MCP → RunPod | HTTP API | REST |
| MCP → GitHub | HTTP API | REST |
| MCP → YouTube | HTTP API | REST (OAuth) |
| MCP → Telegram | HTTP API | REST (Bot API) |

---

## 3. 병렬 워크플로우 예시

### 시나리오: "하루 업무"

```
아침 09:00
┌─────────────────────────────────────────────────────────────┐
│ S25: Claude Code로 오늘 작업 계획 수립                       │
│ S25: RSS 15채널 크롤링 → 요약 → Git push                    │
│                                                             │
│ Tab: 어제 녹화한 강의 컷 편집 시작                           │
│ PC: 새 MCP 툴 개발 중 (기능 브랜치)                          │
│ Cloud: Vast.ai에 FLUX overnight batch 완료 → 결과 반환       │
└─────────────────────────────────────────────────────────────┘

점심 12:00
┌─────────────────────────────────────────────────────────────┐
│ S25: Aider + DeepSeek으로 코드 자동 구현 중                   │
│ S25: MCP로 YouTube 업로드 큐 확인                            │
│                                                             │
│ Tab: 편집 완료 → MCP 통해서 YouTube 업로드                    │
│ PC: PR 리뷰 중                                              │
│ Cloud: RunPod에서 TTS 10건 배치 완료 → MCP로 반환            │
└─────────────────────────────────────────────────────────────┘

오후 15:00
┌─────────────────────────────────────────────────────────────┐
│ S25: 대본 3건 작성 완료 → MCP로 Tab에 전달 → 썸네일 제작      │
│ S25: 오늘 Git 커밋 전체 정리 → dev-log 업데이트               │
│                                                             │
│ Tab: 썸네일 3종 제작 완료 → MCP로 S25에 전달                  │
│ PC: 신규 MCP 서버 Railway 배포 완료                          │
└─────────────────────────────────────────────────────────────┘

저녁 19:00
┌─────────────────────────────────────────────────────────────┐
│ S25: 오늘 작업 로그 정리 → parksy-logs에 커밋                 │
│ S25: 내일 작업 큐 생성                                       │
│                                                             │
│ PC: 전원 OFF (개발 끝)                                      │
│ Tab: 충전 (내일 촬영 준비)                                   │
│ Cloud: 야간 FLUX 배치 큐 등록                                │
│ MCP: Railway에서 24/7 운영                                  │
└─────────────────────────────────────────────────────────────┘
```

### 병렬 처리 효과

| 시간대 | S25 | Tab S9 | PC | Cloud |
|--------|-----|--------|----|-------|
| 09-12 | 📝 텍스트 | 🎬 영상편집 | 💻 개발 | 🖼️ AI 생성 |
| 12-15 | 🤖 Aider | 🖼️ 썸네일 | 🔍 리뷰 | 🗣️ TTS |
| 15-18 | 📊 정리 | ✅ 업로드 | 🚀 배포 | ✅ 반환 |
| 18- | 📋 로그 | 🔌 충전 | 🔌 OFF | 🌙 야간배치 |

**최대 4개 작업 동시 진행. 생산성 3~4배.**

---

## 4. PC 부담 경감 효과

| 항목 | 전에 (PC 단일) | 제안 (3-Device) | 개선 |
|------|--------------|----------------|------|
| CPU 부하 | 80~100% 지속 | 20~30% (개발만) | **-70%** |
| RAM 사용 | 12~14GB | 6~8GB | **-50%** |
| 가동 시간 | 24/7 | 필요시만 | **-80%** |
| 양산 부담 | 텍스트+영상+AI | **0** (S25/Tab/Cloud) | **완전 해소** |
| 장애 영향 | PC 다운 = 전체 마비 | 디바이스 분산 = 국소 | **리질리언스** |

---

## 5. 디바이스 간 데이터 흐름

```
S25 ─────────────────────────────────────────────────────────
  │  scp/HTTP ──→ Tab S9: 대본/스크립트 제공
  │  git push ──→ GitHub: 코드/문서 저장
  │  MCP API ──→ Railway: 파이프라인 명령
  │  API ──→ Vast.ai: GPU 작업 요청
  │  HTTP ──→ PC: 개발 요청/결과 수신
  
Tab S9 ─────────────────────────────────────────────────────
  │  S펜 스케치 → scp ──→ S25 or GitHub
  │  영상 파일 → MCP ──→ YouTube 업로드
  │  썸네일 → scp or MCP ──→ S25 (문서 첨부)
  
PC ─────────────────────────────────────────────────────────
  │  git push ──→ GitHub: 코드/PR
  │  railway up ──→ MCP 서버 배포
  │  D: 데이터 → scp ──→ S25/Tab (필요시)
  
Cloud ──────────────────────────────────────────────────────
  │  MCP ←→ Vast.ai 이미지/영상 생성
  │  MCP ←→ RunPod TTS
  │  MCP ←→ GCP 학습
  │  결과 → MCP → S25/Tab/PC
```

---

## 6. 다이어그램 요약

```
                    ═══════════════════════════════════════
                    │          ☁️  MCP BUS (Railway)     │
                    │     dtslib-cloud-appstore           │
                    ═══════════════════════════════════════
                    │           │            │
        ┌───────────┘           │            └───────────┐
        ▼                       ▼                        ▼
┌──────────────────┐  ┌──────────────────┐  ┌──────────────────┐
│ 📱 S25 Ultra     │  │ 📟 Tab S9 5G    │  │ 🖥️ PC (WSL)    │
│ CL1/텍스트 관제   │  │ 미디어 스튜디오  │  │ 개발 스튜디오    │
│                  │  │                  │  │                 │
│ INPUT           │  │ INPUT           │  │ INPUT          │
│ ● URL/텍스트    │  │ ● S펜 스케치    │  │ ● 코드(IDE)    │
│ ● 음성(마이크)  │  │ ● 화면 녹화     │  │ ● Git/GitHub   │
│ ● Git/GitHub   │  │ ● 카메라(문서)  │  │ ● MCP 디버깅   │
│                  │  │                  │  │                 │
│ PROCESS         │  │ PROCESS         │  │ PROCESS        │
│ ● 크롤링/파싱   │  │ ● 컷 편집       │  │ ● 컴파일/테스트 │
│ ● LLM 요약/번역 │  │ ● 썸네일 제작   │  │ ● 코드 리뷰    │
│ ● Aider 코딩    │  │ ● 포맷 변환     │  │ ● 아키텍처     │
│ ● STT (Whisper) │  │ ● PWA 모니터링 │  │ ● Docker 빌드  │
│ ● 데이터 분석   │  │                  │  │ ● MCP 개발     │
│                  │  │                  │  │                 │
│ OUTPUT          │  │ OUTPUT          │  │ OUTPUT         │
│ ● 대본/문서     │  │ ● 업로드용 MP4  │  │ ● GitHub PR    │
│ ● Git 커밋      │  │ ● 썸네일 PNG   │  │ ● Railway 배포  │
│ ● MCP 명령      │  │ ● YouTube 링크 │  │ ● 설계 문서    │
│ ● 큐/일정       │  │                  │  │                 │
│                  │  │                  │  │                 │
│ ✅ 양산          │  │ ✅ 양산          │  │ ❌ 양산 금지    │
│ 🔌 배터리+충전  │  │ 🔌 충전 권장     │  │ 🔌 24/7 연결   │
│ 🌐 5G/WiFi      │  │ 🌐 5G/WiFi      │  │ 🌐 유선랜      │
└──────────────────┘  └──────────────────┘  └──────────────────┘
        │                      │                      │
        └───────────┬──────────┘          ┌───────────┘
                    ▼                     ▼
         ════════════════════════════════════════════════
         │          ☁️  클라우드 GPU 팜               │
         │  ┌──────────────────────────────────────┐  │
         │  │ Vast.ai  │ RunPod   │ GCP A100      │  │
         │  │ FLUX     │ GPT-SoVITS│ DiffSinger   │  │
         │  │ WAN 2.1  │ RVC       │ 대규모 학습  │  │
         │  │ RTX 4090 │ RTX 3090 │ A100 40GB    │  │
         │  └──────────────────────────────────────┘  │
         ════════════════════════════════════════════════
```

---

## 7. 핵심 원칙 5가지 (v1.1 정정)

```
1. 연산이 끝나는 자리에서 끝낸다 (워크센터 3분할)
   → 텍스트/웹 = 핸드폰 NPU 에서 종결
   → 화면 녹화/판서 강의 = 태블릿 자체에서 종결
   → AI 풀스택 양산 = WSL 에서 (필요시 Vast.ai 호출)

2. WSL = AI 풀스택 양산 전용 (단순 작업 안 함)
   → 단순 양산은 단말기로 분산, WSL 은 진짜 풀스택만

3. 각 디바이스는 자신의 강점만 쓴다
   → 핸드폰 = CLI/NPU/이동성, 태블릿 = S펜/큰 화면, WSL = CPU/RAM/Windows/Vast 진입점

4. MCP/Railway 는 외부 노출이 필요한 것만
   → 내부 자동화 호스팅은 WSL tmux 가 1순위, Railway 는 외부 접근용

5. Vast.ai 는 WSL 의 GPU 부스터
   → MCP 버스 아님. WSL 이 SSH 로 호출하는 일회성 GPU
```

---

*이 문서는 dtslib-localpc/docs/PRODUCTION_CENTER_WORKFLOW.md 이다.*
*관련 문서: parksy-image/docs/ON_DEVICE_WHITEPAPER.md, parksy-audio/docs/ON_DEVICE_MAXIMUM.md*
