๐Clustering
ํด๋ฌ์คํฐ๋ง์ ์ฌ๋ฌ ๋์ ์๋ฒ(๋๋ ๋
ธ๋)๋ฅผ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ํ๋์ ์์คํ
์ฒ๋ผ ๋์ํ๋๋ก ๊ตฌ์ฑํ๋ ๊ธฐ์ ์
๋๋ค. ์ด๋ฌํ ํด๋ฌ์คํฐ๋ง์ Active & Active ๋ฐฉ์๊ณผ Active & StandBy ๋ฐฉ์์ด ์๋ค.
- ๊ณ ๊ฐ์ฉ์ฑ(High Availability): ํ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋ฒ๊ฐ ๋์ฒดํ์ฌ ์๋น์ค ์ค๋จ์ ์ต์ํ.
- ๋ก๋ ๋ฐธ๋ฐ์ฑ(Load Balancing): ์์ฒญ์ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ์์ผ ์ฑ๋ฅ์ ํฅ์.
- ๋ถ์ฐ ํ๊ฒฝ์ ๊ตฌ์ฑํ์ฌ Single point of failure์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ Fail Over ์์คํ
์ ๊ตฌ์ถํ๊ธฐ ์ํด์ ์ฌ์ฉ
- ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ
Single point of failure(๋จ์ผ ์ฅ์ ์ ,SPOF)
์์คํ
๊ตฌ์ฑ ์์ ์ค์์, ๋์ํ์ง ์์ผ๋ฉด ์ ์ฒด ์์คํ
์ด ์ค๋จ๋๋ ์์๊ฐ ์ด์คํ๊ฐ ๋์ด ์์ง ์๋ค๋ฉด SPOF์ผ ๊ฐ๋ฅ์ฑ ๋์
Fail over
์ค ์ด์ฉํ๊ฒฝ(์ปดํจํฐ ์๋ฒ, ์์คํ
, ๋คํธ์ํฌ) ๋ฑ์์ ์ด์์ด ์๊ฒผ์ ๋, ๋์ฒด ์๋ ๋๋ ์ฅ์ ๊ทน๋ณต(์กฐ์น)์ ์ํด ์๋น ์ด์ฉํ๊ฒฝ์ผ๋ก ์๋์ ํ๋๋ ๊ธฐ๋ฅ
Active & Active

- ์๋ฒ ํ๋๊ฐ ์ฃฝ๋๋ผ๋ ํ๋์ ์๋ฒ๊ฐ ๋์ํ๊ณ ์์ด์ ์๋น์ค์ ํฐ ๋ฌธ์ X
- ๋ค๋ฅธ ์๋ฒ๊ฐ ๋์ํ๋ ๋์ ๋ณต๊ตฌ๋ฅผ ํ์ฌ ์๋น์ค์ ์ค๋จ ์์
- ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐํด์ง๋ ๋ถํ๊ฐ ๋๊ฐ๋ก ๋๋ ์ง๋ฏ๋ก CPU, Memory ๋ถํ๋ ์ค์ด๋ฆ
- ์ฌ๋ฌ ๊ฐ์ ์๋ฒ๊ฐ ํ๋์ ์คํ ๋ฆฌ์ง ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ณ๋ชฉํ์ ๋ฐ์
Active & Stand-By

- Active ์ํ์ ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ Fail over๋ฅผ ํ์ฌ Stand-by ์๋ฒ๋ฅผ Active๋ก ์ ํํ์ฌ ๋ฌธ์ ์ ๋์
- Fail over๊ฐ ๋ฐ์ํ๋ ์๊ฐ๋์์๋ ์๋น์ค๊ฐ ์ค๋จ๋ ์ ๋ฐ์ ์์
- ๊ฒฐ๋ก ์ ์ผ๋ก ํ ๋๋ง ์ด์ -> ํจ์จ์ Active&Active์ ์ ๋ฐ
- ๋น์ฉ์ด ์ ๋ ด (standby๋ ์ค์ ๋ก ์ด์ฉ๋์ง ์๊ธฐ ๋๋ฌธ)
๐Replication
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฆฌํ๋ฆฌ์ผ์ด์
(Replication)์ด๋ ๋ง ๊ทธ๋๋ก ๋ณต์ ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ์๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Master, ๋ณต์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Slave๋ผ๊ณ ๋ถ๋ฅธ๋ค. Slave ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Master ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต์ (Replication)ํ์ฌ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.

- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํ ๋ฆฌ์ง ๋ณต์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ํ์ฅํ Clustering๊ณผ ๋ฌ๋ฆฌ ์๋ฒ์ ์คํ ๋ฆฌ์ง ๋ชจ๋ ํ์ฅ
- ์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ๊ถํ์ ๋ฐ๋ผ ์์ง์ ์ธ ๊ตฌ์กฐ(Master-Slave)๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
- Master : INSERT, UPDATE, DELETE
- Slave : SELECT
- Slave ์๋ฒ ์ฌ๋ฌ๊ฐ๋ฅผ ํตํด ๋ถ์ฐํ์ฌ ์ฒ๋ฆฌํ ์ ์์ด ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ ํ์, ์ ์ด๋ Slave๊ฐ ์์๋ฒ์
- ๋น๋๊ธฐ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๋๊ธฐํํ๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ์๋ ๋ฐ์ดํฐ ์ป์ง ๋ชป ํ ์ ์์
- ๋๊ธฐ ๋ฐฉ์์ผ๋ก Replicationํ ์ ์์ง๋ง, ์๋๊ฐ ๋๋ ค์ง
- Master ์๋ฒ๊ฐ ๋ค์ด๋๋ฉด ๋ณต๊ตฌ ๋ฐ ๋์ฒ ๊น๋ค๋ก์
ํ์ฌ๋ master-slave ๋จ์ด๋ฅผ ์์ฐ๋ ์ถ์ธ์ธ ๋งํผ source-replica ๊ตฌ์กฐ๋ก ๋ถ๋ฆฌ๊ธฐ๋ ํจ.
๊ตฌ์ถ ๋ชฉ์
- ์ค์ผ์ผ ์์
- ๊ฐ์๊ธฐ ๋์ด๋๋ ํธ๋ํฝ์ ๋ํด ๋ถํ๋ฅผ ์ค์ด๊ธฐ ์ํด ์๋ฒ๋ฅผ ๋๋ฆฌ๋ ๊ฒ
- ๋ฐ์ดํฐ ๋ฐฑ์
- ๋ฐฑ์
๊ณผ์ ์ ์ค์ ์คํ์ค์ธ ์ฟผ๋ฆฌ์ ์ํฅ์ ์ค ์ ์๋ค.
- => ๋ ํ๋ฆฌ์นด ์๋ฒ์์ ๋ฐ์ดํฐ ๋ฐฑ์
์ ์งํ
- ๋ฐ์ดํฐ ๋ถ์
- ๋ฐ์ดํฐ ๋ถ์์ ๊ฒฝ์ฐ, ๋๋์ ๋ฐ์ดํฐ ์กฐํ, ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ๋ง์ ์ ์๋ค.
- ์์ค ์๋ฒ์์ ๋ฐ์ดํฐ ๋ถ์์ ํ ๊ฒฝ์ฐ, ์ค์ ์๋น์ค์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
- => ๋ฐ์ดํฐ ๋ถ์ ์ ๋ด ์๋ฒ๋ฅผ ๋๋ ๊ฒ์ด ์ข๋ค.
- ๋ฐ์ดํฐ์ ์ง๋ฆฌ์ ๋ถ์ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋ค๋ฉด ๋น ๋ฅธ ์๋ต์ ๋ฐ๊ธฐ ์ด๋ ต๋ค.
- ๋ค์ํ ์ง์ญ์ ๋ ํ๋ฆฌ์นด ์๋ฒ๋ฅผ ๋์ด ์๋ต ์๋๋ฅผ ๋์ผ ์ ์๋ค.
โป Replication ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ฌธ์
https://da-nyee.github.io/posts/db-replication-data-consistency-issue/
๐Sharding
๊ฐ์ ํ
์ด๋ธ ์คํค๋ง๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ ๋ฐฉ๋ฒ. ํ
์ด๋ธ์ ํน์ ๊ธฐ์ค์ผ๋ก ๋๋ ์ ์ ์ฅ ๋ฐ ๊ฒ์
- Sharding Key : ๋๋ ์ง Shard ์ค ์ด๋ค shard๋ฅผ ์ ํํ ์ง ๊ฒฐ์ ํ๋ ํค, ๊ฒฐ์ ๋ฐฉ์์ ๋ฐ๋ผ Sharding ๋ฐฉ๋ฒ์ด ๋๋์ด์ง

