docs(troubleshooting): robeing-state-service 마이그레이션 완료
- robeing-state-service(8507) → robeing-monitor(9024) 전환 - rb8001, skill-slack 포트 변경 - 테스트 코드 작성 및 검증 완료 - 레거시 서비스 폴더 및 컨테이너 삭제 - 교훈: 레거시 즉시 제거, 테스트 우선 작성, 문서화 필수
This commit is contained in:
parent
cc0e5cf6df
commit
8a92422229
126
troubleshooting/251110_robeing_state_service_마이그레이션_완료.md
Normal file
126
troubleshooting/251110_robeing_state_service_마이그레이션_완료.md
Normal file
@ -0,0 +1,126 @@
|
||||
# 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`
|
||||
|
||||
**변경**:
|
||||
```python
|
||||
# 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`
|
||||
```python
|
||||
STATE_SERVICE_URL: str = "http://localhost:9024"
|
||||
MEMORY_SERVICE_URL: str = "http://localhost:9024"
|
||||
```
|
||||
|
||||
**파일 2**: `skill-slack/docker-compose.yml:16-17`
|
||||
```yaml
|
||||
- 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개 리포지토리 푸시 완료
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user