MongoDB๋ ๊ณ ๊ฐ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋์์ ๊ฐ์ถ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. MongoDB๋ ๋จ์ผ ๋ ธ๋๋ก๋ ์ฌ์ฉํ ์ ์์ง๋ง, ์ค๋ฌด ํ๊ฒฝ์์๋ ๋ฐ๋์ ๋ณต์ (Replica Set) ๋๋ ์ค๋ฉ(Sharded Cluster)์ ํตํด ๋ค์ค ๋ ธ๋๋ก ๊ตฌ์ฑํฉ๋๋ค.
์ด ๊ธ์์๋ MongoDB์ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ ๋ ธ๋์ ์ญํ ๊ณผ ํน์ง์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1️⃣ Replica Set ๊ตฌ์ฑ ์์ (๋ณต์ ์ )
Replica Set์ MongoDB์์ ์ฅ์ ๋ณต๊ตฌ์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ ํต์ฌ ๊ตฌ์กฐ์
๋๋ค.
ํ๋์ Primary ๋
ธ๋๋ฅผ ์ค์ฌ์ผ๋ก ์ฌ๋ฌ Secondary ๋
ธ๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ๋ฐ์ต๋๋ค.
๐ ์ฃผ์ ๋ ธ๋ ๊ตฌ์ฑ
๋ ธ๋ | ์ ํ | ์ญํ ํน์ง |
Primary | ๋ชจ๋ ์ฐ๊ธฐ ์์ ์ ๋ด๋น | ํ Replica Set์ 1๊ฐ๋ง ์กด์ฌ |
Secondary | Primary ๋ฐ์ดํฐ๋ฅผ ๋ณต์ | ์ฝ๊ธฐ ๋ถ์ฐ์ฉ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ |
Arbiter (์ ํ) | ํฌํ๋ง ์ํ | ์ ์ฅ๊ณต๊ฐ ์์, ๊ฒฝ๋ ๋ ธ๋ |
✅ ํน์ง ์ ๋ฆฌ
- Primary๊ฐ ์ฅ์ ๋๋ฉด Secondary๊ฐ ์๋์ผ๋ก ์น๊ฒฉ
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ฐ๊ธฐ๋ Primary์์๋ง ๊ฐ๋ฅ
- ์ฝ๊ธฐ๋ readPreference๋ฅผ ํตํด Secondary๋ ํ์ฉ ๊ฐ๋ฅ
- Arbiter๋ ๊ฐ๋ฒผ์ด ์๋ฒ๋ก, ํฌํ๋ง ์ฐธ์ฌํ๊ณ ๋ฐ์ดํฐ๋ ์ ์ฅํ์ง ์์
๐ง ๊ตฌ์กฐ ์์
[Primary] ↑ ↓ [Secondary1] [Secondary2] ↑ [Arbiter] (Optional)
2️⃣ Sharded Cluster ๊ตฌ์ฑ ์์ (์ค๋ฉ ํด๋ฌ์คํฐ)
Sharded Cluster๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๋๋์ด ์ ์ฅํ๊ธฐ ์ํ ๊ตฌ์กฐ์
๋๋ค.
ํํ๋ฐ์ดํธ ๊ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ํ๊ฒฝ์์ ์ํ ํ์ฅ์ ์ง์ํฉ๋๋ค.
๐ ๊ตฌ์ฑ ์์
๊ตฌ์ฑ์์ | ์ค๋ช |
Shard | ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ Replica Set (์ค์ ๋ฐ์ดํฐ ๋ณด๊ด) |
Mongos | ํด๋ผ์ด์ธํธ์ ์ค๋ ๊ฐ ์ฟผ๋ฆฌ ๋ผ์ฐํ |
Config Server | ์ค๋ ๊ตฌ์ฑ ์ ๋ณด ๋ฐ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ |
✅ ํน์ง ์ ๋ฆฌ
- ๊ฐ Shard๋ ๋ ๋ฆฝ๋ Replica Set์ผ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
- Mongos๊ฐ ํด๋ผ์ด์ธํธ์ ์ฟผ๋ฆฌ๋ฅผ ์ ์ ํ ์ค๋๋ก ์ ๋ฌ
- ์ต์ 3๊ฐ์ Config Server๋ฅผ ์ด์ํ์ฌ ๊ฐ์ฉ์ฑ ํ๋ณด
๐ง ๊ตฌ์กฐ ์์
Client
↓
[Mongos Router]
↓
------------------------------------
| | | |
Shard 1 Shard 2 Shard 3 ← ๊ฐ๊ฐ Replica Set
↓ ↓ ↓
Config Server (3๊ฐ) ← ์ค๋ฉ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
๐ง ๊ตฌ์ฑ ๋น๊ต ๋ฐ ์ ํ ๊ธฐ์ค
ํญ๋ชฉ | Replica Set | Sharded Cluster |
๋ชฉ์ | ๊ณ ๊ฐ์ฉ์ฑ, ์ฅ์ ๋ณต๊ตฌ | ์ํ ํ์ฅ, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ |
์ฐ๊ธฐ ๋ ธ๋ | 1๊ฐ (Primary) | ์ค๋๋ณ๋ก ๋ณ๋ ฌ ๊ฐ๋ฅ |
์ฝ๊ธฐ ๋ถ์ฐ | ๊ฐ๋ฅ (Secondary) | ๊ฐ๋ฅ |
๊ตฌ์ฑ ๋ณต์ก๋ | ๋ฎ์ | ๋์ |
์ฌ์ฉ ์ | ์ผ๋ฐ ์น์๋น์ค, ์ค์ํ ์๋น์ค | ๋น ๋ฐ์ดํฐ, ์ค์๊ฐ ๋ถ์, ์๋ฐฑGB ์ด์ ๋ฐ์ดํฐ |
✅ ๋ง๋ฌด๋ฆฌ ์ ๋ฆฌ
๋ ธ๋ ์ ํ | ๋ชฉ์ | ์ฅ ์ฌ๋ถ | ์ฃผ์ ํน์ง |
Primary | ์ฝ๊ธฐ/์ฐ๊ธฐ | O | ์ ์ผํ ์ฐ๊ธฐ ํ์ฉ ๋ ธ๋ |
Secondary | ๋ณต์ ๋ณธ, ์ฝ๊ธฐ | O | Primary ๋ณต์ , ์ฝ๊ธฐ ๋ถ์ฐ ๊ฐ๋ฅ |
Arbiter | ์ ์ถ ํฌํ | X | ๋ฐ์ดํฐ ์์, ๋ฆฌ์์ค ์ ์ |
Shard | ์ค์ ๋ฐ์ดํฐ ์ ์ฅ | O | ์ค๋ฉ๋ ๋ฐ์ดํฐ ๋ถ์ฐ ์ ์ฅ |
Mongos | ์ฟผ๋ฆฌ ์ค๊ณ | X | ํด๋ผ์ด์ธํธ์ ์ค๋ ๊ฐ ๋ผ์ฐํ |
Config Server | ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ | O | ์ค๋ ๊ตฌ์ฑ ๋ฐ ๋ถํฌ ์ ๋ณด ๊ด๋ฆฌ |
✨ ์ค๋ฌด ํ
- Replica Set๋ง์ผ๋ก๋ ๋๋ถ๋ถ์ ์น์๋น์ค ์ด์ ๊ฐ๋ฅ
- ๋์ฉ๋ ํธ๋ํฝ ๋ฐ ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ์๋ Sharded Cluster + Replica Set ์กฐํฉ์ด ์์ ์
- ํ ์คํธ ํ๊ฒฝ์์ --replSet ํ๋๊ทธ๋ก ์์ฝ๊ฒ Replica Set ๊ตฌ์ฑ ๊ฐ๋ฅ
- Mongos๋ Stateless์ด๋ฏ๋ก ๋ณต์๊ฐ ๋ฐฐํฌ ํ Load Balancer์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ
MongoDB๋ ๋จ์ผ ๋
ธ๋๋ก ์์ํ ์ ์์ง๋ง, ์ค๋ฌด์์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ํ๋ณดํ๋ ค๋ฉด ๋ค์ค ๋
ธ๋ ๊ตฌ์ฑ์ ํ์์
๋๋ค.
Replica Set๊ณผ Sharded Cluster์ ์ฐจ์ด๋ฅผ ์ดํดํ๋ฉด, ์ฌ๋ฌ๋ถ์ ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ํฉํ MongoDB ๊ตฌ์กฐ๋ฅผ ์ ํํ ์ ์์ ๊ฒ์
๋๋ค.