# 250803 rb10408 경량화 아키텍처 분석 및 문제점

## 배경

### 분석 요청
- 로컬 개발자가 rb10408과 rb10508의 차이점 분석 요청
- 메모리 저장 기능이 작동하지 않는 문제 확인
- 사용자 "이정환"의 대화 내용을 기억하지 못하는 이슈

### 시스템 환경
- 51124 서버에서 7개 컨테이너 운영 중
- rb10408: 경량화 라우터 (55.83MB)
- rb10508: 통합형 로빙 (745.3MB)

## 분석 과정

### 오후 6:30 - 서비스 상태 확인
두 서비스의 리소스 사용량 비교:
```
rb10408: 55.83MiB / 0.19% CPU (7시간 운영)
rb10508: 745.3MiB / 0.23% CPU (1시간 운영)
```

메모리 사용량에서 13배 차이 확인.

### 오후 6:35 - 아키텍처 차이 발견
**rb10408 (경량화)**:
- 라우터 기반 마이크로서비스 구조
- 외부 서비스 의존:
  - LLM 서비스 (8003)
  - State 서비스 (8002) - 미실행
  - 스킬 서비스들 (8501, 8505, 8502)

**rb10508 (통합형)**:
- 모놀리식 구조
- Gemini CLI 직접 내장
- ChromaDB 직접 관리

### 오후 6:40 - ChromaDB 저장 실패 원인 파악
```python
# rb10408의 메모리 저장 흐름
라우터 → State 서비스(8002) → ChromaDB
         ↑
         문제: State 서비스 미실행
```

State 서비스가 없어 메모리 저장 불가능 확인.

### 오후 6:45 - 메시지 처리 플로우 분석
1. Slack 이벤트 수신 (/slack/events)
2. 3초 내 ACK 응답
3. Brain으로 의도 분석
4. 외부 서비스 호출
5. 결과 통합 및 응답

"답변 생성중입니다..." 메시지는 LLM 서비스(8003)가 직접 전송.

### 오후 7:00 - 서비스 의존성 확인
실행 중인 컨테이너:
- rb10408_test (라우터)
- robeing_llm (AI 처리)
- skill-email
- skill-slack
- skill-news
- rb8001 (독립 실행)
- rb10508_test (독립 실행)

## 발견된 문제점

### 1. State 서비스 미실행
- 코드는 `/home/heejae/robeing-state-service/`에 존재
- 포트 8002 미사용
- 메모리 저장/검색 불가능

### 2. 마이크로서비스 의존성
- 한 서비스라도 없으면 기능 제한
- State 서비스 없이는 메모리 기능 전체 불가

### 3. 메모리 검색 제한 (rb10508)
- "Found 5 memories" - 최근 5개만 검색
- 오래된 대화 내용 유실

## 장단점 비교

### rb10408 장점
1. **메모리 효율성**: 55MB (목표 256MB 달성)
2. **확장성**: 서비스별 독립 스케일링
3. **모듈화**: 명확한 책임 분리
4. **장애 격리**: 부분 장애 시 전체 영향 최소화

### rb10408 단점
1. **복잡도**: 여러 서비스 관리 필요
2. **의존성**: State 서비스 없이 작동 불가
3. **네트워크 오버헤드**: 서비스 간 HTTP 통신

## 결과

### 메모리 효율성
- rb10408이 13배 더 효율적 (55MB vs 745MB)
- 동일 서버에서 더 많은 인스턴스 운영 가능

### 안정성
- 마이크로서비스 구조로 부분 장애 대응 가능
- 단, 핵심 서비스(State) 없으면 기능 제한

### 운영 편의성
- rb10508: 단순하지만 리소스 많이 사용
- rb10408: 효율적이지만 복잡한 운영

## 해결 방안

1. **즉시 조치**: State 서비스 실행
   ```bash
   cd /home/heejae/robeing-state-service
   docker-compose up -d
   ```

2. **중기 개선**: 
   - State 서비스를 라우터에 통합 고려
   - 또는 필수 서비스 헬스체크 강화

3. **장기 전략**:
   - 핵심 기능은 내장, 부가 기능만 외부화
   - 하이브리드 아키텍처 검토

## 교훈

1. **경량화와 기능성의 균형**: 너무 많이 분리하면 의존성 문제 발생
2. **필수 서비스 모니터링**: State 같은 핵심 서비스는 자동 실행 필요
3. **문서화 중요성**: 서비스 의존성 명확히 문서화
4. **테스트 환경**: 전체 서비스 통합 테스트 필요

---

작성일: 2025-08-03 18:30 - 19:00
작성자: Claude (51124 서버)
주제: rb10408 경량화 아키텍처의 장단점 및 메모리 저장 실패 원인