- 모든 .md, .html 파일 권한을 644로 정상화 - .gitignore 파일 권한도 644로 수정 - 문서 파일에 실행 권한은 불필요하고 보안상 바람직하지 않음 - deprecated 아이디어 폴더 생성 및 레벨별 UI 변경 아이디어 이동
2.9 KiB
2.9 KiB
Skillhub 마이크로서비스 아키텍처 설계
개요
이 문서는 로빙의 스킬 시스템을 HTTP API 기반 마이크로서비스로 구성하는 아키텍처를 설명합니다. 각 스킬은 독립된 마이크로서비스로 배포되어 로빙 본체와 HTTP 통신을 통해 상호작용하며, 리소스 효율성과 확장성을 동시에 달성합니다.
핵심 설계 원칙
- 모든 스킬은 독립된 FastAPI 기반 마이크로서비스로 개발되어 Docker 컨테이너로 배포됩니다.
- 스킬 간 통신은 표준화된 HTTP REST API를 통해 이루어지며, JSON 기반 요청/응답을 사용합니다.
- 각 스킬은 독립된 컨테이너에서 실행되어 의존성 충돌과 장애 전파를 방지합니다.
- 로빙 본체는 스킬 레지스트리를 통해 사용 가능한 스킬 목록과 엔드포인트를 관리합니다.
- 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 표준화
모든 스킬 서비스는 다음 표준을 따릅니다:
# 요청
POST /execute
{
"user_id": "string",
"robeing_id": "string",
"params": {...} # 스킬별 파라미터
}
# 응답
{
"success": bool,
"data": {...}, # 스킬별 결과
"error": "string" # 실패 시
}
현재 구현 상태
완료된 스킬 서비스
-
skill-email (8501): Gmail API 연동, 이메일 읽기/전송
- 독립 마이크로서비스로 완전 분리
- Nginx 리버스 프록시 설정 완료
-
skill-news (8505): 뉴스 수집 및 요약
- Google News API 연동
- 자동 요약 기능
계획 중인 스킬
- skill-digest (8504): Thread 대화 요약
- skill-pdf (8502): PDF 파싱 및 변환
- skill-calendar (8503): 캘린더 연동 및 일정 관리
배포 및 운영
배포 구조
- 모든 스킬은 Docker 컨테이너로 패키징
- docker-compose를 통한 일괄 배포
- 51124 서버에서 모든 스킬 서비스 실행
- Nginx를 통한 리버스 프록시 설정
스킬 레지스트리
로빙 본체는 사용 가능한 스킬 목록을 다음과 같이 관리:
SKILL_REGISTRY = {
"email": "http://skill-email:8501",
"news": "http://skill-news:8505",
# 추가 스킬...
}
확장성
- 새로운 스킬 추가 시 독립된 서비스로 개발
- 기존 스킬에 영향 없이 배포 가능
- 스킬별 독립적인 스케일링 가능