๐ ์์คํ ๊ตฌ์ฑ ๊ฐ์
๋ณธ ๋ฌธ์๋ ๋๊ท๋ชจ ๋์ ์ ์ ํ๊ฒฝ์์๋ ํฐ์ผ ์๋งค ์๋น์ค(WAS)๊ฐ ์์ ์ ์ผ๋ก ๋์ํ๋๋ก ๋ณดํธํ๊ธฐ ์ํ
๋ชจ์ ํฐ์ผํ ์๋ฎฌ๋ ์ด์ ์์คํ ์ ํต์ฌ ๊ตฌ์ฑ ์์์ ์ญํ ์ ์ ๋ฆฌํ๋ค.
๐ฏ ํต์ฌ ๋ชฉํ
- 1์ฐจ ๋ชฉํ : ๋ถ์คํธ์บ ํผ 100~200๋ช ์ ๋์์ผ๋ก ๋์ ํฐ์ผํ ์๋งค๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์๋น์ค ๋ง๋ค๊ธฐ
- 2์ฐจ ๋ชฉํ : ์์ญ๋ง๋ช
๋จ์ ๋๊ท๋ชจ ํธ๋ํฝ์ ๊ฐ๋นํ ์ ์๋ ํฐ์ผํ
์๋งค ์๋น์ค ๋ง๋ค๊ธฐ
- ๊ตญ๋ด ํฐ์ผ ์๋งค ์๋น์ค์ “ํธ๋ํฝ ํผํฌ(๋์์ ์์ ์)” ๊ท๋ชจ๋ฅผ ๋ณด๋ฉด ์ธ๊ธฐ ๊ณต์ฐ์ ๊ฒฝ์ฐ์๋ ์์ญ๋ง ๋ช ๋จ์์ ์ ์์ด ๋ชฐ๋ฆฌ๋ ๊ฒ์ผ๋ก ์์
- WAS๊ฐ ์ ๋ ํฐ์ง์ง ์๋๋ก ๋ณดํธ
- ํ์ ๋ ์์ ๋ด์์ ์ต๋ ๋์ ์ฌ์ฉ์ ์์ฉ
- ์ค์ ํฐ์ผํ ํ๊ฒฝ๊ณผ ์ ์ฌํ ํ๋ฆ ์ ๊ณต

