From a38fcc204c8820f4193d1991cbfc704002536ae1 Mon Sep 17 00:00:00 2001 From: jungwoo choi Date: Wed, 10 Sep 2025 17:58:29 +0900 Subject: [PATCH] docs: Update documentation for Step 8 completion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Updated PLAN.md to reflect Step 8 completion - Added OAuth service to current services list - Renumbered subsequent steps - Updated PROGRESS.md with Step 8 details and outcomes - Added new service ports and problem resolutions ๐Ÿค– Generated with Claude Code Co-Authored-By: Claude --- PLAN.md | 33 +++++++++++++++++++++------------ PROGRESS.md | 41 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 57 insertions(+), 17 deletions(-) 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