- 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/*)
3.9 KiB
3.9 KiB
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 저장 실패 원인 파악
# rb10408의 메모리 저장 흐름
라우터 → State 서비스(8002) → ChromaDB
↑
문제: State 서비스 미실행
State 서비스가 없어 메모리 저장 불가능 확인.
오후 6:45 - 메시지 처리 플로우 분석
- Slack 이벤트 수신 (/slack/events)
- 3초 내 ACK 응답
- Brain으로 의도 분석
- 외부 서비스 호출
- 결과 통합 및 응답
"답변 생성중입니다..." 메시지는 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 장점
- 메모리 효율성: 55MB (목표 256MB 달성)
- 확장성: 서비스별 독립 스케일링
- 모듈화: 명확한 책임 분리
- 장애 격리: 부분 장애 시 전체 영향 최소화
rb10408 단점
- 복잡도: 여러 서비스 관리 필요
- 의존성: State 서비스 없이 작동 불가
- 네트워크 오버헤드: 서비스 간 HTTP 통신
결과
메모리 효율성
- rb10408이 13배 더 효율적 (55MB vs 745MB)
- 동일 서버에서 더 많은 인스턴스 운영 가능
안정성
- 마이크로서비스 구조로 부분 장애 대응 가능
- 단, 핵심 서비스(State) 없으면 기능 제한
운영 편의성
- rb10508: 단순하지만 리소스 많이 사용
- rb10408: 효율적이지만 복잡한 운영
해결 방안
-
즉시 조치: State 서비스 실행
cd /home/heejae/robeing-state-service docker-compose up -d -
중기 개선:
- State 서비스를 라우터에 통합 고려
- 또는 필수 서비스 헬스체크 강화
-
장기 전략:
- 핵심 기능은 내장, 부가 기능만 외부화
- 하이브리드 아키텍처 검토
교훈
- 경량화와 기능성의 균형: 너무 많이 분리하면 의존성 문제 발생
- 필수 서비스 모니터링: State 같은 핵심 서비스는 자동 실행 필요
- 문서화 중요성: 서비스 의존성 명확히 문서화
- 테스트 환경: 전체 서비스 통합 테스트 필요
작성일: 2025-08-03 18:30 - 19:00 작성자: Claude (51124 서버) 주제: rb10408 경량화 아키텍처의 장단점 및 메모리 저장 실패 원인