Hash Sharding

- Shard Key : Database id๋ฅผ Hashing ํ์ฌ ๊ฒฐ์
- Hashํฌ๊ธฐ๋ Cluster์์ ์๋ Node๊ฐ์๋ก ์ ํ๊ฒ ๋จ
- ๊ตฌํ์ด ๊ฐ๋จํ๋ค(key-value)
- ํ์ฅ์ฑ์ด ๋จ์ด์ง๋ค
- Node๊ฐ์๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์ผ ๊ฒฝ์ฐ, Hash ํฌ๊ธฐ์ Key๊ฐ ๋ณํจ -> Data ๋ถ์ฐ Rule ์ด๊ธ๋จ
- => Resharding ํ์
- ๊ณต๊ฐ์ ๋ํ ํจ์จ์ ๊ณ ๋ คํ์ง ์๋๋ค
Dynamic Sharding

- ํ์ฅ์ ์ฉ์ดํ๋ค
- Node์ ๊ฐ์๋ฅผ ๋๋ฆด ๊ฒฝ์ฐ : Locatoer Service์ Shard Key ์ถ๊ฐ๋ง ํ๋ฉด ๋จ
- ๊ธฐ์กด Data Shard Key ๋ณ๊ฒฝ X
- ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐฐ์น ์ Locator Service์ Shard Key Table๋ ๋๊ธฐํ ํด์ผํ๋ค.
- Locator Service๋ฅผ ํตํด Shard Key๋ฅผ ์ป๋๋ค.
- Locator์ ์์กด์ ์ด๋ค.
- Locator๊ฐ ์ฑ๋ฅ์ ์ํด Cacheํ๊ฑฐ๋ Replicationํ ๊ฒฝ์ฐ, ์๋ชป๋ Routing์ ํตํด Data ์ฐพ์ง ๋ชปํ๊ณ Error ๋ฐ์
- ex ) HDFS : Name Node, MongoDB : Config Server
Entity Group

- Key-Value๊ฐ ์๋ ๋ค์ํ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ Applicaiton์ ๋ณต์ก๋๋ฅผ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก Shardingํ๋ ๋ฐฉ๋ฒ
- ๊ด๊ณ๊ฐ ์๋ Entity๋ผ๋ฆฌ ๊ฐ์ Shard ๋ด์ ๊ณต์ ํ๋๋ก ๋ง๋ ๋ฐฉ์
- ๋จ์ผ Shard ๋ด์์ ์ฟผ๋ฆฌ๊ฐ ํจ์จ์ ์ด๊ณ ๊ฐํ ์์ง๋๋ฅผ ๊ฐ์ง๋ค
- ๋ค๋ฅธ Shard์ Entity์ ์ฐ๊ด๋๋ ๊ฒฝ์ฐ ๋นํจ์จ์
- ์ฌ์ฉ์๊ฐ ๋์ด๋จ์ ๋ฐ๋ผ ํ์ฅ์ฑ์ด ์ข์ Partitioning
โป Shared Disk & Shared Nothing
https://milhouse93.tistory.com/43
์ถ์ฒ
https://eunsun-zizone-zzang.tistory.com/50
https://code-lab1.com/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81/
https://jordy-torvalds.tistory.com/94