๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ222 ์์ ๋ฐฐ์น ์ค์ผ์ค๋ฌ ์คํ ์ค ๋ฐ์ํ๋ ์บ์ ์ฌ์ค์ผ(Stale Data) ๋ฐฉ์ง ๋ฐ ๋ถ์ฐ ๋ฝ ์ ์ด ๋ถ์ผ: MSA, Batch Processing, Cache Consistency (Stale Data), Distributed Lock (ShedLock), Race Condition๊ด๋ จ ํ์ผ: CatalogVisibilityScheduler.java, ShedLockConfig.java1. ๋ฐ๋จ: ์กฐํ ์ฑ๋ฅ ์ต์ ํ์ ์์ ๋ฐฐ์น ์ค์ผ์ค๋ฌ ๋์ ์นดํ๋ก๊ทธ ์๋น์ค๋ ์ปค๋จธ์ค ๋ฉ์ธ ํ๋ฉด์ ๋๊ท๋ชจ ์กฐํ ํธ๋ํฝ์ ๊ฐ๋นํ๊ธฐ ์ํด ์ํ ๋ชฉ๋ก์ Redis์ ์บ์ฑ(products_cache)ํ์ฌ ์ ๊ณตํ๊ณ ์์์.๋ํ ๋งค์ผ ์์ (00:00:00), ์ํ์ ๋ ธ์ถ ์ํ(isVisible)๋ฅผ ์ผ๊ด ๋๊ธฐํํ๋ ๋ฐฐ์น ์ค์ผ์ค๋ฌ(CatalogVisibilityScheduler)๊ฐ ๊ตฌ๋๋จ.์ด๊ธฐ ์ค๊ณ์์๋ DB ์ ๋ฐ์ดํธ ์ ์บ์๋ฅผ ์ด๊ธฐํํ๊ธฐ .. 2026. 6. 30. ์กฐํ ๋ชจ๋ธ(Read Model)์ ๊ฐ์์ฑ ์ฒ๋ฆฌ ์ ๋ต: ์ค์๊ฐ ๋ฐ์ vs ์์ ๋ฐฐ์น์ Trade-off์ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ ๊ตฌ์ถ ๋ถ์ผ: MSA, CQRS Pattern, Read Model Optimization, Performance Tuning, Hybrid Visibility Strategy๊ด๋ จ ํ์ผ: ProductViewCommandService.java, ProductViewRepository.java, StockEventConsumer.java, DailyStockResetEvent.java1. ๋ฐ๋จ: ์กฐํ ์๋น์ค(Catalog)์ '๊ฐ์์ฑ ๋ณด์ฅ'๊ณผ 'I/O ๋ถํ'์ ๋๋ ๋งCQRS ํจํด์ ๋ฐ๋ผ ์นดํ๋ก๊ทธ ์๋น์ค๋ ์ค๋/์ธ๋ฒคํ ๋ฆฌ์ ๋๋ฉ์ธ ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ ํ์ฌ ์กฐํ ์ ์ฉ ๋ฐ์ดํฐ์ (MongoDB)์ ์ค์๊ฐ์ผ๋ก ๋๊ธฐํํ๊ณ ์์์. ํ์ง๋ง ๋๊ท๋ชจ ํธ๋ํฝ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํ์ ๋, ์์คํ ์ ๊ตฌ์กฐ์ ๋ณ๋ชฉ ์์์ด ๊ฐ์ง๋จ๊ธฐ์กด ๊ตฌ์กฐ์ ๋ณ๋ชฉ: ์.. 2026. 6. 5. ๋จ์ผ ํ ํฝ ํ๊ฒฝ์์์ ๋ฉ์์ง ๋ถ๊ธฐ ์ฒ๋ฆฌ: Envelope DTO ํจํด vs ๋คํ์ฑ ๋ผ์ฐํ (@KafkaHandler) ๋ถ์ผ: Spring Kafka, Message Routing, Payload Design๊ด๋ จ ํ์ผ: OrderEventConsumer.java1. ๋ฐฐ๊ฒฝ: ํ ํฝ ํตํฉ์ผ๋ก ์ธํ ์๋ณ ๋ฌธ์ ์ง์ ์, ์นดํ์นด ๋ฉ์์ง ์์ ์ญ์ (Out-of-Order) ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ธ๋ฒคํ ๋ฆฌ ์๋น์ค๋ก ํฅํ๋ ๋ ๊ฐ์ง ๋ช ๋ น(์ฌ๊ณ ์ฐจ๊ฐ, ์ฌ๊ณ ๋ณต๊ตฌ)์ ๊ฐ๋ณ ํ ํฝ์์ ๋จ์ผ ํ ํฝ(inventory.command)์ผ๋ก ํตํฉํจ๋ฌธ์ ๋ ํ ํฝ์ด ํ๋๋ก ํฉ์ณ์ง๋ฉด์, ์ธ๋ฒคํ ๋ฆฌ ์๋น์ค์ ์ปจ์๋จธ๊ฐ "์ง๊ธ ๋ค์ด์จ ๋ฉ์์ง๊ฐ ์ฐจ๊ฐ ๋ช ๋ น์ธ์ง ๋ณต๊ตฌ ๋ช ๋ น์ธ์ง ์ด๋ป๊ฒ ๊ตฌ๋ถํ ๊ฒ์ธ๊ฐ?" ์ ๋ํ ์์ด๋์ด๊ฐ ์ ๋ ์ค๋ฅด์ง ์์์...2. ๊ณ ๋ฏผ: ์ ํต์ ์ธ Envelope(๋ดํฌ) ํจํด์ ํ๊ณ๊ฐ์ฅ ๋จผ์ ๋ ์ฌ๋ฆฐ ํด๊ฒฐ์ฑ ์ ๋ ๊ฐ์ฒด๋ฅผ ํ๋๋ก ๊ฐ์ธ๋ ๊ฑฐ๋ํ '๋ดํฌ(Envelop.. 2026. 6. 2. ์ด์ 1 2 3 4 ยทยทยท 74 ๋ค์