๊ตฌ์ฑ์์
- frontend : ํ๋ก ํธ์๋
- ticket-backend : ํฐ์ผ ์๋งค ๋ฐฑ์๋ ์๋น์ค
- queue-backend : ๋๊ธฐ์ด ๋ฐฑ์๋ ์๋น์ค
- backend : ์ผ๋ฐ API ์๋ฒ
1. ๋ธ๋ผ์ฐ์ (Client)
๋ณธ ์๋น์ค์ ์ ์ํ ์ฌ์ฉ์
- ์น์๋ฒ(WS)๋ก๋ถํฐ HTML / CSS / JS ๋ฒ๋ค์ ์์
- ์ดํ ๋ชจ๋ ํ๋ฉด์ CSR(Client-Side Rendering) ๋ฐฉ์์ผ๋ก ๋ ๋๋ง
- API ์์ฒญ์ ์ง์ WAS ๋๋ ๋ฐฑ์๋ ์๋ฒ๋ก ์ ์ก
2. ์น์๋ฒ (WS)
SPA + CSR ๊ตฌ์กฐ์ ์ ์ ๋ฆฌ์์ค ์ ๊ณต ์๋ฒ
- ์ต์ด ์ง์ ์ HTML / CSS / JS ๋ฒ๋ค ์ ๊ณต
- ์ ์ ๋ฆฌ์์ค ์๋น์ ์ง์คํ์ฌ ์๋ฒ ๋ถํ ์ต์ํ
- ๋ฐํ์ SSR์ ์ง์
- ๋ฐ๋ชจ ๋จ๊ณ์์๋ React ์ฌ์ฉ
- ํฅํ ํ์ฅ ์ Next.js์ SSG / ISR ๋์ ๊ฐ๋ฅ
3. ๋๊ธฐ์ด ์๋ฒ (Queue Server)
ํฐ์ผ ์๋งค ์๋น์ค(WAS)๋ก ์ ์ ๋๋ ์ฌ์ฉ์๋ฅผ ์ ์ดํ๋ ๊ด๋ฌธ(Gate)
์ญํ
- WAS๋ก ์ง์ ๊ฐ๋ฅํ ์ฌ์ฉ์ ์๋ฅผ ์ ํํ ์ ํ
- ์ฌ์ฉ์์๊ฒ ํ์ฑ ํ ํฐ(Active Token) ๋ฐ๊ธ
- ๋๊ธฐ์ด ์ค์ผ์ค๋ง ์ํ
๋ด๋ถ ํ ๊ตฌ์กฐ(Redis)
- ๋๊ธฐ ํ (Waiting Queue)
- ์์ง ์๋งค๊ฐ ๋ถ๊ฐ๋ฅํ ์ฌ์ฉ์
- ํ์ฑ ํ (Active Queue)
- ํ์ฌ ์๋งค๋ฅผ ์งํ ์ค์ธ ์ฌ์ฉ์
- WAS๊ฐ ๋์์ ์ฒ๋ฆฌํ๋ ์ฌ์ฉ์ ์์ ๋์
ํ์ฑ ํ๋ฅผ ๋ณ๋๋ก ๋๋ ์ด์ ๋
- "์๋งค ์ค์ธ ์ฌ์ฉ์ ์๋ฅผ ์ ํํ ์ ํ"ํ๊ธฐ ์ํจ์ด๋ค.
๋์ ๋ชฉ์
- ์๊ฐ์ ์ธ ๋๋ ํธ๋ํฝ์ผ๋ก ์ธํ WAS ๊ณผ๋ถํ ๋ฐฉ์ง
- ๋คํธ์ํฌ ์์ฒญ ์ ์ค ๋ฐ ํ์์์ ๋ฌธ์ ์๋ฐฉ
- ์๋ฒ ์ฒ๋ฆฌ ๊ฐ๋ฅ ๋ฒ์๋ฅผ ์ด๊ณผํ ์์ฒญ์ ๋ฌด์ง์ํ๊ฒ ํ๋ ค๋ณด๋ด์ง ์๊ธฐ ์ํจ
4. ํฐ์ผ ์๋งค ์๋น์ค (WAS)
์ค์ "์๋งค"์ ์ง์ ์ ์ผ๋ก ์ฐ๊ด๋ ์์ฒญ๋ง ์ฒ๋ฆฌํ๋ ํต์ฌ ์๋น์ค
- ํ์ฑ ํ ํฐ์ ์ ํจ์ฑ ๊ฒ์ฆ
- ์ข์ ์ ํ, ์๋งค์ ์ ๋ณด ์ ๋ ฅ, ๊ฒฐ์ API ์ฒ๋ฆฌ
- ๊ฐํ ํธ๋์ญ์ ์ ํฉ์ฑ ์๊ตฌ
WAS๋ ๋๊ธฐ์ด ์๋ฒ๋ฅผ ํต๊ณผํ ์ฌ์ฉ์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋จ
5. ์ผ๋ฐ ๋ฐฑ์๋ ์๋ฒ
์๋งค์ ์ง์ ๊ด๋ จ ์๋ ๊ธฐ๋ฅ ์ฒ๋ฆฌ
- ๊ณต์ฐ ๋ชฉ๋ก ์กฐํ
- ์ฑํ , ์๋ฆผ, ๊ธฐํ ์ผ๋ฐ API
- ์๋งค ์๋น์ค์ ๋ถ๋ฆฌํ์ฌ ์ฅ์ ์ ํ ์ต์ํ
6. Redis Pub/Sub
๋๊ธฐ์ด ์๋ฒ ↔ ํฐ์ผ ์๋งค ์๋น์ค(WAS) ๊ฐ ์ด๋ฒคํธ ์ ๋ฌ ์๋จ
- ์๋งค ์๋ฃ ์ BOOKING_DONE ์ด๋ฒคํธ ๋ฐํ
- ๋๊ธฐ์ด ์๋ฒ๋ ์ด๋ฒคํธ ์์ ํ:
- ํ์ฑ ํ์์ ์ฌ์ฉ์ ์ ๊ฑฐ
- ๋ค์ ๋๊ธฐ ์ฌ์ฉ์๋ฅผ ํ์ฑ ํ๋ก ์ด๋
์ด๋ฅผ ํตํด ์ค์ ์ฒ๋ฆฌ ์๋ฃ ์์ ๊ธฐ์ค์ผ๋ก
์๋ก์ด ์ฌ์ฉ์๋ฅผ ์ ํํ ์์ฉํ ์ ์์
7. Redis
ํฐ์ผ ์๋งค ์๋น์ค(WAS)๊ฐ ๋น ๋ฅธ ํฐ์ผ ์๋งค ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ๋ ์ธ๋ฉ๋ชจ๋ฆฌ DB
8. RDB
์ผ๋ฐ ๋ฐฑ์๋ ์๋ฒ์์ ์ฌ์ฉํ๋ RDB
์ ์ฒด ํ๋ฆ ์์ฝ
- ์ฌ์ฉ์๋ ์น์๋ฒ(WS)์์ ์ ์ ๋ฆฌ์์ค๋ฅผ ๋ด๋ ค๋ฐ์ ์๋น์ค ์ง์
- ์๋งค ์๋ ์ ๋๊ธฐ์ด ์๋ฒ๋ก ์์ฒญ ์ด๋
- ๋๊ธฐ์ด ์๋ฒ์์ ์๋ฒ ๋๊ธฐ → ํ์ฑ ํ ํฐ ๋ฐ๊ธ
- ํ์ฑ ํ ํฐ์ ๊ฐ์ง ์ฌ์ฉ์๋ง WAS ์ ๊ทผ ๊ฐ๋ฅ
- ์๋งค ์๋ฃ ์ WAS → Redis Pub/Sub → ๋๊ธฐ์ด ์๋ฒ๋ก ์ด๋ฒคํธ ์ ๋ฌ
- ๋๊ธฐ์ด ์๋ฒ๊ฐ ๋ค์ ์ฌ์ฉ์๋ฅผ ํ์ฑํ
์ฃผ์ ๊ณ ๋ฏผ๊ณผ ์์ฌ๊ฒฐ์ ์ ๋ฆฌ
๋๊ท๋ชจ ํฐ์ผํ
์์คํ
์์ ๊ฐ์ฅ ์ค์ํ ๋ชฉํ๋ ๋จ์ํ๋ค.
“์๋ฌด๋ฆฌ ๋ง์ ์ฌ์ฉ์๊ฐ ๋์์ ๋ชฐ๋ ค๋, ์๋งค ์๋ฒ(WAS)๋ ์ ๋ ํฐ์ง์ง ์๊ฒ ํ๋ ๊ฒ”์ด๋ค.
์ด ๋ฌธ์๋ ๋ชจ์ ํฐ์ผํ ์๋ฎฌ๋ ์ด์ ์์คํ ์ ์ค๊ณํ๋ฉด์ ๋ง์ฃผํ ํต์ฌ ์ํคํ ์ฒ ๊ณ ๋ฏผ ์ง์ ๋ค๊ณผ, ๊ฐ ์ ํ์ ์ด๋ฅด๊ฒ ๋ ํ๋จ ๊ณผ์ ์ ์ ๋ฆฌํ ๊ธ์ด๋ค.
1. ๋๊ธฐ์ด์ WAS ๋ด๋ถ์ ๋ ๊ฒ์ธ๊ฐ, ์ ์ฉ ์๋ฒ๋ก ๋ถ๋ฆฌํ ๊ฒ์ธ๊ฐ
๊ฐ์ฅ ๋จผ์ ๊ณ ๋ฏผํ ๊ฒ์ ๋๊ธฐ์ด์ ์์น์๋ค.
๋๊ธฐ์ด ๋ก์ง์ ํฐ์ผ ์๋งค ์๋น์ค(WAS) ๋ด๋ถ์ ํฌํจ์ํค๋ ๋ฐฉ์์ ๊ตฌํ์ด ๊ฐ๋จํ๊ณ ๊ตฌ์กฐ๋ ๋จ์ํ๋ค.
ํ์ง๋ง ์ด ๋ฐฉ์์๋ ์น๋ช
์ ์ธ ๋ฌธ์ ๊ฐ ์๋ค.
๋๊ธฐ์ด๊ณผ ์๋งค ๋ก์ง์ด CPU / ๋ฉ๋ชจ๋ฆฌ ์์์ ๊ณต์ ํ๊ฒ ๋๋ค๋ ์ ์ด๋ค.
์๊ฐ์ ์ผ๋ก ์๋งค ์์ฒญ์ด ํญ์ฆํ๋ ์ํฉ์์๋, ์ ์ ํธ๋ํฝ์ ์ ์ดํด์ผ ํ ๋๊ธฐ์ด ๋ก์ง ์์ฒด๊ฐ ๊ณผ๋ถํ๋ก ์ ๋๋ก ๋์ํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์๊ธด๋ค.
๋๊ธฐ์ด์ ๋ณธ์ง์ ์ธ ์ญํ ์ ํธ๋ํฝ์ ์ ์ดํ๋ ๊ด๋ฌธ(Gate) ์ด๋ค.
๊ทธ ๊ด๋ฌธ์ด ๋ณดํธํด์ผ ํ ๋์(WAS)์ ๋ถํ์ ์ํฅ์ ๋ฐ๋ ๊ตฌ์กฐ๋ ์ญํ ์ ์ผ๋ก๋ ๋ง์ง ์๋ค๊ณ ํ๋จํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ๋๊ธฐ์ด์
- ํญ์ ์ด์ ์์ด์ผ ํ๊ณ
- ์๋งค ํธ๋ํฝ์ ์ํฅ์ ๋ฐ์ง ์์์ผ ํ๋ ์ ์ด ๊ณ์ธต์ด๋ฏ๋ก
=> ํฐ์ผ ์๋งค ์๋น์ค(WAS)์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ์ ์ฉ ์๋ฒ๋ก ๋๋ ๊ตฌ์กฐ๋ฅผ ์ ํํ๋ค.
2. ๋๊ธฐ์ด Queue(Redis)์ ์์น: WAS ์ง์ ์ vs ์ง์ ํ
๋ค์ ๊ณ ๋ฏผ์ ๋๊ธฐ์ด ํ๋ฅผ WAS ์์ ๋ ๊ฒ์ธ๊ฐ, ์๋๋ฉด ์ง์ ํ์ ๋ ๊ฒ์ธ๊ฐ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋๊ธฐ์ด์ ๋ชฉ์ ์ ๋ช
ํํ๋ค.
๋์์ WAS๋ก ์ง์
ํ๋ ์์ฒญ ์๋ฅผ ์ ํํ๋ ๊ฒ์ด๋ค.
์ด ๊ด์ ์์ ๋ณด๋ฉด ๋๊ธฐ์ด์ WAS ์ง์
์ง์ ์ ๋๋ ๊ฒ์ด ๊ฐ์ฅ ์์ฐ์ค๋ฌ์ด ํจํด์ด๋ค.
ํ์ง๋ง ์ด ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ์ ์ฉํ์ ๋ ๋ฌธ์ ๊ฐ ํ๋ ๋๋ฌ๋ฌ๋ค.
WAS ์๋จ์ ๋๊ธฐ์ด์ ๋๋ฉด, ํฐ์ผ ์๋งค์ ๋ฌด๊ดํ ์ผ๋ฐ ๊ธฐ๋ฅ๋ค๊น์ง ๋ชจ๋ ๋๊ธฐ์ด์ ๊ฑธ๋ฆฐ๋ค๋ ์ ์ด๋ค.
์๋ฅผ ๋ค์ด
- ๋ฉ์ธ ํ์ด์ง์ ์ฑํ
- ์ต๊ทผ ๊ณต์ฐ ๋ชฉ๋ก ์กฐํ
- ๋จ์ ์ ๋ณด ์กฐํ API
์ด๋ฐ ๊ธฐ๋ฅ๋ค๊น์ง ์๋งค ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๋ ์๊ฐ ํจ๊ป ๋งํ๊ฒ ๋๋ฉด,
์ฌ์ฉ์ ์
์ฅ์์๋ “์๋น์ค ์ ์ฒด๊ฐ ๋ฉ์ถ ๊ฒ์ฒ๋ผ” ๋ณด์ด๊ฒ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๋ค์ ๋ค์ฌ๋ค๋ณด๋, ์์ธ์ ๋๊ธฐ์ด์ ์์น๊ฐ ์๋๋ผ
ํธ๋ํฝ ํน์ฑ์ด ์์ ํ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค์ ํ๋์ ์๋ฒ์์ ์ฒ๋ฆฌํ๊ณ ์๋ค๋ ์ ์ด์๋ค.
๊ทธ๋์ ๊ฒฐ๋ก ์ ๋ค์๊ณผ ๊ฐ์๋ค.
- ๋๊ธฐ์ด์ WAS ์ง์ ์ง์ ์ ๋๋ค
- ๋์ , ์ผ๋ฐ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ API ์๋ฒ์ ํธ๋ํฝ์ด ํญ์ฆํ๋ ํฐ์ผ ์๋งค ์ ์ฉ WAS๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ๋ค
์ด๋ ๊ฒ ํจ์ผ๋ก์จ
์๋งค ํธ๋ํฝ์ด ๋ชฐ๋ ค๋ ์ผ๋ฐ ๊ธฐ๋ฅ์ ์ํฅ์ ๋ฐ์ง ์๋๋ก ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํ๋ค.
3. ํฐ์ผ ์๋งค ์๋น์ค(WAS): ๋จ์ผ ์๋ฒ vs ๋ค์ค ์๋ฒ
๋ค์์ WAS๋ฅผ ๋ช ๋๋ก ์ด์ํ ๊ฒ์ธ๊ฐ์ ๋ํ ๊ณ ๋ฏผ์ด์๋ค.
์ง๊ด์ ์ผ๋ก๋ “์๋ฒ๋ฅผ ์ฌ๋ฌ ๋๋ก ๋๋ฆฌ๋ฉด ๋ ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ง ์์๊น?”๋ผ๋ ์๊ฐ์ด ๋ค ์ ์๋ค.
ํ์ง๋ง ํฐ์ผ ์๋งค์ ๋ณ๋ชฉ ์ง์ ์ ๋ถ์ํด๋ณด๋ฉด ์ด์ผ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ค.
ํฐ์ผ ์๋งค๋ ๋ณธ์ง์ ์ผ๋ก
- ์ข์ ๋จ์ ๋ฝ
- ๊ฐํ ํธ๋์ญ์ ์ ํฉ์ฑ
- DB ์ฐ๊ธฐ ์ถฉ๋
์ด ํต์ฌ์ด๋ค.
์ฆ, ๋ณ๋ชฉ์ WAS๊ฐ ์๋๋ผ DB์ ๋ฝ๊ณผ ํธ๋์ญ์
์ฒ๋ฆฌ ๊ตฌ๊ฐ์ ์๋ค.
WAS๋ฅผ ์ฌ๋ฌ ๋๋ก ๋๋ ค๋
- ๊ฒฐ๊ตญ ๋์ผํ DB๋ฅผ ๋ฐ๋ผ๋ณด๊ฒ ๋๊ณ
- ๋ฝ ๊ฒฝํฉ์ ๋ ์ฌํด์ง ๊ฐ๋ฅ์ฑ์ด ๋๋ค
์ด ์ํฉ์์ WAS ์ํ ํ์ฅ์
์ค์ง์ ์ธ ์ฒ๋ฆฌ๋ ์ฆ๊ฐ๋ฅผ ์ป๊ธฐ ํ๋ค๋ค.
๊ทธ๋์ ์๋์ ์ผ๋ก ํฐ์ผ ์๋งค ์๋น์ค(WAS)๋ ๋จ์ผ ์๋ฒ๋ก ์ ์งํ๋ค.
โ Auto Scaling + Load Balancer๋ฅผ ๋ถ์ด๋ฉด ์ ๋ง ์๋ฏธ ์์๊น?
์ด ์ง๋ฌธ๋ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ๋ผ์๋ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด, ์์ ํ ์๋ฏธ ์์ง๋ ์๋ค.
๋ค๋ง DB ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ์ง ์๋ ํ์,
- ๋์ ์ฒ๋ฆฌ๋ ์ฆ๊ฐ ํญ์ ์ ํ์ ์ด๊ณ
- ๋ณ๋ชฉ์ ์ฌ์ ํ DB ๋ฝ ๊ตฌ๊ฐ์ ๋จ๋๋ค
์ฆ,
- DB ์ค๋ฉ
- ์ข์ ๋จ์ ๋ถํ
- ์๋งค ๋ชจ๋ธ ์์ฒด์ ์ฌ์ค๊ณ
๊ฐ์ ๋ณํ ์์ด WAS๋ง ์ฆ์คํ๋ ๊ฒ์
“์ฒด๊ฐ ์ฑ๋ฅ ๊ฐ์ ”์ผ๋ก ์ด์ด์ง๊ธฐ ์ด๋ ต๋ค๊ณ ํ๋จํ๋ค.
4. ๋๊ธฐ์ด ์๋ฒ: 1๋ vs ์ฌ๋ฌ ๋
๋ ํ๋์ ์ง๋ฌธ์ ์ด๊ฒ์ด์๋ค.
WAS์ ํ๊ณ๊ฐ ์์ด์ ๋๊ธฐ์ด์ด ํ์ํ๋ฐ,
๋๊ธฐ์ด ์๋ฒ๋ ํ๊ณ๊ฐ ์๋ค๋ฉด
๋ ๋ค๋ฅธ ๋๊ธฐ์ด์ด ํ์ํ ๊ฒ ์๋๊ฐ?
์ด ์ง๋ฌธ ์์ฒด๋ ๋
ผ๋ฆฌ์ ์ผ๋ก ํ๋นํ๋ค.
ํ์ง๋ง ํ ๋จ๊ณ์์ ๋๊ธฐ์ด ์๋ฒ๊ฐ ๋ณ๋ชฉ์ด ๋ ๋งํผ์ ํธ๋ํฝ์ ์๋๋ผ๊ณ ํ๋จํ๋ค.
์ด๊ธฐ๋ถํฐ ๋๊ธฐ์ด ์๋ฒ๋ฅผ ๋ถ์ฐ์ํค๋ฉด
- ์์คํ ๋ณต์ก๋๋ง ์ฆ๊ฐํ๊ณ
- ๋๋ฒ๊น , ์ค๋ช , ์ด์ ๋น์ฉ์ด ๊ธ๊ฒฉํ ์ปค์ง๋ค
๊ทธ๋์ ์ ํํ ์ ๋ต์
์ด๊ธฐ์๋ ๋๊ธฐ์ด ์๋ฒ 1๋ + ๊ด์ธก ๊ธฐ๋ฐ ํ์ฅ
์ฆ,
- ํฐ์ง์ง ์์ ๊ฒ์ด๋ผ๋ ๋๊ด์ ๊ธฐ๋ํ์ ์ค๊ณํ๋
- ์ค์ ๋ณ๋ชฉ์ด ๊ด์ธก๋๋ฉด ๊ทธ๋ ํ์ฅํ๋ ๊ฒ์ด๋ค.
5. ๋๊ธฐ์ด Queue ๊ธฐ์ ์ ํ: Redis
๋๊ธฐ์ด ๊ตฌํ์ ์ํ ๊ธฐ์ ๋ก๋ ์ฌ๋ฌ ์ ํ์ง๊ฐ ์์์ง๋ง,
์ต์ข
์ ์ผ๋ก Redis๋ฅผ ์ ํํ๋ค.
์ด์ ๋ ๋ช ํํ๋ค.
- In-memory ๊ธฐ๋ฐ → ๋งค์ฐ ๋น ๋ฅธ ์ ๊ทผ ์๋
- Sorted Set / Stream ๋ฑ → ๋๊ธฐ์ด ๊ตฌํ์ ์ ํฉํ ์๋ฃ๊ตฌ์กฐ
- TTL ์ง์ → ์ค๋๋ ๋๊ธฐ ๋ฐ์ดํฐ ์๋ ์ ๋ฆฌ ๊ฐ๋ฅ
๊ตฌ์ฒด์ ์ผ๋ก๋:
- Stream์ผ๋ก ์์ฐจ ์ฒ๋ฆฌ์ Consumer Group ๊ธฐ๋ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ
- Pipeline์ผ๋ก ๋คํธ์ํฌ ์๋ณต ์ต์ํ
- TTL๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
๋ฅผ ์ผ๋์ ๋๊ณ ์๋ค.
๋ฌผ๋ก Redis์ ํ๊ณ๋ ๋ช ํํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ → ์ฉ๋ ์ ํ
- ๋จ์ผ ์ค๋ ๋ → CPU ๋ณ๋ชฉ ๊ฐ๋ฅ
์ด ๋ถ๋ถ์:
- ๋ฐ์ดํฐ ์ต์ํ
- ํ์ ์ Redis Cluster / ์ค๋ฉ
- ์ฅ๊ธฐ์ ์ผ๋ก Kafka ๋ณํ ๊ฐ๋ฅ์ฑ
์ผ๋ก ๋์ํ ๊ณํ์ด๋ค.
6. ๋๊ธฐ์ด ์๋ฒ ↔ ํฐ์ผ WAS ํต์ ๋ฐฉ์
๋ ์๋ฒ ๊ฐ ํต์ ๋ฐฉ์์ผ๋ก๋
- HTTP
- WebSocket
- SSE
- ๋ฉ์์ง ํ
๋ฅผ ๊ฒํ ํ๋ค.
ํ์ํ ๊ฒ์
- ์์ฒญ-์๋ต์ด ์๋
- ๋จ๋ฐฉํฅ ์ด๋ฒคํธ
- ๋น ๋ฅธ ์ ๋ฌ
์ด์๋ค.
HTTP๋ ๊ตฌ์กฐ์ ์ผ๋ก ๋ง์ง ์์๊ณ ,
WebSocket์ ์๋ฒ ๊ฐ ํต์ ์ ๋นํด ์ฐ๊ฒฐ ๋น์ฉ์ด ๊ณผํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก
=> ๋ฉ์์ง ํ๊ฐ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ํ๋จํ๋ค.
7. ๋ฉ์์ง ํ ์ ํ: Redis Pub/Sub
๋ฉ์์ง ํ ์ค์์๋ ์ต์ข ์ ํ์ Redis Pub/Sub์ด๋ค.
BOOKING_DONE ์ด๋ฒคํธ์ ํน์ฑ์ ๋ณด๋ฉด
- ์ค์๊ฐ์ฑ์ด ๋งค์ฐ ์ค์ํ๊ณ
- ์ฝ๊ฐ์ ๋ฉ์์ง ์ ์ค์ ํ์ฉ ๊ฐ๋ฅํ๋ฉฐ
- ์ฌ์ฒ๋ฆฌ๋ ํ์ ์๋ค
์ด ํน์ฑ์ ๊ฐ์ฅ ์ ๋ง๋ ๊ฒ์ด Redis Pub/Sub์ด์๋ค.
- ์ง์ฐ ๊ฑฐ์ ์์
- ๊ตฌ์กฐ ๋จ์
- ์ด์ ๋ถ๋ด ๋ฎ์
์ฆ,
์ ๋ขฐ์ฑ๋ณด๋ค ์ค์๊ฐ์ฑ์ ์ฐ์ ํ ์ ํ์ด๋ค.
RabbitMQ, Kafka ๋ฑ์ ๋น๊ต๋
์ค๊ณ ์ค๋ช
ํ๋ฆ์ ๋ถ๋ก์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ๋ ์ ์ ํ๋ค๊ณ ํ๋จํ๋ค.
8. ํด๋ผ์ด์ธํธ ๋๊ธฐ ์ํ ํ์ธ ๋ฐฉ์
๋ง์ง๋ง์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ๋๊ธฐ ์ํ๋ฅผ ํ์ธํ๋ ๋ฐฉ์์ด๋ค.
- WebSocket์ ์ฐ๊ฒฐ ์ ์ง ๋น์ฉ์ด ํฌ๊ณ
- SSE๋ ์๋ฒ ๋จ๋ฐฉํฅ ์ด๋ฒคํธ๋ง ๊ฐ๋ฅํด ๋๊ธฐ ์๋ฒ ๊ณ์ฐ์ ์ ๋งคํ๋ค
๊ฒฐ๊ตญ ์ ํ์ Polling
๋จ์ํ์ง๋ง,
- ๊ฐ์ฅ ๋ง์ ์ฌ์ฉ์๋ฅผ
- ๊ฐ์ฅ ์์ ์ ์ผ๋ก ์์ฉํ ์ ์๋ ๋ฐฉ์์ด๋ผ๊ณ ํ๋จํ๋ค.
'โ๏ธ ์ธํ๋ผ(Devops)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋๊ท๋ชจ ํธ๋ํฝ์ ๊ฐ๋นํ๋ MSA ํฐ์ผ ์๋งค ์ํคํ ์ฒ ์ค๊ณํ๊ธฐ ( 1์ฃผ์ฐจ ) (1) | 2026.01.09 |
|---|