DOCS/docs/troubleshooting/20250715_rb8001_rb10508_integration.md
happybell80 f1b7b0c1d5 Reorganize troubleshooting directory structure
- Moved 20250715_github_migration_to_local.md to docs/troubleshooting/
- Added new file 20250715_rb8001_rb10508_integration.md with integration process documentation
2025-07-16 09:44:24 +09:00

4.4 KiB

RB8001과 RB10508_test 통합 프로세스

날짜: 2025-07-15
작업자: Claude & happybell

개요

로빙(RO-BEING) 프로젝트에서 rb8001과 rb10508_test 두 시스템을 통합하여 컨테이너 기반 존재 관리 시스템을 구축하는 과정에서 발생한 문제들과 해결 방법을 기록합니다.

문제 상황

초기 목표

  • rb8001과 rb10508_test는 같은 목적이지만 코드가 다름
  • rb10508_test의 기능을 rb8001로 통합하여 8001 포트로 운영
  • 컨테이너 기반으로 레벨에 따른 동적 리소스 관리
  • 스탯/스킬/아이템 데이터는 외부 DB로 분리

발생한 문제들

문제 1: 잘못된 접근 방식

  • Task Master PRD 파싱 결과 "새로운 환경 구축"으로 진행
  • 기존 리소스 확인 없이 새 파일 생성 시도
  • /home/happybell/projects/ivada/docker-compose.yml 등 불필요한 파일 생성

문제 2: 기존 인프라 미파악

  • 서버에 이미 PostgreSQL, ChromaDB, Neo4j 설치되어 있음
  • nginx-deploy에 이미 운영 중인 설정 존재
  • 각 프로젝트별로 이미 완성된 Docker 설정 존재

해결 과정

1단계: 상황 재평가

# 기존 파일 확인
find . -name "docker-compose.yml" -o -name ".env*" -o -name "nginx*"

# 결과:
# - nginx-deploy/server-nginx-default (운영 중)
# - rb8001/docker-compose.yml
# - rb10508_test/docker-compose.yml
# - 각종 .env 파일들

발견사항:

  • nginx-deploy에서 이미 ro-being.com SSL 인증서 설정 완료
  • 현재 라우팅: / → 5173(frontend), /api/ → 8000, /rb10508/ → 10508
  • rb10508_test는 이미 완벽하게 작동하는 컨테이너와 Gitea Actions 보유

2단계: 접근 방식 변경

기존 계획 (잘못됨):

  1. 새로운 Docker Compose 환경 구축
  2. 모든 DB를 컨테이너로 설치
  3. 새로운 프로젝트 구조 생성

수정된 계획 (올바름):

  1. rb10508_test의 작동하는 코드를 rb8001로 복사
  2. 포트만 8001로 변경
  3. 서버의 기존 DB 활용 (컨테이너 X)
  4. 스킬 패키지 분리는 나중에 (작동 확인 후)

3단계: 실제 작업 수행

# 1. requirements.txt 통합
cp /home/happybell/projects/ivada/rb10508_test/requirements.txt \
   /home/happybell/projects/ivada/rb8001/requirements.txt

# 2. 확장된 디렉토리 구조 복사
cp -r rb10508_test/app/skills rb8001/app/
cp -r rb10508_test/app/stats rb8001/app/
cp -r rb10508_test/app/utils rb8001/app/

# 3. 핵심 서비스 파일 복사
cp rb10508_test/app/services/robing_brain.py rb8001/app/services/
cp rb10508_test/app/services/chroma_service.py rb8001/app/services/
cp rb10508_test/app/services/gemini_service.py rb8001/app/services/
cp rb10508_test/app/services/slack_service.py rb8001/app/services/

# 4. Gitea Actions 설정 복사
cp -r rb10508_test/.gitea rb8001/

4단계: Docker Compose 수정

rb8001/docker-compose.yml 수정:

  • 컨테이너 이름: robeing-8001
  • 포트 매핑: 8001:8000
  • network_mode: host (서버 DB 접근용)
  • 환경변수에 ROBING_ID=8001 추가
  • PostgreSQL 컨테이너 제거 (서버 DB 사용)

주요 교훈

1. 기존 리소스 먼저 확인

  • 새로 만들기 전에 반드시 기존 파일과 설정 확인
  • ls, find, cat 명령으로 현재 상태 파악

2. 단계적 접근의 중요성

  • "작동하는 시스템" 먼저 만들기
  • 그 다음에 리팩토링과 개선 진행
  • 스킬 패키지 분리 같은 큰 변경은 나중에

3. 서버 환경 이해

  • Docker는 애플리케이션만 (DB는 서버에 직접 설치)
  • network_mode: host로 서버 리소스 접근
  • 포트 충돌 주의 (8001은 ROBING_ID와 일치)

다음 단계

  1. Gitea Actions 포트 변경: 10508 → 8001
  2. nginx 설정 추가: /rb8001/ 라우팅 추가
  3. 컨테이너 빌드 및 배포 테스트
  4. 정상 작동 확인 후 스킬 패키지 분리 작업

참고 명령어

# 컨테이너 빌드 및 실행
cd rb8001
docker compose up -d --build

# 헬스체크
curl http://localhost:8001/health

# 로그 확인
docker compose logs -f robeing-8001

# Gitea Actions 수동 실행
# Gitea 웹 UI에서 Actions 탭 → Run workflow

관련 파일

  • /home/happybell/projects/ivada/rb8001/docker-compose.yml
  • /home/happybell/projects/ivada/rb8001/.gitea/workflows/cicd.yml
  • /home/happybell/projects/ivada/nginx-deploy/server-nginx-default
  • Task Master 작업: .taskmaster/tasks/tasks.json