- 100-600 번호 체계로 문서 재구성 (Part-Chapter-Section) - 철학과 배경, 핵심 설계, 기술 아키텍처, 성장과 진화, 비즈니스와 미래, 부록으로 구분 - 새로운 챕터 추가: 기억-감정-윤리 삼각형, DID 기반 정체성, 스카웃 시스템 등 - 프로젝트 종합 v3로 업데이트: 핵심 철학 섹션 추가, 현재 상태 반영 - README.md 전면 개편: 책 목차 기반 구조 반영 - 구버전 문서는 _archive로 이동, troubleshooting은 유지
85 lines
2.9 KiB
Markdown
Executable File
85 lines
2.9 KiB
Markdown
Executable File
# Skillhub 마이크로서비스 아키텍처 설계
|
|
|
|
## 개요
|
|
이 문서는 로빙의 스킬 시스템을 HTTP API 기반 마이크로서비스로 구성하는 아키텍처를 설명합니다. 각 스킬은 독립된 마이크로서비스로 배포되어 로빙 본체와 HTTP 통신을 통해 상호작용하며, 리소스 효율성과 확장성을 동시에 달성합니다.
|
|
|
|
## 핵심 설계 원칙
|
|
1. 모든 스킬은 독립된 FastAPI 기반 마이크로서비스로 개발되어 Docker 컨테이너로 배포됩니다.
|
|
2. 스킬 간 통신은 표준화된 HTTP REST API를 통해 이루어지며, JSON 기반 요청/응답을 사용합니다.
|
|
3. 각 스킬은 독립된 컨테이너에서 실행되어 의존성 충돌과 장애 전파를 방지합니다.
|
|
4. 로빙 본체는 스킬 레지스트리를 통해 사용 가능한 스킬 목록과 엔드포인트를 관리합니다.
|
|
5. 100개의 로빙이 1개의 스킬 서비스를 공유하여 리소스 효율성을 극대화합니다.
|
|
|
|
## 마이크로서비스 구조
|
|
```
|
|
로빙 본체 (Container)
|
|
│
|
|
├─[HTTP API]→ skill-email:8501
|
|
├─[HTTP API]→ skill-news:8505
|
|
├─[HTTP API]→ skill-pdf:8502 (계획)
|
|
├─[HTTP API]→ skill-calendar:8503 (계획)
|
|
└─[HTTP API]→ skill-digest:8504 (계획)
|
|
```
|
|
|
|
각 스킬 서비스는:
|
|
- FastAPI로 구현된 REST API 제공
|
|
- 표준화된 /execute 엔드포인트
|
|
- Pydantic 모델 기반 요청/응답 검증
|
|
- 독립적인 로깅 및 모니터링
|
|
|
|
## API 표준화
|
|
모든 스킬 서비스는 다음 표준을 따릅니다:
|
|
```python
|
|
# 요청
|
|
POST /execute
|
|
{
|
|
"user_id": "string",
|
|
"robeing_id": "string",
|
|
"params": {...} # 스킬별 파라미터
|
|
}
|
|
|
|
# 응답
|
|
{
|
|
"success": bool,
|
|
"data": {...}, # 스킬별 결과
|
|
"error": "string" # 실패 시
|
|
}
|
|
```
|
|
|
|
## 현재 구현 상태
|
|
### 완료된 스킬 서비스
|
|
1. **skill-email (8501)**: Gmail API 연동, 이메일 읽기/전송
|
|
- 독립 마이크로서비스로 완전 분리
|
|
- Nginx 리버스 프록시 설정 완료
|
|
|
|
2. **skill-news (8505)**: 뉴스 수집 및 요약
|
|
- Google News API 연동
|
|
- 자동 요약 기능
|
|
|
|
### 계획 중인 스킬
|
|
1. **skill-digest (8504)**: Thread 대화 요약
|
|
2. **skill-pdf (8502)**: PDF 파싱 및 변환
|
|
3. **skill-calendar (8503)**: 캘린더 연동 및 일정 관리
|
|
|
|
## 배포 및 운영
|
|
### 배포 구조
|
|
- 모든 스킬은 Docker 컨테이너로 패키징
|
|
- docker-compose를 통한 일괄 배포
|
|
- 51124 서버에서 모든 스킬 서비스 실행
|
|
- Nginx를 통한 리버스 프록시 설정
|
|
|
|
### 스킬 레지스트리
|
|
로빙 본체는 사용 가능한 스킬 목록을 다음과 같이 관리:
|
|
```python
|
|
SKILL_REGISTRY = {
|
|
"email": "http://skill-email:8501",
|
|
"news": "http://skill-news:8505",
|
|
# 추가 스킬...
|
|
}
|
|
```
|
|
|
|
### 확장성
|
|
- 새로운 스킬 추가 시 독립된 서비스로 개발
|
|
- 기존 스킬에 영향 없이 배포 가능
|
|
- 스킬별 독립적인 스케일링 가능
|