๊ฒฝ์๋ ฅ ์๋ ๊ฐ๋ฐ์๋ฅผ ์ํ โํด๋ผ์ฐ๋ ๋์์ธ ํจํดโ
๊ฒฝ์๋ ฅ ์๋ ๊ฐ๋ฐ์๋ฅผ ์ํ โํด๋ผ์ฐ๋ ๋์์ธ ํจํดโ ๊ด๋ จ
์ฌ๋ฌ๋ถ์ ์๋ฒ๋ฅผ ์ด๋์ ๋ฐฐํฌํ๋์? 10๋ ์ ๋ง ํด๋ IDC ํ๊ฒฝ ํน์, IDC์ ๋ฐฐํฌ๋ ์๋ฒ๋ฅผ ํธ์คํ ํ๊ณ ๊ด๋ฆฌํ๋ ์๋ฒ ํธ์คํ ์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ 10๋ ์ฌ์ด, ์๋ง์ IT ๊ธฐ์ ์ด ํด๋ผ์ฐ๋ ์ ํ์ ๋ง์ณค์ต๋๋ค. ํนํ ์คํํธ์ ์ ๋ฌผ์ด๋ณผ ํ์๋ ์์ด ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด ๋น์ฐํ ์๊ธฐ๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด ๊ฐ์ ธ๋ค์ค ๋ณํ ์ค ํ๋๋ ๋ฐ๋ก ๋ฐฐํฌ์ ํ์ฅ์ ์ ์ฐํจ์ ๋๋ค.
๋ฌผ๋ก ๊ณผ๊ฑฐ์๋ ๋ฐฐํฌ๋ฅผ ํธ๋ฆฌํ๊ฒ ๊ฐ์ ํ๊ณ ์ ํ๋ ๋ ธ๋ ฅ์ด ์์๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฌ๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ๊ฒฝ์์ ๋ฐ์ํ๋ ์ฌ๋ฌ ๋์ฆ๋ฅผ ์์ฉํ๋ฉฐ ์ ์ฐ์ฑ์ ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ์ฃ . ๋ฐฐํฌ๋ง์ด ์๋๋ผ ๋ค์ํ ์ ๊ทผ์ ๋ํ ์ ์ฐํจ, ํธ๋ํฝ ์ํ๋ ๋ฑ ๋ฐ์ ๊ฒฝํ ์ญ์ ์ถ์ ๋์์ต๋๋ค. ์ด์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์์ธ ํจํด์ด ๊ทธ๋์๋ฏ, ํด๋ผ์ฐ๋ ๋์์ธ ์ฌ๋ก๋ค ์ญ์ ํจํดํ๋์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ด๋ ๋ฌด์์ด๋ฉฐ, ์ด๋ป๊ฒ ์จ์ผ ํ๋์ง ํ๋ฒ ์์๋ด ์๋ค.
โํด๋ผ์ฐ๋ ๋์์ธ ํจํดโ์ด๋ ๋ญ๊น?
ํด๋ผ์ฐ๋ ์๋น์ค ์ค์ฌ ํ๊ฒฝ์ด ๊ฐ์ ธ๋ค์ค ๋ณํ
๋ถ๊ณผ 10๋ ์ , ์๋น์ค๋ฅผ ์ด์ํ๋ ค๋ฉด IDC์ ์๋ฒ๋ฅผ ์ธํ ํ๊ฑฐ๋, ์๋ฒ ํธ์คํ ์ ์ฒด๋ฅผ ์ด์ฉํด์ผ ํ์ต๋๋ค. ํ์ง๋ง ์ง๊ธ์ ํน์ ๋๋ฉ์ธ์ ํ์ฌ๋ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ์ง์ ์ด์ฉํ๋ ๋ช๋ช ๊ธฐ์ ์ ์ ์ธํ๊ณ , ๋๋ถ๋ถ์ด ๊ธ๋ก๋ฒ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ์ด์ฉํ๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํ ์๋์ ๋๋ค.
ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด ๊ฐ์ ธ๋ค์ฃผ๋ ์ฅ์ ์ ์ ์ฐํจ์ ์์ต๋๋ค. ์๋ฒ ํธ์คํ , IDC ์๋ฒ ์ด์ฉ ๋๋น ์๋น์ค์ ์ด์ฉ๊ณผ ์์ ํ ๋น, ๋ฐ๋ฉ์ด ๋งค์ฐ ์ ์ฐํ์ฃ .
๋ฐ๋ฉ์ด์ผ ๋น์ฉ ํจ์จ์ ์ฃผ๋ ๋น์ฐํ ์ฅ์ ์ด์ง๋ง, ๋ค๋ฅธ ๋ถ๋ถ์ ์ด๋ค ์ด์ ์ ์ค๊น์? ๊ณผ๊ฑฐ์๋ ์๋ฒ๋ฅผ ๋๋ฆฌ๋ ค๋ฉด ์๋ฒ๋ฅผ ๊ตฌ๋งคํ๊ฑฐ๋ ์๋ฒ ํธ์คํ ์ ์ฒด์ ์ฐ๋ฝํด์ผ ํ์ต๋๋ค. ๋ํ ์ด๋ค์ด ์ธํ ์ ์๋ฃํ ๋๊น์ง ์ผ๋จ ๋๊ธฐํด์ผ ํ์ฃ . ๋ง์ฝ ์๋ฒ ํธ์คํ ํ์ฌ์ ์ ํด ๋จธ์ ์ด ์๋ ๋ฑ ์ด์ ๋ก ์ธํ ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ํ์ฅ ์์ฒด์ ์ด๋ ค์์ด ๋ง์์ต๋๋ค.
๊ทธ๋์ ๋น์์๋ ์ผ์ ํธ๋ํฝ ์ด์ ์ ์ ์ ์์ ์ฐจ๋จํ๊ฑฐ๋, ์์ฉํ ์ ์๋ ํธ๋ํฝ์ ๋๊ฒจ ์๋น์ค์ ์ฅ์ ๊ฐ ์ผ์ด๋๋ ์ผ์ด ์ง๊ธ๋ณด๋ค ๋ง์์ต๋๋ค. ์ด์ฒ๋ผ ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๋ ์ํฉ์ ๋๋นํ๋ ๊ฒ์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ด๋ ต๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ๋ง๋ ์ํคํ ์ฒ๋ฅผ ์ง๊ธฐ๋ณด๋ค ์์ ๋ฒ์ ๋ด ํธ๋ํฝ์ ์ ์ํํ๋ ๋ฐ ์ง์คํ๊ธฐ๋ ํ์ฃ .
์ด์ ๋ ์ํฉ์ด ๋ค๋ฆ ๋๋ค. ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด ์ผ๋ฐํ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ์ ๋ฐ๋ผ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ ์ ํ ๊ฒฝํ๋ค ์ญ์ ์์์ต๋๋ค. ์ด๋ฅผ ๋ค์ ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ํ๊ธฐ ์์ํ ๊ฒ์ด์ฃ .
ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ด๋?
๋ณดํต ๋์์ธ ํจํด์ด ๊ทธ๋ ๋ฏ, ํด๋ผ์ฐ๋ ๋์์ธ ํจํด ์ญ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ๊ฒฝํ๊ณผ ๋ ธํ์ฐ๊ฐ ์ถ์ ๋์ด ํจํด์ผ๋ก ๊ตณ์ด์ก์ต๋๋ค.
๋ทํ๋ฆญ์ค๋ฅผ ๋น๋กฏํ ๋ง์ ๊ธฐ์ ์ด MSA๋ก ์ํคํ ์ฒ๋ฅผ ๋ฐ๊พธ๋ฉฐ ๋ณํ๊ฐ ์ผ์ด๋ฌ์ต๋๋ค. ์ด์ ๋ ๋๋ฆฌ ์๋ ค์ง ๋ทํ๋ฆญ์ค ์ค(Netflix Zuul)์ ๋น๋กฏํ API ๊ฒ์ดํธ์จ์ด, ํ์คํธ๋ฆญ์ค(Hystrix)๋ฅผ ์ด์ฉํ ์ํท ๋ธ๋ ์ด์ปค(Circuit Breaker), ๋ง์ ์ฌ๋๋ค์ด ์๊ณ ์ฐ๊ณ ์๋ Pub/Sub ๊ฐ์ ๊ฒ๋ค ๋ชจ๋ ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ ๋๋ค.
์ฆ, ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ด๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ํน์ ํ ์ํฉ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ๋ค์ ๋ชจ์ ์ด๋ฆ ๋ถ์ธ ๊ฒ์ด๋ผ๊ณ ๋ด๋ ๋ฌด๋ฐฉํฉ๋๋ค.
๋ค์ ๋งํด ์ฐ๋ฆฌ๊ฐ ๋ง์ฃผํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์, ์ด๋ฏธ ๋ง์ ์ฌ๋์ด ๋ง์ฃผ์น ๋ฌธ์ ๋ฅผ ํ์ด์ค ๋ฐฉ๋ฒ๋ค์ด๋ผ๋ ๊ฒ์ด์ฃ . ์ด๋ฌํ ํจํด์ ์์๋๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ฒช์ ๋ฌธ์ ๋ฅผ ๋๋นํ ์ ์์ ๊ฒ์ ๋๋ค.
์ ์์์ผ ํ ๊น?
์ด๋ฌํ ์ํฉ์ ๋ง์ถฐ ์ต๊ทผ ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ ์ ์ ํ ์ ์ฉํ๋ ๊ฐ๋ฐ์์ ์์๊ฐ ๋์์ง๊ณ ์์ต๋๋ค. ์ด๋ฅผ ์ ์๋ ๊ฐ๋ฐ์๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ฅ์ ์ ๊ทน๋ํ์ํค๊ณ , ๋จ์ ์ ์ต์ํํ ์ ์์ต๋๋ค. ๋์์ธ ํจํด์ ์ ์ ํ ์ ์ฉํ๋ค๋ ๊ฒ์ ์๋น์ค์ ํ์ฅ์ฑ, ์ฅ์ ๋ฐฉ์ง, ์ฅ์ ๋์, ๋ชจ๋ํฐ๋ง ๋ฑ ์์ฃผ ๋ค์ํ ๊ด์ ์์์ ์ญ๋์ ์ง๋ ๋ค๋ ๊ฒ์ ๋งํ๊ธฐ ๋๋ฌธ์ด์ฃ .
๊ทธ๋์ ์ฐ๋ฆฌ๋ ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ ์์์ผ ํฉ๋๋ค. ๋ ์ ์ฌ์ ์์ ์ด๋ฅผ ์ ์ ์ฉํ๋ ์ ๋ต ์ญ์ ๊ฐ์ ธ๊ฐ์ผ ํฉ๋๋ค.
ํจํด ์ดํด๋๊ฐ ๊ณง ๊ฒฝ์๋ ฅ
๋ฌด์๋ณด๋ค ์ด ๋์์ธ ํจํด์ ์ฅ์ ๋ฐฉ์ง์ ๋์ ์ธก๋ฉด์์ ์์ฃผ ํฐ ์๋ฏธ๋ฅผ ์ง๋๋๋ค.
์ผ๋ฐ์ ์ธ ๋์์ธ ํจํด์ ์ฝ๋ ์์ฑ ๊ณผ์ ์ ํจ์จ์ด๋ ์ฑ๋ฅ ์ด์ ํด๊ฒฐ์ ์ฃผ๋ก ์ด์ ์ ๋ก๋๋ค. ๊ทธ๋ฌ๋ ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ ๊ทธ ํ๊ฒฝ์ ํน์ง ๋๋ฌธ์ธ์ง ๊ฐ์ฉ์ฑ, ๋ถ์ฐ ์ฒ๋ฆฌ, ์ฅ์ ๋์, ์ฅ์ ๋ฐฉ์ง ์ธก๋ฉด์ ์ฃผ์ ๊ฐ ๋ง์ต๋๋ค.
๋ํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ๋ํ ์ดํด๋๋ฅผ ๋์ด๋ ๋ฐ์๋ ๋์์ ์ค๋๋ค.
๊ฒฐ๊ตญ ์ด ๋์์ธ ํจํด์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๊ฒฝ์ ํน์ง๊ณผ ์ฃผ์ ์ฌ๋ก๋ฅผ ์ดํด๋ณผ ์์ฃผ ์ข์ ์๋จ์ด๊ธฐ๋ ํฉ๋๋ค.
์ด๋ค ํจํด๋ค์ด ์์๊น?
ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ ์์ฃผ ๋ค์ํฉ๋๋ค. Pub/Sub ํจํด, ์ฌ์ด๋์นด ํจํด, ์ ์ ์ฝํ ์ธ ํธ์คํ ํจํด, ์ ํ (RateLimit) ํจํด, ์ฌ๊ฐ ํจํด, ์ธ๋ฑ์ค ํ ์ด๋ธ ํจํด, ๊ฒ์ดํธ์จ์ด ์ง๊ณ ํจํด, ์ด๋ฒคํธ ์์ฑ ํจํด ๋ฑ์ด ๋ํ์ ์ด์ฃ . ๋ง์ดํฌ๋ก์ํํธ๊ฐ ์ด์ํ๋ ์ ์ (Azure)์ ํด๋ผ์ฐ๋ ๋์์ธ ํจํด ๋ฌธ์๋ฑ์์ ๋ง์ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ ๊ฒ์ ๋๋ค.
๋ฌผ๋ก ๊ธ์ ์ฐ๊ณ ์๋ ์ง๊ธ๋ ๋ง์ ๊ฐ๋ฐ์๊ฐ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ์ธ์ฌ์ดํธ๋ฅผ ์๊ณ ์์ต๋๋ค. ์ด๋ฌํ ๋ ธํ์ฐ๊ฐ ๊ณต์ ๋๊ณ ๋๋ฆฌ ํผ์ง๋ฉด ๋ ๋ค๋ฅธ ํจํด์ด ๋ง๋ค์ด์ง ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฒ ๊ธ์์ ์ดํด๋ณผ ํจํด์ ๋ชจ๋ ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ด ์๋๋๋ค. ์ ์ ๊ฐ ์ ๋ฆฌํ ๋ด์ฉ ์ญ์ ๋ชจ๋ ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ ๋์ดํ ๊ฒ์ด ์๋๋ผ๋ ์ ์ ์ ์ํด ์ฃผ์ธ์.
๋์์ธ ํจํด ์ดํด๋ณด๊ธฐ
์์ ์ฑ(Resiliency)
์์ ์ฑ ๊ด๋ จ ๋์์ธ ํจํด์ ์์คํ ์ด ์๊ธฐ์น ์์ ์ํฉ์์๋ ๋ฉ์ถ์ง ์๊ณ ๋์ํ๋ ๊ฒ์ ์ง์คํ๋ ํจํด์ ๋๋ค. ์ํท ๋ธ๋ ์ด์ปค, ๋ฒํฌํค๋, ์ฌ์๋ ํจํด์ ์ดํด๋ด ์๋ค.
์ํท ๋ธ๋ ์ด์ปค ํจํด์ ์์คํ ์ด ์ฐ์์ ์ผ๋ก ์คํจํ์ง ์๋๋ก ํ๋ ์ค์ํ ํจํด์ ๋๋ค.
์ฌ๋ก
๋ทํ๋ฆญ์ค ํ์คํธ๋ฆญ์ค(Netflix Hystrix): ํ์คํธ๋ฆญ์ค๋ ์ํท ๋ธ๋ ์ด์ปค ํจํด์ ๊ตฌํํ ๋ํ์ ์ธ ์์์ ๋๋ค. ์ธ๋ถ ์๋น์ค ํธ์ถ์ด ์คํจํ ๊ฒฝ์ฐ, ์๋น์ค์ ์ฐ์์ ์ธ ์ฅ์ ๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ์ ์ง์คํฉ๋๋ค.
์ฅ์
- ์ฅ์ ๊ฒฉ๋ฆฌ: ์ํท ๋ธ๋ ์ด์ปค๊ฐ ๋ฐ๋ํ๋ฉด ๋ฌธ์ ๊ฐ ์๋ ์๋น์ค ํธ์ถ์ ์ค๋จํฉ๋๋ค. ์ด๋ก ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ง์ ์ ์์ต๋๋ค.
- ๋น ๋ฅธ ์คํจ(Fail-Fast): ์คํจ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์งํ๋ฉด ๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ์ง ์์ต๋๋ค.
- ์๋ ๋ณต๊ตฌ: ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ๋ค์ ๋์์ ์๋ํ๋ฉฐ ์๋น์ค๊ฐ ์ ์ํ๋์๋์ง ํ์ธํ๊ณ , ํ๋ก๋ฅผ ์ฌ์ค์ ํ ์ ์์ต๋๋ค.
๋ฒํฌํค๋ ํจํด์ ์์คํ ์ ๋ฆฌ์์ค๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค. ๊ตฌ์ฑ ์์ ํ๋๊ฐ ์คํจํด๋ ์ ์ฒด ์์คํ ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ ์ํด์์ฃ .
์ฌ๋ก
์๋ง์กด(Amazon): ์๋ง์กด์ ํนํ ์๋น์ค์ ๋ฒํฌํค๋ ํจํด์ ์ ๊ทน ์ ์ฉํฉ๋๋ค. ์ฌ๋ฌ ์๋น์ค์ ๊ฐ ์๋น์ค์ ๊ตฌ์ฑ ์์๋ค์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ด์๋ ์ ์๋๋ก์.
์ฅ์
- ์์ ๊ฒฉ๋ฆฌ: ๊ฐ ์๋น์ค๋ ๊ตฌ์ฑ ์์๊ฐ ์์ ์ ๋ฆฌ์์ค๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ, ๋ค๋ฅธ ์๋น์ค์ ์ฅ์ ๋ก ์ธํ ์ํฅ์ ์ต์ํํฉ๋๋ค.
- ์์ ์ฑ ํฅ์: ํ๋์ ์๋น์ค๋ ๊ตฌ์ฑ ์์์ ์ฅ์ ๊ฐ ์ ์ฒด ์์คํ ์ผ๋ก ํ์ฐ๋๋ ๊ฒ์ ๋ง์์ค๋๋ค.
์ฌ์๋ ํจํด์ ์ผ์์ ์ธ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋, ์์คํ ์ด ์๋์ผ๋ก ์ฌ์๋ํ๋ฉฐ ์์ ์ฑ์ ๋์ด๋ ํจํด์ ๋๋ค.
์ฌ๋ก
AWS SDK: AWS SDK๋ ๋คํธ์ํฌ์ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ ์ผ์์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์๋์ผ๋ก ์ฌ์๋๋ฅผ ์ํํฉ๋๋ค. ์ด๋ก์จ ์์ ์ฑ์ ๋ณด์ฅํ์ฃ .
์ฅ์
- ์ค๋ฅ ๋ณต๊ตฌ: ์ผ์์ ์ธ ๋คํธ์ํฌ ์ค๋ฅ, ์๋น์ค ๊ณผ๋ถํ๋ฅผ ์์คํ ์ด ์๋์ผ๋ก ๊ทน๋ณตํ ์ ์์ต๋๋ค.
- ์์ ์ฑ ์ฆ๊ฐ: ์ฌ์๋๋ก ์๋น์ค์ ๊ฐ์ฉ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ ๋ขฐ์ฑ (Reliability)
์ ๋ขฐ์ฑ ํจํด์ ์์คํ ์ด ์ผ๊ด์ฑ์ ๊ฐ์ง๋ฉฐ ์ ํํ๊ฒ ๋์ํ๋๋ก ๋ณด์ฅํ๋ ํจํด์ ๋๋ค. ํฌ์ค ์ฒดํฌ, ์ค๋กํ๋ง, ๋ฆฌ๋ ์ ์ถ ํจํด์ ๋ํ๋ก ๋ณด๊ฒ ์ต๋๋ค.
ํฌ์ค ์ฒดํฌ ํจํด์ ์์คํ ์ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์ด๋ก์จ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๊ฐ์งํ๊ณ ๋์ํ ์ ์๋๋ก ํ์ฃ .
์ฌ๋ก
์ฟ ๋ฒ๋คํฐ์ค(Kubernetes): ์ฟ ๋ฒ๋คํฐ์ค๋ ๊ฐ ์ปจํ ์ด๋์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํด ํฌ์ค ์ฒดํฌ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ง์ฝ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ปจํ ์ด๋๊ฐ ์๋ค๋ฉด, ์ด๋ฅผ ์๋์ผ๋ก ์ฌ์์ํฉ๋๋ค.
์ฅ์
- ์ค์๊ฐ ๋ชจ๋ํฐ๋ง: ์์คํ ์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฐ์ํ๊ธฐ ๋๋ฌธ์, ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์์ต๋๋ค.
- ์๋ ๋ณต๊ตฌ: ์ด ํจํด์ ๋ฌธ์ ๊ฐ์ง์ ํจ๊ป ์๋์ผ๋ก ํด๋น ์ธ์คํด์ค๋ฅผ ์ฌ์์ํ๊ฑฐ๋ ๋์ฒดํฉ๋๋ค. ์๋น์ค์ ์ ๋ขฐ ์ ์ง์ ํฐ ๋์์ ์ค๋๋ค.
์ค๋กํ๋ง ํจํด์ ์์คํ ์ด ๊ณผ๋ถํ ์ํ์ ๋น ์ง์ง ์๊ฒ ํ๋ ๋ฐ ๋ชฉ์ ์ ๋ก๋๋ค. ์์ฒญ ์๋ฅผ ์ ํํด ์ด๋ฅผ ๊ตฌํํ์ฃ .
์ฌ๋ก
ํธ์ํฐ API(Twitter API): ํธ์ํฐ API๋ ์ฌ์ฉ์๊ฐ ์ผ์ ์๊ฐ ๋ด์ ๋ณด๋ผ ์ ์๋ ์์ฒญ ์๋ฅผ ์ ํํฉ๋๋ค. ์๋น์ค๊ฐ ๊ณผ๋ถํ์ ๋น ์ง์ง ์๋๋ก ํ๊ธฐ ์ํจ์ ๋๋ค.
์ฅ์
- ์๋น์ค ๋ณดํธ: ๊ณผ๋ํ ์์ฒญ์ ์์คํ ๊ณผ๋ถํ๋ฅผ ๋ถ๋ฌ์ต๋๋ค. ์ด๋ฅผ ๋ง์ผ๋ฉด ์์ ์ ์ธ ์๋น์ค ์ ๊ณต์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- ํ์ง ์ ์ง: ์์ฒญ์ ์ ํํ๋ฉด ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ผ์ ํ ํ์ง๋ก ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
๋ฆฌ๋๋ ๋ถ์ฐ ์์คํ ์์ ์ค์ํ ์์ ์ ์ํํฉ๋๋ค. ์ด ํจํด์ ๊ทธ๋ฌํ ๋ฆฌ๋๋ฅผ ๋์ ์ผ๋ก ์ ํํ๋๋ก ์ค๊ณ๋์ด ์์ต๋๋ค.
์ฌ๋ก
์ํ์น ์ฃผํคํผ(Apache ZooKeeper): ์ฃผํคํผ๋ ๋ถ์ฐ ํ๊ฒฝ์์ ๋ฆฌ๋๋ฅผ ์ ์ถํฉ๋๋ค. ๋ฆฌ๋, ์ฆ ์ค์ํ ์์ ์ ์ํํ ๋ ธ๋๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด์ฃ .
์ฅ์
- ๊ณ ๊ฐ์ฉ์ฑ: ๋์ ์ผ๋ก ๋ฆฌ๋๋ฅผ ๋ฝ๋๋ก ์ค๊ณํ๋ฉด ํน์ ๋ ธ๋๊ฐ ์คํจํ๋๋ผ๋ ๋ค๋ฅธ ๋ ธ๋๊ฐ ๋ฆฌ๋ ์ญํ ์ ์ธ๊ณ๋ฐ์ต๋๋ค. ์ด๋ ์ฆ, ์๋น์ค๊ฐ ์ค๋จ๋์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์์ ์ฑ ์ฆ๊ฐ: ์ด ํจํด์ ๋ถ์ฐ ํ๊ฒฝ์์์ ์์ ์ ์ธ ์๋น์ค ์ด์์ ๋ณด์ฅํฉ๋๋ค.
๋ฉ์์ง (Messaging)
๋ฉ์์ง ํจํด์ ์์คํ ๊ฐ์ ํต์ ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ๋ชฉ์ ์ ๋ ํจํด์ ๋๋ค. ๋ฉ์์ง ํ, Pub/Sub, ์ด๋ฒคํธ ์์ฑ ํจํด์ ๋ํ ์์๋ก ๋ณด๊ฒ ์ต๋๋ค.
@tab:active 1. ๋ฉ์์ง ํ(Message Queue)
๋ฉ์์ง ํ ํจํด์ ์ ์ฉํ๋ฉด ๋ฉ์์ง๋ค์ ๋น๋๊ธฐ๋ก ์ ๋ฌ๋ฉ๋๋ค. ์์คํ ์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์ด๋ ํจํด์ ๋๋ค.
์ฌ๋ก
๋๋นMQ(RabbitMQ): ๋๋นMQ๋ ๋ค์ํ ์๋น์ค๋ค ์ฌ์ด ๋ฉ์์ง๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ ๋ฌํฉ๋๋ค. ์์คํ ์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ ๋ํ์ ์ธ ์ํํธ์จ์ด์ ๋๋ค.
์ฅ์
- ๋น๋๊ธฐ ์ฒ๋ฆฌ: ์์ฒญ๊ณผ ์๋ต์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ๋ฉด, ์์คํ ์ ์ ์ฐ์ฑ์ด ๋์์ง๋๋ค.
- ๋ถํ ๋ถ์ฐ: ํ๋ก ๋ฉ์์ง๋ฅผ ๋ถ์ฐํ๋ฉด, ์์คํ ์ ๋ถํ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
@tab 2. Pub/Sub(Publisher-Subscriber)
Pub/Sub ํจํด์ ํ ๊ฐ์ ๋ฐํ์(Publisher)๊ฐ ์ฌ๋ฌ ๊ตฌ๋ ์(Subscriber)์๊ฒ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ๊ตฌ์กฐ์ ํจํด์ ๋๋ค.
์ฌ๋ก
์ํ์น ์นดํ์นด(Apache Kafka): ์นดํ์นด๋ Pub/Sub ํจํด์ผ๋ก ๋๊ท๋ชจ ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ฅ์
- ํ์ฅ์ฑ: ์์ฃผ ๋ง์ ๊ตฌ๋ ์๊ฐ ๋์์ ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ ์๋ ๊ตฌ์กฐ๋ก ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
- ๋์จํ ๊ฒฐํฉ: ๋ฐํ์์ ๊ตฌ๋ ์๋ ์๋ก ๋์จํ๊ฒ ๊ฒฐํฉํ๊ณ ์์ต๋๋ค. ์ด๋ ์์คํ ์ ์ฐ์ฑ์ ๋์ฌ ์ค๋๋ค.
@tab 3. ์ด๋ฒคํธ ์์ฑ(Event Sourcing)
์ด๋ฒคํธ ์์ฑ ํจํด์ ์์คํ ์ ์ํ ๋ณํ๋ฅผ ์ด๋ฒคํธ๋ก ๊ธฐ๋กํฉ๋๋ค. ์ด๋ก์จ ๋ชจ๋ ์ํ ๋ณํ๋ฅผ ์ถ์ ํ ์ ์์ฃ .
์ฌ๋ก
์ด๋ฒคํธ์คํ ์ด(EventStore): ์ด๋ฒคํธ์คํ ์ด๋ ์ด๋ฒคํธ ์์ฑ ํจํด์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ํ ๋ณํ๋ฅผ ์ด๋ฒคํธ๋ก ์ ์ฅํฉ๋๋ค. ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์คํ ์ ์ํ๋ฅผ ์ฌ๊ตฌ์ฑํฉ๋๋ค.
์ฅ์
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ: ๋ชจ๋ ์ํ ๋ณ๊ฒฝ์ด ์ด๋ฒคํธ๋ก ๊ธฐ๋ก๋๋ฉด ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
- ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ: ์ด๋ฒคํธ ๋ก๊ทธ๋ก ์์คํ ์ ๋ชจ๋ ์ํ ๋ณ๊ฒฝ์ ์ถ์ ํ ์ ์์ต๋๋ค.
- ๋ณต๊ตฌ ์ฉ์ด์ฑ: ๊ณผ๊ฑฐ ์ด๋ฒคํธ๋ฅผ ์ฌ์ํ๋ฉด ์์คํ ์ํ๋ฅผ ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ: ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ ํต์ฌ
ํด๋ผ์ฐ๋ ๋์์ธ ํจํด์ ๋ณด๋ค ๋ณด๋ฉด ์์์ผ ํ ๋ค์ํ ๊ฐ๋ ์ ๋ํ ์ดํด๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๋์์ธ ํจํด์ ํต์ฌ์ ์ด๋ฏธ ์๋ง์ ์ฌ๋์ด ์์์จ ์ธ์ฌ์ดํธ์์ ๋ด๊ฐ ์์ผ๋ก ๊ฒช์ ๋ฌธ์ ์ ๋ํ ๋์์ ๋ฐฐ์ธ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๋ ์ ์ ๋๋ค.
ํจํด์ด ์ฌ๋ฌ ๋ฐฑ์๋ ์์ง๋์ด๊ฐ ๊ฒฝํํ ๋ค์์ผ ์ ์ ์์๋ ๋ถ์ฐ ์ฒ๋ฆฌ, ์ฅ์ ๋์, ์ฅ์ ๋ฐฉ์ง, ๋ชจ๋ํฐ๋ง๊ณผ ๊ฐ์ ์ฃผ์ ์ ๋ชฐ๋ ค ์๋ค๋ ์ธก๋ฉด๋ ์ค์ํฉ๋๋ค. ์ง๊ธ ๋น์ฅ ์๋ฒฝํ ํก์ํ๊ธฐ๋ ์ด๋ ต๋๋ผ๋ ์ดํด๋ณด๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ์ธ์ ๊ฐ๋ ํฐ ๋์์ด ๋ ์ ์์ผ๋๊น์. ์ด๋ฒ ๊ธ์ด ํด๋ผ์ฐ๋ ๋์์ธ ํจํด ๊ณต๋ถ์ ์ฒซ ์์์ด ๋๋ฉด ์ข๊ฒ ์ต๋๋ค.