๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€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.
๋น„๋™๊ธฐ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜(Saga)์˜ ๋ฉฑ๋“ฑ์„ฑ, ๋ฉ”์‹œ์ง€ ์ˆœ์„œ ์—ญ์ „(Out-of-Order) ํ•ด๊ฒฐ๊ธฐ ๋ถ„์•ผ: MSA, Event-Driven Architecture, Saga Pattern, Idempotency, Kafka Partition Key Routing๊ด€๋ จ ํŒŒ์ผ: OrderCommandService.java , OrderEventConsumer.java1. ๋ฐœ๋‹จ: ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์—์„œ ๋ฐœ๊ฒฌ๋œ '์‹œ๊ฐ„์ฐจ ์—ฃ์ง€ ์ผ€์ด์Šค'์ฃผ๋ฌธ ์ƒ์„ฑ ํŠธ๋žœ์žญ์…˜์„ ๋น„๋™๊ธฐ Saga ํŒจํ„ด(Kafka)์œผ๋กœ ๋ถ„๋ฆฌํ•œ ํ›„, ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์˜ˆ์™ธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•จ. ๊ทธ์ค‘ "์œ ์ €์˜ ๊ธฐ์Šต ์ทจ์†Œ" ์ƒํ™ฉ์—์„œ ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ๋ฐœ๊ฒฌํ•จ[์‹œ๋‚˜๋ฆฌ์˜ค ํƒ€์ž„๋ผ์ธ]์œ ์ €๊ฐ€ ์ฃผ๋ฌธ์„ ์š”์ฒญํ•˜์—ฌ ์ƒํƒœ๊ฐ€ PENDING(๋Œ€๊ธฐ)์ด ๋จ.์œ ์ €๊ฐ€ ๋ณ€์‹ฌํ•˜์—ฌ ์ฆ‰์‹œ ์ฃผ๋ฌธ ์ทจ์†Œ(cancelOrder)๋ฅผ ์š”์ฒญํ•จ. ์ƒํƒœ๋Š” CANCELED๊ฐ€ ๋˜๊ณ , ๊นŽ์˜€์„์ง€ ๋ชจ๋ฅผ ์žฌ๊ณ ๋ฅผ .. 2026. 5. 25.
๋Œ€๊ทœ๋ชจํŠธ๋ž˜ํ”ฝ ํ”„๋กœ์ ํŠธ ํ‚ค์›Œ๋“œ์ •๋ฆฌ 1. Inventory (์žฌ๊ณ  ๊ด€๋ฆฌ) ๋„๋ฉ”์ธํ•ต์‹ฌ ํ‚ค์›Œ๋“œ: ๋™์‹œ์„ฑ ์ œ์–ด, ๋‚™๊ด€์  ๋ฝ(Optimistic Lock), Redisson ๋ถ„์‚ฐ ๋ฝ, Connection Pool ๊ณ ๊ฐˆ ๋ฐฉ์ง€[๋„์ž… ๋ฐฐ๊ฒฝ ๋ฐ ๋ฌธ์ œ ์ƒํ™ฉ]์ฃผ์ œ ํŠน์„ฑ์ƒ ํŠน์ • ์‹œ๊ฐ„๋Œ€์— ๋‹ค์ˆ˜์˜ ์š”์ฒญ์ด ๋ชฐ๋ฆผ.์ดˆ๊ธฐ์—๋Š” DB ์ˆ˜์ค€์˜ ๋‚™๊ด€์  ๋ฝ์„ ํ†ตํ•ด ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๊ณ ์ž ํ–ˆ์Œ.๊ทธ๋Ÿฌ๋‚˜ ํŠธ๋ž˜ํ”ฝ ์ง‘์ค‘ ์‹œ ์žฆ์€ DB ๋ฒ„์ „ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์žฌ์‹œ๋„ ๋กœ์ง์ด ๋ฐ˜๋ณต๋˜๋ฉด์„œ ๊ฒฐ๊ตญ DB ์ปค๋„ฅ์…˜ ํ’€ ๊ณ ๊ฐˆ ๋ฐ ์ „์ฒด์ ์ธ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฌธ์ œ๋กœ ์ด์–ด์ง.[๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ ๊ธฐ์ˆ  ์„ ํƒ]์žฌ๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋ฃฐ: ์ ์ฃผ ์„ค์ •์— ๋”ฐ๋ผ ํ˜„์žฌ ์ผ์ผ ์žฌ๊ณ (current_daily_stock)๋ฅผ ์ผ์ผ ํ•œ๋„(daily_limit) ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์˜ˆ์•ฝ ์„œ๋น„์Šค๋กœ๋ถ€ํ„ฐ ์žฌ๊ณ  ์ฐจ๊ฐ ์š”์ฒญ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ํŒ๋งค๋œ.. 2026. 5. 21.