TekaPicker MSA 아키텍처 설계
TekaPicker를 MSA + gRPC + Kubernetes 환경으로 구성하기 위한 설계 가이드
1. 전체 아키텍처 개요
[Frontend (React + Vite + TypeScript)]
↓ HTTPS
[API Gateway (NestJS)]
↓ gRPC
[User Service] - 사용자 관리
[Meal Service] - 메뉴, 태깅, 선택
[Storage Service] - 냉장/냉동/가져가기
[History Service] - 기록/선호도
[DB] PostgreSQL (또는 GPDB)
[Search] Elasticsearch (선택)
[Queue] Kafka (선택)
2. 서비스 구성
API Gateway
- 역할: HTTPS 통신 처리, 인증 및 라우팅
- 기술스택: NestJS + @grpc/microservices
User Service
- 기능: 회원가입 및 인증, 사용자 정보, 시급 계산
- DB: PostgreSQL
Meal Service
- 기능: 끼니별 메뉴 조회 및 선택, 태깅 처리
- 로직: 주메뉴/반메뉴/음료 조합 조건 처리 포함
Storage Service
- 기능: 메뉴 보관 위치 기록 (냉장/냉동/집), 퇴근시 상태 변경
History Service
- 기능: 선택한 메뉴 이력, 선호도 기록, 캘린더/주간 뷰 제공
3. 기술 요소
- NestJS Microservices: 각 서비스는 NestJS 기반 gRPC 서버로 구성
- gRPC: API Gateway와 각 서비스 간 통신
- PostgreSQL: 기본 저장소로 활용
- Elasticsearch (선택): 메뉴 검색, 필터 등 고속 조회에 활용 가능
- Kafka (선택): 메뉴 선택/보관 등 이벤트 처리
- Kubernetes: 서비스 배포 및 운영
4. 개발 순서 (우선순위 기반)
- 태깅 및 메뉴 선택 기능
- UserService + MealService + Frontend 메뉴 선택 뷰
- 아내 계정 생성 및 선호도 기록
- UserService 확장 + 선호도 입력 UI
- 냉장/냉동 보관 상태 처리
- 기록 조회 기능
- HistoryService + Calendar/Weekly View
5. 권장 개발 방법
- 기능 단위로 프론트 + 백엔드를 페어 개발
- Swagger 또는 Postman으로 API 문서 병행
- proto 파일 기반 gRPC 명세 우선 설계
- 최소 단위부터 배포 테스트 → 점진적 확장
6. 향후 확장 아이디어
- 추천 메뉴 기능 (선호도 기반 추천 알고리즘)
- Slack/카카오톡 알림 봇 연동
- 점심 예측 API (사용자 패턴 기반)