๐Ÿ“ฆ MongoDB ๋…ธ๋“œ๋ณ„ ๊ตฌ์„ฑ์š”์†Œ ๋ฐ ํŠน์ง• ์™„๋ฒฝ ์ •๋ฆฌ

  

 

MongoDB๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋™์‹œ์— ๊ฐ–์ถ˜ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. MongoDB๋Š” ๋‹จ์ผ ๋…ธ๋“œ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค๋ฌด ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ๋ณต์ œ(Replica Set) ๋˜๋Š” ์ƒค๋”ฉ(Sharded Cluster)์„ ํ†ตํ•ด ๋‹ค์ค‘ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” MongoDB์˜ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ๋…ธ๋“œ์˜ ์—ญํ• ๊ณผ ํŠน์ง•์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1️⃣ Replica Set ๊ตฌ์„ฑ ์š”์†Œ (๋ณต์ œ์…‹)

Replica Set์€ MongoDB์—์„œ ์žฅ์•  ๋ณต๊ตฌ์™€ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ํ•ต์‹ฌ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
ํ•˜๋‚˜์˜ Primary ๋…ธ๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์—ฌ๋Ÿฌ Secondary ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œ๋ฐ›์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ์ฃผ์š” ๋…ธ๋“œ ๊ตฌ์„ฑ

๋…ธ๋“œ์œ ํ˜•์—ญํ•  ํŠน์ง•
Primary๋ชจ๋“  ์“ฐ๊ธฐ ์ž‘์—…์„ ๋‹ด๋‹นํ•œ Replica Set์— 1๊ฐœ๋งŒ ์กด์žฌ
SecondaryPrimary ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œ์ฝ๊ธฐ ๋ถ„์‚ฐ์šฉ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
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 SetSharded Cluster
๋ชฉ์ ๊ณ ๊ฐ€์šฉ์„ฑ, ์žฅ์•  ๋ณต๊ตฌ์ˆ˜ํ‰ ํ™•์žฅ, ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
์“ฐ๊ธฐ ๋…ธ๋“œ1๊ฐœ (Primary)์ƒค๋“œ๋ณ„๋กœ ๋ณ‘๋ ฌ ๊ฐ€๋Šฅ
์ฝ๊ธฐ ๋ถ„์‚ฐ๊ฐ€๋Šฅ (Secondary)๊ฐ€๋Šฅ
๊ตฌ์„ฑ ๋ณต์žก๋„๋‚ฎ์Œ๋†’์Œ
์‚ฌ์šฉ ์˜ˆ์ผ๋ฐ˜ ์›น์„œ๋น„์Šค, ์ค‘์†Œํ˜• ์„œ๋น„์Šค๋น…๋ฐ์ดํ„ฐ, ์‹ค์‹œ๊ฐ„ ๋ถ„์„, ์ˆ˜๋ฐฑGB ์ด์ƒ ๋ฐ์ดํ„ฐ

✅ ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ

๋…ธ๋“œ ์œ ํ˜•๋ชฉ์ ์žฅ ์—ฌ๋ถ€์ฃผ์š” ํŠน์ง•
Primary์ฝ๊ธฐ/์“ฐ๊ธฐO์œ ์ผํ•œ ์“ฐ๊ธฐ ํ—ˆ์šฉ ๋…ธ๋“œ
Secondary๋ณต์ œ๋ณธ, ์ฝ๊ธฐOPrimary ๋ณต์ œ, ์ฝ๊ธฐ ๋ถ„์‚ฐ ๊ฐ€๋Šฅ
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 ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.



๋‹ค์Œ ์ด์ „