diff --git a/PLAN.md b/PLAN.md index 382a955..cff9edc 100644 --- a/PLAN.md +++ b/PLAN.md @@ -20,11 +20,12 @@ - [x] Step 6: JWT 인증 시스템 - [x] Step 6.5: Images 서비스 통합 - [x] Step 7: Kafka 이벤트 시스템 +- [x] Step 8: OAuth 2.0 인증 시스템 및 프로필 기능 ## 진행 예정 단계 ### Phase 2: 이벤트 기반 시스템 확장 -#### Step 8: 고급 이벤트 처리 +#### Step 9: 고급 이벤트 처리 - [ ] 이벤트 소비자 구현 - Console에서 user-events 토픽 구독 - 알림 서비스 이벤트 처리 @@ -32,51 +33,51 @@ - [ ] 이벤트 재시도 메커니즘 - [ ] 이벤트 스키마 레지스트리 -#### Step 9: 태스크 큐 시스템 +#### Step 10: 태스크 큐 시스템 - [ ] Kafka 기반 백그라운드 작업 처리 - [ ] 이미지 프로세싱 작업 큐 - [ ] 이메일 전송 큐 - [ ] 배치 작업 스케줄러 ### Phase 3: 고급 기능 -#### Step 10: 실시간 기능 +#### Step 11: 실시간 기능 - [ ] WebSocket 통합 (Console) - [ ] 실시간 알림 시스템 - [ ] 온라인 사용자 상태 추적 - [ ] 실시간 데이터 동기화 -#### Step 11: 파일 시스템 +#### Step 12: 파일 시스템 - [ ] 파일 업로드 서비스 - [ ] S3 호환 객체 스토리지 (MinIO) - [ ] 파일 메타데이터 관리 - [ ] 썸네일 생성 서비스 -#### Step 12: 검색 시스템 +#### Step 13: 검색 시스템 - [ ] Elasticsearch 통합 - [ ] 전문 검색 기능 - [ ] 자동완성 기능 - [ ] 검색 분석 및 최적화 ### Phase 4: 프로덕션 준비 -#### Step 13: 모니터링 및 로깅 +#### Step 14: 모니터링 및 로깅 - [ ] Prometheus 메트릭 수집 - [ ] Grafana 대시보드 - [ ] ELK Stack 로깅 - [ ] 분산 추적 (Jaeger) -#### Step 14: 보안 강화 +#### Step 15: 보안 강화 - [ ] Rate Limiting - [ ] API Key 관리 - [ ] OAuth2 통합 - [ ] 데이터 암호화 -#### Step 15: 테스트 및 CI/CD +#### Step 16: 테스트 및 CI/CD - [ ] 단위 테스트 작성 - [ ] 통합 테스트 - [ ] E2E 테스트 - [ ] GitHub Actions CI/CD -#### Step 16: 성능 최적화 +#### Step 17: 성능 최적화 - [ ] 데이터베이스 인덱싱 - [ ] 쿼리 최적화 - [ ] 캐싱 전략 개선 @@ -93,24 +94,32 @@ - User CRUD - MongoDB 저장소 - Kafka 이벤트 발행 + - 프로필 정보 관리 (사진, bio, location 등) 3. **Images Service** - 이미지 프록시 - 캐싱 시스템 - WebP 변환 +4. **OAuth Service** + - OAuth 2.0 인증 서버 + - 애플리케이션 등록 및 관리 + - 토큰 발급 및 검증 + - SSO 지원 (Google, GitHub, SAML) + - 스코프 기반 권한 관리 + ### 계획된 서비스 -4. **Notification Service** +5. **Notification Service** - 이메일/SMS 전송 - 푸시 알림 - 알림 히스토리 -5. **Analytics Service** +6. **Analytics Service** - 사용자 행동 분석 - 비즈니스 메트릭 - 리포트 생성 -6. **Payment Service** +7. **Payment Service** - 결제 처리 - 구독 관리 - 청구서 생성 diff --git a/PROGRESS.md b/PROGRESS.md index 66c693b..df778d9 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -48,12 +48,31 @@ - Users 서비스에 이벤트 발행 기능 추가 - aiokafka 통합 +### Step 8: OAuth 2.0 인증 시스템 및 프로필 기능 ✅ +- OAuth 2.0 서비스 구현 + - Authorization Code, Client Credentials, Refresh Token 플로우 + - 애플리케이션 등록 및 관리 (CRUD) + - 토큰 introspection 및 revocation + - PKCE 지원 +- SSO 설정 지원 + - Google, GitHub, SAML 프로바이더 설정 + - 도메인 기반 접근 제어 +- 스코프 시스템 구현 + - 실용적인 스코프 카테고리 (기본 인증, 사용자, 앱, 조직, API) + - picture 스코프 추가 (프로필 사진 접근) +- Users 서비스 프로필 기능 확장 + - 프로필 사진 및 썸네일 필드 + - bio, location, website 필드 + - 이메일 인증 및 계정 활성화 상태 +- Docker 통합 완료 (포트 8003) + ## 현재 실행 중인 서비스 - **Console Frontend**: http://localhost:3000 - **Console Backend**: http://localhost:8011 -- **Users Service**: Internal (Console 통해 접근) +- **Users Service**: http://localhost:8001 - **Images Service**: http://localhost:8002 +- **OAuth Service**: http://localhost:8003 - **MongoDB**: localhost:27017 - **Redis**: localhost:6379 - **Kafka**: localhost:9092 @@ -61,17 +80,22 @@ ## 다음 단계 (예정) -### Step 8: 고급 이벤트 처리 +### Step 9: 고급 이벤트 처리 - 이벤트 소비자 구현 - 이벤트 기반 워크플로우 - 에러 처리 및 재시도 로직 -### Step 9: 고급 기능 +### Step 10: 태스크 큐 시스템 +- Kafka 기반 백그라운드 작업 처리 +- 이미지 프로세싱 작업 큐 +- 이메일 전송 큐 + +### Step 11: 고급 기능 - 실시간 알림 (WebSocket) - 파일 업로드 시스템 - 검색 기능 (Elasticsearch) -### Step 10: 프로덕션 준비 +### Step 12: 프로덕션 준비 - 로깅 시스템 (ELK Stack) - 모니터링 (Prometheus/Grafana) - CI/CD 파이프라인 @@ -92,6 +116,8 @@ ```env COMPOSE_PROJECT_NAME=site11 CONSOLE_BACKEND_PORT=8011 +USERS_BACKEND_PORT=8001 +OAUTH_BACKEND_PORT=8003 JWT_SECRET_KEY=your-secret-key-change-in-production-12345 KAFKA_BOOTSTRAP_SERVERS=kafka:9092 ``` @@ -102,6 +128,9 @@ KAFKA_BOOTSTRAP_SERVERS=kafka:9092 2. **npm ci 실패**: package-lock.json 부재 → npm install로 변경 3. **포트 충돌**: 8000 포트 사용 중 → Console을 8011로 변경 4. **WebP 변환 문제**: 검정색 이미지 출력 → convert_to_webp 임시 비활성화 +5. **httpx 미사용 import**: OAuth 서비스 초기 구현시 불필요한 import → 제거 +6. **Kafka producer 파라미터 오류**: max_in_flight_requests_per_connection → 제거 +7. **Users 서비스 포트 누락**: docker-compose.yml에 포트 매핑 추가 ## 컨텍스트 복구 정보 @@ -113,4 +142,6 @@ Claude가 재시작되면 이 정보를 참조: - 문서 형식: 모든 마크다운 파일은 대문자 (CLAUDE.md, PLAN.md, PROGRESS.md) - Console 서비스가 중앙 API Gateway 역할 - Kafka를 메인 이벤트 시스템으로 사용 -- Redis는 캐싱 전용 \ No newline at end of file +- Redis는 캐싱 전용 +- OAuth 2.0 서비스로 인증/인가 관리 +- 모든 서비스는 독립적으로 배포 가능 \ No newline at end of file