DOCS/journey/troubleshooting/251110_robeing_state_service_마이그레이션_완료.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동
- book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서)
- 빈 폴더 제거 (journey/assets/*)
2025-11-17 14:06:05 +09:00

3.6 KiB

robeing-state-service 마이그레이션 및 레거시 제거 완료

날짜: 2025-11-10
작성자: Claude Code (51124 서버)
관련 파일:

  • rb8001/app/brain/state_client.py
  • skill-slack/app/core/config.py
  • skill-slack/docker-compose.yml
  • robeing-monitor/tests/test_state_migration.py

배경

robeing-state-service(8507)는 2025-08 경량화 마이크로서비스 시도 중 생성되었으나 실제로는 제대로 실행·연동되지 않았고, 2025-09-20 Stats API 일원화 작업으로 robeing-monitor(9024)가 공식 상태 관리 서비스로 지정되었다.

문제점:

  • robeing-state-service: 2개월간 미실행 상태 (Exited)
  • rb8001, skill-slack: 여전히 8507 포트 참조
  • 중복된 코드베이스 유지 관리 부담

참고 문서:

  • troubleshooting/250803_claude_rb10408경량화분석.md
  • troubleshooting/250920_stats_api_unification_complete.md

작업 내용

1. robeing-monitor 테스트 작성

위치: robeing-monitor/tests/

파일:

  • test_state_migration.py: Health Check, Stats 조회/업데이트, Conversation Log 검증
  • README.md: 테스트 실행 가이드

검증 항목:

  • GET /healthz: 200 OK
  • GET /api/stats/rb8001: Stats 조회 정상
  • PUT /api/stats/rb8001: Stats 업데이트 정상
  • POST /api/logs/{id}/conversation: 선택 기능

2. rb8001 포트 변경

파일: rb8001/app/brain/state_client.py:17

변경:

# Before
self.base_url = os.getenv('STATE_SERVICE_URL', 'http://localhost:8507')

# After
self.base_url = os.getenv('STATE_SERVICE_URL', 'http://localhost:9024')

3. skill-slack 포트 변경

파일 1: skill-slack/app/core/config.py:21-22

STATE_SERVICE_URL: str = "http://localhost:9024"
MEMORY_SERVICE_URL: str = "http://localhost:9024"

파일 2: skill-slack/docker-compose.yml:16-17

- STATE_SERVICE_URL=http://localhost:9024
- MEMORY_SERVICE_URL=http://localhost:9024

4. 레거시 제거

삭제:

  • /home/admin/ivada_project/robeing-state-service/ 폴더
  • Docker 컨테이너 robing_state (a10c8d751bbd)

테스트 결과

실행: cd robeing-monitor/tests && python3 test_state_migration.py

결과: 4개 테스트 모두 통과

  • Health Check: PASS
  • Stats 조회: PASS (memory=16, compute=12, ...)
  • Stats 업데이트: PASS (memory 16→17 확인)
  • Conversation Log: PASS (선택 기능)

커밋 이력

  • robeing-monitor: 9b51af2 (테스트 추가)
  • rb8001: 7a82a35 (8507→9024 전환)
  • skill-slack: 503b8d5 (8507→9024 전환)

교훈

레거시 서비스 방치 비용

  • 2개월간 미사용 서비스 코드베이스 유지
  • 개발자 혼란 초래 (어떤 서비스 사용해야 하는지)
  • 불필요한 포트 점유 및 문서 유지 비용

교훈: 서비스 교체 결정 시 즉시 레거시 제거 및 참조 업데이트 필요. 방치된 서비스는 기술 부채로 누적된다.

테스트 코드 중요성

  • 마이그레이션 전 API 호환성 검증으로 안전한 전환
  • robeing-monitor/tests/ 폴더로 향후 회귀 테스트 기반 마련
  • 자동화된 검증으로 수동 확인 부담 제거

교훈: 서비스 통합·마이그레이션 시 테스트 코드 우선 작성으로 리스크 최소화.

문서화의 가치

  • 과거 문서(250803, 250920)로 robeing-state-service 생성 배경 파악
  • 의사결정 근거 추적 가능
  • 불필요한 재작업 방지

교훈: 모든 아키텍처 변경과 서비스 교체는 문서화하여 미래 의사결정 지원.


작성: Claude Code, 2025-11-10
검증: 테스트 통과, 3개 리포지토리 푸시 완료