1. Inventory (์ฌ๊ณ ๊ด๋ฆฌ) ๋๋ฉ์ธ
ํต์ฌ ํค์๋: ๋์์ฑ ์ ์ด, ๋๊ด์ ๋ฝ(Optimistic Lock), Redisson ๋ถ์ฐ ๋ฝ, Connection Pool ๊ณ ๊ฐ ๋ฐฉ์ง
[๋์ ๋ฐฐ๊ฒฝ ๋ฐ ๋ฌธ์ ์ํฉ]
- ์ฃผ์ ํน์ฑ์ ํน์ ์๊ฐ๋์ ๋ค์์ ์์ฒญ์ด ๋ชฐ๋ฆผ.
- ์ด๊ธฐ์๋ DB ์์ค์ ๋๊ด์ ๋ฝ์ ํตํด ๋์์ฑ์ ์ ์ดํ๊ณ ์ ํ์.
- ๊ทธ๋ฌ๋ ํธ๋ํฝ ์ง์ค ์ ์ฆ์ DB ๋ฒ์ ์ถฉ๋์ด ๋ฐ์ํ๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ์๋ ๋ก์ง์ด ๋ฐ๋ณต๋๋ฉด์ ๊ฒฐ๊ตญ DB ์ปค๋ฅ์ ํ ๊ณ ๊ฐ ๋ฐ ์ ์ฒด์ ์ธ ์ฑ๋ฅ ์ ํ ๋ฌธ์ ๋ก ์ด์ด์ง.
[๋น์ฆ๋์ค ๋ก์ง ๋ฐ ๊ธฐ์ ์ ํ]
- ์ฌ๊ณ ๋น์ฆ๋์ค ๋ฃฐ: ์ ์ฃผ ์ค์ ์ ๋ฐ๋ผ ํ์ฌ ์ผ์ผ ์ฌ๊ณ (current_daily_stock)๋ฅผ ์ผ์ผ ํ๋(daily_limit) ๊ฐ์ผ๋ก ์ด๊ธฐํํ๊ณ , ์์ฝ ์๋น์ค๋ก๋ถํฐ ์ฌ๊ณ ์ฐจ๊ฐ ์์ฒญ์ด ์ฌ ๋๋ง๋ค ํ๋งค๋ ๋งํผ ์ฐจ๊ฐํ๋ ๊ตฌ์กฐ๋ก ํ๋ฆฝํจ.
- Redisson ๋ถ์ฐ ๋ฝ ๋์ : DB ๋ฝ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ๋ถ์ฐ ์๋ฒ ํ๊ฒฝ์์ ์์ ํ๊ฒ ๋จ์ผ ์ค๋ ๋๋ง ์ฌ๊ณ ๋ฅผ ์ฐจ๊ฐํ๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด Redis ๊ธฐ๋ฐ ๋ฝ์ ์ ํ. ๊ทธ์ค์์๋ Redis Pub/Sub ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ ๋์ค์ ๊ฐํด์ง๋ ์์คํ ๋ถํ๋ฅผ ์ต์ํํ ์ ์๋ Redisson์ ์ต์ข ์ฑํํจ.
[ํธ๋ฌ๋ธ์ํ ๋ฐ ๊ฒฐ๊ณผ]
- ๋น์ฆ๋์ค ๋ก์ง ์ํ ์ Redisson ๋ฝ์ ํ๋ํ๋๋ก ๊ตฌํํ์ฌ ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ.
- ๊ฒฐ๊ณผ์ ์ผ๋ก DB ์ปค๋ฅ์ ํ ๊ณ ๊ฐ ํ์์ ๋ฐฉ์งํ๊ณ , ๋๊ท๋ชจ ํธ๋ํฝ ์ฒ๋ฆฌ ์์๋ ์์ ์ ์ผ๋ก ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ ์งํ๋ ํต์ฌ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํจ.
2. Order (์ฃผ๋ฌธ ์ฒ๋ฆฌ) ๋๋ฉ์ธ
ํต์ฌ ํค์๋: MSA, Kafka, ๋น๋๊ธฐ ์ด๋ฒคํธ, Outbox ํจํด, ๋ฉฑ๋ฑ์ฑ, ๋ณด์ ํธ๋์ญ์
[๋์ ๋ฐฐ๊ฒฝ ๋ฐ ๋ฌธ์ ์ํฉ]
- ์ด๊ธฐ ์ค๋ ์๋น์ค๋ ํ ์๋น์ค(์ธ๋ฒคํ ๋ฆฌ ๋ฑ)์ FeignClient๋ฅผ ํ์ฉํ ๋๊ธฐ์ ํต์ ์ผ๋ก ์ฐ๋๋์ด ์์์.
- ์ด๋ก ์ธํด ํ ์๋น์ค์ ์ง์ฐ์ด๋ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ์ค๋ ์๋น์ค๊น์ง ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ๊ณ ์ฅ์ ๊ฐ ์ ํ๋๋ ๊ฐ๊ฒฐํฉ ๋ฌธ์ ๊ฐ ๋ฐ์ํจ.
[ํด๊ฒฐ ๊ณผ์ ๋ฐ ์ฝ๋ ๋ณ์ฒ์ฌ]
- v1 (๋๊ธฐ ํธ์ถ): FeignClient๋ฅผ ํตํ ๋๊ธฐ ํธ์ถ. ์ฅ์ ์ ํ ๋ฌธ์ ํ์ธ.
- v2 (Kafka ๋์ ๋ฐ ๋น๋๊ธฐ ์ ํ): ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด Kafka ๊ธฐ๋ฐ ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ตฌ์กฐ๋ก ์ ํ. ์ด ๊ณผ์ ์์ ์นดํ๋ก๊ทธ ์๋น์ค ์ชฝ์ผ๋ก ํธ๋ํฝ ๋ถํ๊ฐ ์ฎ๊ฒจ๊ฐ๋ 'ํ์ ํจ๊ณผ'๊ฐ ๋ฐ์ํ์ผ๋, ์นดํ๋ก๊ทธ ์๋น์ค์ Redis ์บ์๋ฅผ ์ฐ๋ํ์ฌ ๋ฐฉ์ดํจ.
- v3 (Outbox ํจํด ๋์ ): ๋น๋๊ธฐ ํ๊ฒฝ์์์ ์ด๋ฒคํธ ๋ฐํ ๋ณด์ฅ๊ณผ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ํ๋ณด๋ฅผ ์ํด Outbox ํจํด๊ณผ ์ค์ผ์ค๋ฌ ํด๋ง ๋ฐฉ์์ ๋์ ํจ. DB ํธ๋์ญ์ ๊ณผ ๋ฉ์์ง ๋ฐํ์ ์์ ํ๊ฒ ๋ถ๋ฆฌํจ.
- v4 (๋ฉฑ๋ฑ์ฑ ๋ฐ ๋ณด์ ํธ๋์ญ์ ): ์ต์ข ์ ์ผ๋ก ๋ฉ์์ง ์ค๋ณต ์์ ์ด๋ ์ ์ค ๋ฐฉ์ง๋ฅผ ์ํ ๋ฉฑ๋ฑ์ฑ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ๊ณ , ์์ ์คํจ ์ ์ํ๋ฅผ ๋กค๋ฐฑํ๋ ๋ณด์ ํธ๋์ญ์ ์ค๊ณ๋ฅผ ์ถ๊ฐํ์ฌ ์์คํ ์์ ์ฑ์ ๊ทน๋ํํจ.
3. Catalog (์นดํ๋ก๊ทธ/์ํ ์กฐํ) ๋๋ฉ์ธ
ํต์ฌ ํค์๋: CQRS, ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ชจ๋ธ ๋ถ๋ฆฌ, ์ต์ข ์ผ๊ด์ฑ, ๋ ๋ฆฝ์ ์ค์ผ์ผ ์์
[๋์ ๋ฐฐ๊ฒฝ ๋ฐ ๋ฌธ์ ์ํฉ]
- ๋ฏธ์๋ ํ๋ซํผ ํน์ฑ์, ์ฌ์ฉ์๋ค์ ์๋น ์กฐํ(Read) ํธ๋ํฝ์ด ์ค์ ์์ฝ/์ฃผ๋ฌธ(Write) ํธ๋ํฝ๋ณด๋ค ์๋์ ์ผ๋ก ๋์.
- ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ๋, ์ฃผ๋ฌธ ์์ฑ์ด๋ ์ฌ๊ณ ์ฐจ๊ฐ ์ ๋ฐ์ํ๋ ๋ฌด๊ฑฐ์ด ํธ๋์ญ์ ๋ฝ์ด ์นดํ๋ก๊ทธ ์กฐํ ์ฟผ๋ฆฌ๊น์ง ๋๊ธฐํ๊ฒ ๋ง๋ค์ด ์ฌ๊ฐํ ์กฐํ ์ง์ฐ(๋ณ๋ชฉ ํ์)์ด ์ฐ๋ ค๋จ.
[ํด๊ฒฐ ๊ณผ์ ๋ฐ ๊ธฐ์ ์ ํ]
- CQRS (Command and Query Responsibility Segregation) ๋์ : ์ธ๋ฒคํ ๋ฆฌ ๋ฐ ์ค๋ DB์ ๋ถํ๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๋ช ๋ น(Command/Write) ๋ชจ๋ธ๊ณผ ์กฐํ(Query/Read) ๋ชจ๋ธ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ฒฝํ ๋ถ๋ฆฌํจ.
- ๋น๋๊ธฐ ๋ฐ์ดํฐ ๋๊ธฐํ: ์๋น ์ ๋ณด๋ ์ฌ๊ณ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์๊ธฐ๋ฉด Kafka ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๊ณ , ์นดํ๋ก๊ทธ ์๋น์ค๊ฐ ์ด๋ฅผ ๊ตฌ๋ ํ์ฌ ์กฐํ ์ ์ฉ ๋ชจ๋ธ์ ๋น๋๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํ๋ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํจ.
- ๊ฒฐ๊ณผ: ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ์ต์ข ์ผ๊ด์ฑ์ ์ ์งํ๋ฉด์, ์กฐํ ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๋ ์นดํ๋ก๊ทธ ์๋น์ค๋ง ๋ ๋ฆฝ์ ์ผ๋ก ์ค์ผ์ผ ์์ ํ ์ ์๋ ์ ์ฐํ ์ํคํ ์ฒ๋ฅผ ์์ฑํจ.
'ํ๋ก์ ํธ ํ๊ณ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํค์๋์ ๋ฆฌ] Omin_be : ๊ฒฐ์ ์์คํ ์ ์์ ์ฑ๊ณผ ์ฃผ์ ๋ฐ์ดํฐ ์ ๊ทํ (0) | 2026.04.15 |
|---|---|
| 1. ์คํ๋ง - Omin (0) | 2026.03.13 |