๐ข ๊ฐ๋ฐ์๊ฐ ํด๋ผ์ฐ๋์์ ๊ฐ๋ฐ์ ์์ํ ๋ ๋ค์๊ณผ ๊ฐ์ ์ด๋ ค์์ ์ง๋ฉดํ๋ค.
1. ๋ถ์ฐ ์์คํ ์ ์ดํด
2. ์๋ก์ด ๊ธฐ์ (์ปจํ ์ด๋์ ํจ์)์ ์ดํด
3. ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ฑ ๊ฐ๋ฐ ์ ์ฌ์ฉํ๋ ํจํด์ ๋ํ ์ดํด
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๊ฒฝ์ ์ดํดํ๋๋ฐ ํ์ํ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๊ฐ์ ์ ์ดํด๋ณด์.
๋ชฉ์ฐจ
- ๋ถ์ฐ ์์คํ
- ๋ถ์ฐ ์์คํ ์ ์ค๋ฅ
- CAP ์ด๋ก
- 12์์ ์ฑ
- ๊ฐ์ฉ์ฑ๊ณผ ์๋น์ค ์์ค ํ์ฝ์
1๏ธโฃ ๋ถ์ฐ ์์คํ
๋ถ์ฐ ์์คํ (Distributed System)์ด๋?
๊ฐ๋ณ ์ปดํจํฐ๋ค์ด ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋์ด ํ๋์ ์ปดํจํฐ๋ก ๋ณด์ด๋ ์์คํ
๋ถ์ฐ ์์คํ ์ ์ฌ์ฉํ๋ ์ด์
์์ ์ฑ, ์ ๋ขฐ์ฑ, ๊ฒฝ์ ์ฑ ์ธก๋ฉด์์ ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ
โ ๋ถ์ฐ ์์คํ ์ ์ค๋ฅ
๋ถ์ฐ ์์คํ ์ ์์๊ฐ๊ธฐ ์ ์ ๋ฐ๋์ ์์์ผ ํ๋ ์๋ชป๋๊ฑฐ๋ ๊ทผ๊ฑฐ ์๋ ๊ฐ์ ์ ๋ํด ์์๋ณด์
๋คํธ์ํฌ๋ ์์ ์ ์ด๋ค(?)
์๋น์ค๋ค์ ๋ค๋ฅธ ์ฅ๋น๋ค์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฌ์ ์ธ ๋คํธ์ํฌ ์คํจ์ ๋์ํ๋๋ก ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํด์ผ ํ๋ค.
๋คํธ์ํฌ ์ง์ฐ์ด ์๋ค(?)
์ง์ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ ๊น์ง ๊ฑธ๋ฆฌ๋ ๋ฐ์ดํฐ ์์ ์๊ฐ์ผ๋ก ๊ฑฐ๋ฆฌ์ ๋ถํ์ ๋ฐ๋ผ ๋ณ๋๋๋ค.
๋์ญํญ์ ๋ฌดํ๋๋ค(?)
๋จ์ ์๊ฐ ๋์ ๋๊ท๋ชจ์ ๋ฐ์ดํฐ ์ ์ก๋์ ๊ณ ๋ คํด ์ค๊ณํด์ผ ํ๋ค.
๋คํธ์ํฌ๋ ์์ ํ๋ค(?)
๋ณด์์ ํญ์ ๋์ ์ฐ์ ์์๋ฅผ ๋๊ณ , ์ง๋จ๊ณผ ๋ณด์์ ๊ณ ๋ คํด์ผ ํ๋ค.
ํ ํด๋ก์ง๋ ๋ณํ์ง ์๋๋ค(?)
๐กํ ํด๋ก์ง(topology)๋?
์ปดํจํฐ ๋คํธ์ํฌ ์์๋ค์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐํ ๊ฒ ๋๋ ์ฐ๊ฒฐํ ๋ฐฉ์
์์ ์๋ชจ๋, ์์ฒญ๋ ๋ฑ์ ๋ฐ๋ผ ์ฅ๋น๋ ์ ๋์ ์ด์ด์ผ ํ๋ค.
๊ด๋ฆฌ์๋ ํ ๋ช ์ด๋ค(?)
์ต์ ๋ฐ๋ธ์ต์ค๋ ํ ๋ช ์ด ์๋ ์ฌ๋ฌ ๋ช ์ด ๋ฐฐํฌ ๊ด๋ฆฌ, ๋์ปคํ๋ง, ๋ก๊น , ๋ชจ๋ํฐ๋ง์ ์ํํ๋ค.
์ ์ก ๋น์ฉ์ด ์๋ค(?)
๋คํธ์ํฌ์ ์ ์ก์ ๋ณดํต ์๋ต ์ ๋ถ๊ณผํ๋ฉฐ, ํ์ด๋ก๋๋ฅผ ์ค๋ธ์ ํธ๋ก ๋ณํํ๋ ๋น์ฉ(์ง๋ ฌํ, ์ญ์ง๋ ฌํ)๋ ๊ณ ๋ คํด์ผ ํ๋ค.
๋คํธ์ํฌ๋ ๋๋ฑํ๋ค(?)
๋๋ถ๋ถ ๊ฐ๋ฐ ์ ๋คํธ์ํฌ์ ์๋ก ๋ค๋ฅธ ํ๋กํ ์ฝ์ ๊ณ ๋ คํด ๊ฐ๋ฐํด์ผ ํ๋ค.
โ CAP ์ด๋ก
๋ถ์ฐ ์์คํ ์ ์ผ๊ด์ฑ(C), ๋ฐ์ดํฐ์ ๊ณ ๊ฐ์ฉ์ฑ(A), ๋คํธ์ํฌ ํํฐ์ (P) ์ค 2๊ฐ์ง๋ง ๋ง์กฑํ๋ค
๋คํธ์ํฌ ๊ณต์ ๋ฐ์ดํฐ ์์คํ ์์ ๋คํธ์ํฌ ์ฅ์ ๋ ์ธ์ ๋ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, P๋ ํญ์ ๋ณด์ฅํด์ผ ํ๋ค.
์ค์ ๋คํธ์ํฌ ๋ถ์ฐ ํ๊ฒฝ์์๋ ์ผ๊ด์ฑ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ ์ค ํ๋๋ฅผ ์ ํํด์ผ ํ๋ค.
๐กCAP ๋ชจ๋ ๋ง์กฑํ๋ ๊ฒ์ ์ด๋ก ์ ๋๋ ๋จ์ผ ๋ ธ๋์์๋ง ๊ฐ๋ฅํ๋ค.
- PC : SQL DBMS, ACID
- PA : NoSQL DBMS
2๏ธโฃ 12์์ ์ฑ
12์์ ์ฑ์ด๋?
ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ต์ ํ๋ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ 12๊ฐ์ง ์์น
1. ์ฝ๋๋ฒ ์ด์ค : ํ๋์ ์ฝ๋๋ฒ ์ด์ค์ ๋ค์ํ ๋ฐฐํฌ
์ ํ๋ฆฌ์ผ์ด์ ๋น ํ๋์ ์ฝ๋๋ฒ ์ด์ค, ์ฌ๋ฌ ๋ฐฐํฌ ํ๊ฒฝ(CI / CD)์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
2. ์ข ์์ฑ : ๋ช ์ ์ ์ธ, ์ข ์์ฑ ๋ถ๋ฆฌ
ํ๊ฒฝ ์ฐจ์ด๋ก ์ข ์์ฑ์ ์์ด๋ฒ๋ฆฌ์ง ์๋๋ก ์ธ์ด ๋ณ ์ข ์์ฑ ๊ด๋ฆฌ์(npm, maven)๋ฅผ ํญ์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ณดํต ์ปจํ ์ด๋ ๋ด๋ถ์ ์ข ์์ฑ ํจํค์ง์ ํ๋ค.
3. ์ค์ : ์ฝ๋์ ์ค์ ์ ๋ถ๋ฆฌ
์ค์ ๋ณ๊ฒฝ ์ ์ฝ๋ ์ฌ๋น๋๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ค์ ์ ํ๊ฒฝ ๋ณ์ ๋๋ ์ฟ ๋ฒ๋คํฐ์ค์ ConfigMap ์ธ๋ถ ์ค์ ์ ์ด์ฉํ๋ค.
4. ๋ฐฑ์๋ ์๋น์ค
DB, ์บ์ ๋ฑ์ ์ธ๋ถ ๋ฆฌ์์ค๋ก ๊ฐ์ฃผํด ์ธ๋ถ ์ค์ ์ ๋ณด(๋คํธ์ํฌ ์ฃผ์, ์ ๊ทผ ํค)๋ก ์ฐ๊ฒฐํด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ์ผ ํ๋ค.
5. ๋น๋, ๋ฆด๋ฆฌ์ฆ, ์คํ
CI/CD๋ก ๋น๋์ ๋ฆด๋ฆฌ์ฆ๋ฅผ ์๋ํํด ์คํ๊ณผ ๋ถ๋ฆฌํด์ผ ํ๋ค.
6. ํ๋ก์ธ์ค : ์ํ๊ฐ ์๋ ํ๋ก์ธ์ค ์คํ
์ํ๊ฐ ์๋ ์ฑ ์คํ, ์ํ๋ ์ธ๋ถ์ ์ ์ฅํด ํด๋ผ์ฐ๋์ ํ๋ ฅ์ฑ ๋ณด์ฅ
7. ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ : ๊ฐ ์๋น์ค๊ฐ ์์ ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ
๊ฐ ์๋น์ค๋ ์์ ์ DB์ธ ๋ค๋ฅธ ์๋น์ค์ DB๋ API๋ฅผ ํตํด์ ์ ๊ทผํด์ผ ํ๋ค.
8. ๋์์ฑ : ์ํ์ ํ์ฅ
์ฑ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค ๋จ์๋ก ์ํ ํ์ฅ์ด ๊ฐ๋ฅํด์ผ ํ๋ค. ์ด๋ฅผ ํตํด ํ์ฅ๊ณผ ์์ ์ฌ์ฉ๋์ ๊ฐ์ ํ ์ ์๋ค.
9. ํ๊ธฐ ๊ฐ๋ฅ : ๋น ๋ฅธ ์์๊ณผ ์์ ํ ์ข ๋ฃ
์ปจํ ์ด๋์ ํจ์๋ ๋น ๋ฅธ ์์ ์๊ฐ๊ณผ ์์ ํ ์ข ๋ฃ๋ฅผ ์ ๊ณตํ๋ค.
10. ๊ฐ๋ฐ/์ค์๋น์ค
์๋น์ค์ ๋ชจ๋ ์ข ์กฑ์ฑ์ ํจํค์งํ ์ปจํ ์ด๋๋ฅผ ํตํด ์ผ๊ด์ฑ ์๋ ํ๊ฒฝ์ ์ ์งํด์ผ ํ๋ค.
11. ๋ก๊ทธ
๋ก๊ทธ๋ ์ด๋ฒคํธ ์คํธ๋ฆผ์ผ๋ก ๊ฐ์ฃผํ๋ฏ๋ก ์ธ๋ถ ์์คํ ์ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ
12. ๊ด๋ฆฌ ํ๋ก์ธ์ค
์๋ช ์ด ์งง์ ํ๋ก์ธ์ค๋ก ๊ด๋ฆฌ ์์ ์คํ
3๏ธโฃ ๊ฐ์ฉ์ฑ๊ณผ ์๋น์ค ์์ค ํ์ฝ์
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ฑ ์ข ๋ฅ
- ์ ํ๋ฆฌ์ผ์ด์ ์กฐํฉ(์ผ๋ฐ์ ) : ์ปจํ ์ด๋, ํจ์
- ๋งค๋์ง๋ ํด๋ผ์ฐ๋ ์๋น์ค : DBaaS, ์บ์ฑ ์๋น์ค, ์ธ์ฆ ์๋น์ค
์๋น์ค ์์ค ํ์ฝ์(SLA: service-level agreement)๋?
ํด๋ผ์ฐ๋ ์๋น์ค ์ ๊ณต์๊ฐ ์์ ์ ์ผ๋ก ์ ๊ณตํ ์ ์๋ ์ฝ์ํ ์์น ๋ณดํต ์ฐ๊ฐ ์คํ ์๊ฐ์ผ๋ก ์ธก์
ํตํฉ SLA์ ์ ์ฒด ์๋น์ค์ ๊ฐ์ฉ์ฑ์ ๊ณ ๋ คํ๋ฏ๋ก, SLA์ด ๊ฐ์ฅ ๋ฎ์ ๊ฐ๋ณ ์๋น์ค์ ๊ฐ๊ฑฐ๋ ์๋ค.
SLA ์๋น์ค ๊ฐ์ฉ์ฑ ๊ณ์ฐ
ํตํฉ SLA๋ ๊ฐ๋ณ ์๋น์ค SLA๋ค์ ๊ณฑ์ด๋ค.
์๋น์ค1, 2์ ๊ฐ์ฉ์ฑ์ด ๊ฐ๊ฐ 99.95%, 99.90%์ผ ๋, ๊ทผ์ฌ ๊ณต์์ ๋ฐ๋ผ SLA๋ 99.85%์ด๋ค.
S1 = 99.95, E1 = 0.05, S2 = 99.90, E2 = 0.10
S1 * S2 = 1 - (E1 + E2) + E1*E2 = 1 - 0.15 = 0.85
์ ๋ฆฌ
- ๋ถ์ฐ ์์คํ : ๊ฐ๋ณ ์ปดํจํฐ๋ฅผ ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐํ ์ ์ฒด ์์คํ ์์ ์ฑ, ์ ๋ขฐ์ฑ, ๊ฒฝ์ ์ฑ ์ธก๋ฉด์์ ์ ๋ฆฌํจ
- ๋ถ์ฐ ์์คํ
์ ์ค๋ฅ
- ๋คํธ์ํฌ๋ ์์ ์ ์ด์ง ์๋ค : ์ ์ฌ์ ๋คํธ์ํฌ ์คํจ ๋์ ํ์
- ๋คํธ์ํฌ๋ ์ง์ฐ๋ ์ ์๋ค : ๋ฐ์ดํฐ ์์ ์๊ฐ์ ๊ฑฐ๋ฆฌ์ ๋ถํ์ ๋ฐ๋ผ ์ง์ฐ๋ ์ ์๋ค.
- ๋์ญํญ์ ๋ฌดํํ์ง ์๋ค : ๋จ์ ์๊ฐ ๋์์ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ ์ก๋์ ๊ณ ๋ คํด์ผ ํ๋ค.
- ๋คํธ์ํฌ๋ ์์ ํ์ง ์๋ค : ์ง๋จ๊ณผ ๋ณด์์ ๊ณ ๋ คํด์ผ ํ๋ค.
- ํ ํด๋ก์ง๋ ๋ณํ๋ค : ์ํฉ์ ๋ฐ๋ผ ์ฅ๋น์ ์ ๋์ฑ/ํ๋ ฅ์ฑ์ด ํ์ํ๋ค.
- ๊ด๋ฆฌ์๋ ์ฌ๋ฌ๋ช ์ด๋ค : ์ฌ๋ฌ ๋ช ์ด ๋ฐฐํฌ๊ด๋ฆฌ, ๋์ปคํ๋ง, ๋ก๋ฉ, ๋ชจ๋ํฐ๋ง์ ์งํํด์ผ ํ๋ค.
- ์ ์ก ๋น์ฉ์ ์ ๋ฃ๋ค : ์์ฒญ์ ๋ฌด๋ฃ, ์๋ต์ ์ ๋ฃ
- ๋คํธ์ํฌ๋ ๋๋ฑํ์ง ์๋ค : ์๋ก ๋ค๋ฅธ ํ๋กํ ์ฝ ์กด์ฌ
- CAP ์ด๋ก : ๋ถ์ฐ ์์คํ ์ ์ผ๊ด์ฑ(C), ๋ฐ์ดํฐ์ ๊ณ ๊ฐ์ฉ์ฑ(A), ๋คํธ์ํฌ ํํฐ์ (P) ์ค 2๊ฐ์ง๋ง ๋ง์กฑํ๋ค ๋คํธ์ํฌ ๊ณต์ ๋ฐ์ดํฐ ์์คํ ์ ํญ์ P๊ฐ ๋ฐ์ํ๋ฏ๋ก P๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ ์ ์ ๋ก PA(SQL DBMS, ACID) ๋๋ PC(NoSQL DBMS)๋ก ๊ตฌ์ฑํ ์ ์๋ค.
- 12์์ ์ฑ
- ์ฝ๋๋ฒ ์ด์ค : ํ๋์ ์ฝ๋๋ฒ ์ด์ค์ ๋ค์ํ ๋ฐฐํฌ(CI/CD)
- ์ข ์์ฑ : ๋ช ์ ์ ์ธ, ์ข ์์ฑ ๋ถ๋ฆฌ๋ฅผ ์ํด ์ปจํ ์ด๋ ๋ด๋ถ์ ์ข ์์ฑ ํจํค์ง(npm, maven)
- ์ค์ : ์ฝ๋์ ์ค์ ์ ๋ถ๋ฆฌ, ์ค์ ๋ณ๊ฒฝ ์ ์ฝ๋ ์ฌ๋น๋ ๋ถํ์ํด์ง(์ธ๋ถ ์ค์ ์ง์ : ์ฟ ๋ฒ๋คํฐ์ค ConfigMap)
- ๋ฐฑ์๋ ์๋น์ค : DB, ์บ์ ๋ฑ์ ๋ณ๋์ ์ธ๋ถ ์๋น์ค๋ก ์ฐ๊ฒฐํด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถค
- ๋น๋, ๋ฆด๋ฆฌ์ฆ, ์คํ : CI/CD๋ฅผ ์ด์ฉํ ๋น๋์ ๋ฆด๋ฆฌ์ฆ์ ์๋ํํด ์คํ๊ณผ ๋ถ๋ฆฌ
- ํ๋ก์ธ์ค : ์ํ๊ฐ ์๋ ์ฑ ์คํ, ์ํ๋ ์ธ๋ถ์ ์ ์ฅํด ํด๋ผ์ฐ๋์ ํ๋ ฅ์ฑ ๋ณด์ฅ
- ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ : ์์ ์ DB ์ธ์๋ API๋ฅผ ํตํด์ ์ ๊ทผ
- ๋์์ฑ : ์ํ์ ํ์ฅ ๊ฐ๋ฅํ ๋ ๋ฆฝ ๋จ์ → ํ์ฅ๊ณผ ์์ ์ฌ์ฉ๋ ๊ฐ์
- ํ๊ธฐ ๊ธฐ๋ฅ : ๋น ๋ฅธ ์๋น์ค ์์๊ณผ ์์ ํ ์ข ๋ฃ
- ๊ฐ๋ฐ/์ค์๋น์ค ์ผ์น : ์๋น์ค์ ๋ชจ๋ ์ข ์์ฑ์ ํจํค์งํด ์ผ๊ด์ฑ ์๋ ํ๊ฒฝ ์ ์ง
- ๋ก๊ทธ : ๋ก๊ทธ๋ ์ด๋ฒคํธ ์คํธ๋ฆผ์ผ๋ก ๊ฐ์ฃผํ๋ฏ๋ก ์ธ๋ถ ์์คํ ์ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ
- ๊ด๋ฆฌ ํ๋ก์ธ์ค : ์๋ช ์ด ์งง์ ํ๋ก์ธ์ค๋ก ๊ด๋ฆฌ ์์ ์คํ
- ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ฑ ์ข
๋ฅ
- ์ ํ๋ฆฌ์ผ์ด์ ์กฐํฉ(์ผ๋ฐ์ ) : ์ปจํ ์ด๋, ํจ์
- ๋งค๋์ง๋ ํด๋ผ์ฐ๋ ์๋น์ค : DBaaS, ์บ์ฑ ์๋น์ค, ์ธ์ฆ ์๋น์ค
- SLA์ ๊ฐ์ฉ์ฑ
- ํตํฉ SLA๋ SLA์ด ๊ฐ์ฅ ๋ฎ์ ๊ฐ๋ณ ์๋น์ค์ ๊ฐ๊ฑฐ๋ ์๋ค.
- ํตํฉ SLA๋ ๊ฐ๋ณ ์๋น์ค SLA๋ฅผ ๊ณฑํ ๊ฐ์ด๋ฉฐ, ๊ทผ์ฌ ๊ณต์์ ์ ์ฉํ ์ ์๋ค.