ํค์ด ํ๋ธ๋ฅด!
์ฝ๋ก๋๋ฐ์ด๋ฌ์ค๋ก ์ธํ ํ ์ํฉ์ ๊ณ ๋ คํ์ฌ ๋ค์์ ์ธํฐ๋ท ์๋น์ค์ ๋ถํ๊ฐ ์ฆ๊ฐํ๊ธฐ ์์ํ์ต๋๋ค. ์๋ฅผ ๋ค์ด,
์ด ๊ธฐ์ฌ์์๋ ๋น ๋ฅด๊ณ ๋ด๊ฒฐํจ์ฑ์ด ์๋ ์๋น์ค๋ฅผ ๋ง๋ค ์ ์๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ๊ฐ๋ฅํ ๊ฐ๋ฐ ๋ฐฉ์ ์ค์์ ํ์ฌ ๊ฐ๋ฅํ ๊ฒ๋ง ์ ํํ์ต๋๋ค. ์ฌ์ฉํ๊ธฐ ์ฌ์ด. ๊ฐ ํญ๋ชฉ์ ๋ํด ๊ธฐ์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ฑฐ๋ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ธฐํ๊ฐ ์์ต๋๋ค.
์ํ์ ํ์ฅ
๊ฐ์ฅ ๊ฐ๋จํ๊ณ ๊ฐ์ฅ ์ ์๋ ค์ง ์ ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ง ๋ถํ ๋ถ์ฐ ๋ฐฉ์์ ์ํ ํ์ฅ๊ณผ ์์ง ํ์ฅ์
๋๋ค.
์๋ฅผ ๋ค์ด, OwnCloud, OneDrive ๋ฑ๊ณผ ์ ์ฌํ ์ถ์ ํด๋ผ์ฐ๋ ํ์ผ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
์ด๋ฌํ ํ๋ก์ ํ์ค ๊ทธ๋ฆผ์ ์๋์ ์์ง๋ง ์์คํ ์ ๋ณต์ก์ฑ๋ง ๋ณด์ฌ์ค๋๋ค. ๊ฒฐ๊ตญ ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ๋ ์๋น์ค๋ฅผ ๋๊ธฐํํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋ธ๋ฆฟ์์ ํ์ผ์ ์ ์ฅํ ๋ค์ ํด๋ํฐ์์ ์ด๋ฅผ ๋ณด๋ ค๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น?
์ ๊ทผ ๋ฐฉ์์ ์ฐจ์ด์ ์ ์์ง์ ํ์ฅ์์๋ ๋
ธ๋์ ์ฑ๋ฅ์ ๋์ผ ์ค๋น๊ฐ ๋์ด ์๊ณ , ์ํ์ ํ์ฅ์์๋ ๋ถํ๋ฅผ ๋ถ์ฐํ๊ธฐ ์ํด ์ ๋
ธ๋๋ฅผ ์ถ๊ฐํ ์ค๋น๊ฐ ๋์ด ์๋ค๋ ๊ฒ์
๋๋ค.
CQRS
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฒซ ๋ฒ์งธ ๋ณด๋์ค๋ ๊ธด ์์ฒญ์ ์คํํ๋ ๋์ ์ฐ๊ฒฐ์ ๋๋ ๊ธฐ๋ฅ(๋์ ์๋ฏธ์์)์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์ ํ์ค์ ์ธ ์ํ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋์ต๋๋ค.
- ์๋ฒ๊ฐ ๊ธด ์ฒ๋ฆฌ ์๊ฐ์ ์์ํ์ต๋๋ค.
- ์๋ฒ๋ ๊ฒฐ๊ณผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ตํ์ต๋๋ค.
์ง์ 2์์ ์ฐ๊ฒฐ์ด ๋์ด์ก๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค(๋๋ ๋คํธ์ํฌ๊ฐ ๋ค์ ์ฐ๊ฒฐ๋๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ์ฌ ์ฐ๊ฒฐ์ด ๋์ด์ง). ์ด ๊ฒฝ์ฐ ์๋ฒ์์ ์ ํํ ์ด๋ค ์์ ์ด ์ฒ๋ฆฌ๋์๋์ง์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ ์๋ต์ ์ฌ์ฉ์์๊ฒ ๋ณด๋ด๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. CQRS๋ฅผ ์ฌ์ฉํ๋ฉด ์์๊ฐ ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ๊ตฌ๋ ํ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋์ต๋๋ค.
- ์๋ฒ๊ฐ "์์ฒญ ์๋ฝ๋จ"์ด๋ผ๊ณ ์๋ตํ์ต๋๋ค.
- ์๋ฒ๋ "1" ์ง์ ์ ์ฑ๋์ ํตํด ๊ฒฐ๊ณผ๋ก ์๋ตํ์ต๋๋ค.
๋ณด์๋ค์ํผ, ๊ณํ์ ์กฐ๊ธ ๋ ๋ณต์กํฉ๋๋ค. ๋์ฑ์ด ์ฌ๊ธฐ์๋ ์ง๊ด์ ์ธ ์์ฒญ-์๋ต ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ณด์๋ค์ํผ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋์ ์ฐ๊ฒฐ์ด ๋์ด์ ธ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ํ ์ค์ ๋ก ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ์ฅ์น(์: ํด๋ํฐ ๋ฐ ํ๋ธ๋ฆฟ)์์ ์๋น์ค์ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ ์๋ต์ด ๋ ์ฅ์น ๋ชจ๋์ ์ ๊ณต๋๋์ง ํ์ธํ ์ ์์ต๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ ๋ค์ด์ค๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ ํด๋ผ์ด์ธํธ ์์ฒด์ ์ํฅ์ ๋ฐ์ ์ด๋ฒคํธ์ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์ ์ด๋ฒคํธ๋ฅผ ํฌํจํ ๋ค๋ฅธ ์ด๋ฒคํธ ๋ชจ๋์ ๋ํด ๋์ผํฉ๋๋ค(100% ์๋).
๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๋จ๋ฐฉํฅ ํ๋ฆ์ด ๊ธฐ๋ฅ์ ์คํ์ผ(RX ๋ฑ์ ์ฌ์ฉํ์ฌ)๋ก ์ฒ๋ฆฌ๋ ์ ์๋ค๋ ์ฌ์ค๋ก ์ธํด ์ถ๊ฐ ๋ณด๋์ค๋ฅผ ์ป์ต๋๋ค. ๋ณธ์ง์ ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ ํ ๋ฐ์์ ์ผ๋ก ๋ง๋ค ์ ์๊ณ ๊ธฐ๋ฅ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ด๋ฏธ ์ฌ๊ฐํ ์ฅ์ ์ ๋๋ค. ๊ท๋ชจ๊ฐ ํฐ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ๊ฐ๋ฐ ๋ฐ ์ง์ ๋ฆฌ์์ค๋ฅผ ํฌ๊ฒ ์ ์ฝํ ์ ์์ต๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ํ ํ์ฅ๊ณผ ๊ฒฐํฉํ๋ฉด ๋ณด๋์ค๋ก ํ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ๋ค๋ฅธ ์๋ฒ์์ ์๋ต์ ๋ฐ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๋ ์์ ์๊ฒ ํธ๋ฆฌํ ์๋น์ค๋ฅผ ์ ํํ ์ ์์ผ๋ฉฐ ๋ด๋ถ ์์คํ ์ ์ฌ์ ํ โโ์ด๋ฒคํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ด๋ฒคํธ ์์ฑ
์์๋ค์ํผ ๋ถ์ฐ ์์คํ ์ ์ฃผ์ ํน์ง ์ค ํ๋๋ ๊ณตํต ์๊ฐ, ์ฆ ๊ณตํต ์๊ณ ์น์ ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ํ ํ๋ก์ธ์ค์ ๋ํด (๋์ผํ ๋ฎคํ ์ค์์) ๋๊ธฐํ๋ฅผ ์ํํ ์ ์์ผ๋ฉฐ, ๊ทธ ์์์ ๋ค๋ฅธ ๋๊ตฌ๋ ์ด ์ฝ๋๋ฅผ ์คํํ์ง ์๋๋ค๋ ๊ฒ์ ํ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ์ค๋ฒํค๋๊ฐ ํ์ํ๊ณ ํ์ฅ์ ๋ชจ๋ ์๋ฆ๋ค์์ ์์ ๊ธฐ ๋๋ฌธ์ ๋ถ์ฐ ์์คํ ์๋ ์ํํฉ๋๋ค. ๋ชจ๋ ๊ตฌ์ฑ ์์๋ ์ฌ์ ํ ํ๋๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์ฌ๊ธฐ์์ ์ฐ๋ฆฌ๋ ์ค์ํ ์ฌ์ค์ ์ป์ต๋๋ค. ๋น ๋ฅธ ๋ถ์ฐ ์์คํ
์ ๋๊ธฐํํ ์ ์์ต๋๋ค. ๋๊ธฐํํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ฉด์ ๊ตฌ์ฑ์์ ๊ฐ์ ์ผ์ ํ ์ผ๊ด์ฑ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํด๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ๊ฝค ์์ฃผ ์ฌ์ฉ๋๋ค๋ ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์๋ ์์
์ผ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ์์คํ
์ ์ผ๋ถ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ถํ ์ ์๋ ๊ฒฝ์ฐ
์ด ์ ๊ทผ ๋ฐฉ์์ ์ค์ํ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ค์ด์ค๋ ๊ฐ ์์ฒญ์ ํ๋์ ๋๊ธฐ์ด์ ๋ฐฐ์น๋ฉ๋๋ค.
- ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋์ ์๋น์ค๋ ์์ ์ ๋ค๋ฅธ ๋๊ธฐ์ด์ ๋ฐฐ์นํ ์๋ ์์ต๋๋ค.
- ๊ฐ ์์ ์ด๋ฒคํธ์๋ ์๋ณ์(์ค๋ณต ์ ๊ฑฐ์ ํ์ํจ)๊ฐ ์์ต๋๋ค.
- ๋๊ธฐ์ด์ "์ถ๊ฐ ์ ์ฉ" ๊ตฌ์ฑํ์ ๋ฐ๋ผ ์ด๋ ์ ์ผ๋ก ์๋ํฉ๋๋ค. ์์๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ์ฌ๋ฐฐ์ดํ ์ ์์ต๋๋ค.
- ๋๊ธฐ์ด์ FIFO ๋ฐฉ์์ ๋ฐ๋ผ ์๋ํฉ๋๋ค. ๋ณ๋ ฌ ์คํ์ ์ํํด์ผ ํ๋ ๊ฒฝ์ฐ ํ ๋จ๊ณ์์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ๋๊ธฐ์ด๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์จ๋ผ์ธ ํ์ผ ์ ์ฅ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ๊ณ ์์์ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค์ด์ด๊ทธ๋จ์ ์๋น์ค๊ฐ ๋ฐ๋์ ๋ณ๋์ ์๋ฒ๋ฅผ ์๋ฏธํ๋ ๊ฒ์ ์๋๋ผ๋ ์ ์ด ์ค์ํฉ๋๋ค. ์ฌ์ง์ด ๊ทธ ๊ณผ์ ๋ ๊ฐ์ ์๋ ์๋ค. ๋ ๋ค๋ฅธ ์ค์ํ ์ ์ ์ด๋ ์ ์ผ๋ก ์ด๋ฌํ ๊ฒ๋ค์ด ์ํ์ ํ์ฅ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋๋ก ๋ถ๋ฆฌ๋์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ ๋ช ์ ์ฌ์ฉ์์ ๋ํ ๋ค์ด์ด๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค(๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ์๋น์ค๋ ๋ค๋ฅธ ์์์ผ๋ก ํ์๋จ).
์ด๋ฌํ ์กฐํฉ์ผ๋ก ์ธํ ๋ณด๋์ค:
- ์ ๋ณด์ฒ๋ฆฌ ์๋น์ค๊ฐ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ๋๊ธฐ์ด๋ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ์์คํ ์ฒ๋ฆฌ๋์ ๋๋ ค์ผ ํ๋ค๋ฉด ๋ ๋ง์ ์๋ฒ์์ ๋ ๋ง์ ์๋น์ค๋ฅผ ์์ํ๋ฉด ๋ฉ๋๋ค.
- ์ฐ๋ฆฌ๋ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๋ฐ์ ๋ ๋ฐ์ดํฐ๊ฐ ์์ ํ ์ ์ฅ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค. ๋ฐ๋๋ก, "ok"๋ผ๊ณ ๋๋ตํ๊ณ ์ ์ฐจ์ ์ผ๋ก ์์ ์ ์์ํ๋ฉด ๋ฉ๋๋ค. ๋์์ ์ ๊ฐ์ฒด ์ถ๊ฐ๊ฐ ๋น ๋ฅด๊ฒ ๋ฐ์ํ๊ณ ์ฌ์ฉ์๊ฐ ์ ์ฒด ์ฃผ๊ธฐ๋ฅผ ํตํด ์์ ํ ํต๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๊ธฐ์ด์ ์ต๊ณ ์ ์ ํํํํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ๋์ผํ ํ์ผ์ ๋ณํฉํ๋ ค๊ณ ์๋ํ๋ ์ค๋ณต ์ ๊ฑฐ ์๋น์ค๋ฅผ ์ถ๊ฐํ์ต๋๋ค. 1%์ ๊ฒฝ์ฐ ์ค๋ซ๋์ ์๋ํ๋ค๋ฉด ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ๊ฑฐ์ ์์์ฐจ๋ฆฌ์ง ๋ชปํ ๊ฒ์ ๋๋ค(์ ์ฐธ์กฐ). ์ด๋ ๋ ์ด์ XNUMX% ์๋์ ์ ๋ขฐ์ฑ์ ์๊ตฌํ์ง ์๊ธฐ ๋๋ฌธ์ ํฐ ์ฅ์ ์ ๋๋ค.
๊ทธ๋ฌ๋ ๋จ์ ์ ์ฆ์ ๋๋ฌ๋ฉ๋๋ค.
- ์ฐ๋ฆฌ ์์คํ ์ ์๊ฒฉํ ์ผ๊ด์ฑ์ ์์์ต๋๋ค. ์ด๋ ์๋ฅผ ๋ค์ด ๋ค๋ฅธ ์๋น์ค๋ฅผ ๊ตฌ๋ ํ๋ ๊ฒฝ์ฐ ์ด๋ก ์ ์ผ๋ก ๋ค๋ฅธ ์ํ๋ฅผ ์ป์ ์ ์์์ ์๋ฏธํฉ๋๋ค(์๋น์ค ์ค ํ๋๊ฐ ๋ด๋ถ ๋๊ธฐ์ด์์ ์๋ฆผ์ ๋ฐ์ ์๊ฐ์ด ์์ ์ ์์ผ๋ฏ๋ก). ๋ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ก ์์คํ ์๋ ์ด์ ๊ณตํต ์๊ฐ์ด ์์ต๋๋ค. ์ฆ, ์๋ฅผ ๋ค์ด ์๋ฒ ๊ฐ์ ์๊ณ๊ฐ ๋๊ธฐํ๋์ง ์์ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๋จ์ํ ๋์ฐฉ ์๊ฐ๋ณ๋ก ์ ๋ ฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค(๊ฒ๋ค๊ฐ ๋ ์๋ฒ์ ๋์ผํ ์๊ฐ์ ์ ํ ํผ์์ ๋๋ค).
- ์ด์ ์ด๋ค ์ด๋ฒคํธ๋ ๊ฐ๋จํ ๋กค๋ฐฑํ ์ ์์ต๋๋ค(๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ฒ๋ผ). ๋์ , ์๋ก์ด ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๋ณด์ ์ด๋ฒคํธ , ๊ทธ๋ฌ๋ฉด ๋ง์ง๋ง ์ํ๊ฐ ํ์ํ ์ํ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋น์ทํ ๋ถ์ผ์ ์๋ฅผ ๋ค์๋ฉด, ํ์คํ ๋ฆฌ๋ฅผ ๋ค์ ์ฐ์ง ์์ผ๋ฉด(์ด๋ค ๊ฒฝ์ฐ์๋ ์ข์ง ์์) git์์ ์ปค๋ฐ์ ๋กค๋ฐฑํ ์๋ ์์ง๋ง ํน๋ณํ ์ปค๋ฐ์ ๋ง๋ค ์๋ ์์ต๋๋ค.๋กค๋ฐฑ ์ปค๋ฐ , ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์ ์ํ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ชป๋ ์ปค๋ฐ๊ณผ ๋กค๋ฐฑ์ ๋ชจ๋ ๊ธฐ๋ก์ ๋จ์ต๋๋ค. - ๋ฐ์ดํฐ ์คํค๋ง๋ ๋ฆด๋ฆฌ์ค๋ง๋ค ๋ณ๊ฒฝ๋ ์ ์์ง๋ง, ์ด์ ์ด๋ฒคํธ๋ ๋ ์ด์ ์๋ก์ด ํ์ค์ผ๋ก ์ ๋ฐ์ดํธ๋ ์ ์์ต๋๋ค(์ด๋ฒคํธ๋ ์์น์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฏ๋ก).
๋ณด์๋ค์ํผ ์ด๋ฒคํธ ์์ฑ์ CQRS์ ์ ์๋ํฉ๋๋ค. ๋์ฑ์ด ํจ์จ์ ์ด๊ณ ํธ๋ฆฌํ ๋๊ธฐ์ด์ ์ฌ์ฉํ์ง๋ง ๋ฐ์ดํฐ ํ๋ฆ์ ๋ถ๋ฆฌํ์ง ์๊ณ ์์คํ ์ ๊ตฌํํ๋ ๊ฒ ์์ฒด๊ฐ ์ด๋ฏธ ์ด๋ ต์ต๋๋ค. ๋๊ธฐ์ด์ ๊ธ์ ์ ์ธ ํจ๊ณผ ์ ์ฒด๋ฅผ ๋ฌด๋ ฅํํ ๋๊ธฐํ ์ง์ ์ ์ถ๊ฐํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ๋์์ ์ ์ฉํ๋ ค๋ฉด ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์ฝ๊ฐ ์กฐ์ ํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์๋ฒ์ ํ์ผ์ ๋ณด๋ผ ๋ "ok"๋ผ๋ ์๋ต๋ง ๋์ค๋ฉฐ ์ด๋ "ํ์ผ ์ถ๊ฐ ์์ ์ด ์ ์ฅ๋์์ต๋๋ค"๋ผ๋ ์๋ฏธ๋ง ์ ๋๋ค. ๊ณต์์ ์ผ๋ก ์ด๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ๋ค๋ฅธ ์ฅ์น์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค(์: ์ค๋ณต ์ ๊ฑฐ ์๋น์ค๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ๊ตฌ์ถํ ์ ์์). ๊ทธ๋ฌ๋ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ํด๋ผ์ด์ธํธ๋ "ํ์ผ X๊ฐ ์ ์ฅ๋์์ต๋๋ค."๋ผ๋ ํ์์ ์๋ฆผ์ ๋ฐ๊ฒ ๋ฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก :
- ํ์ผ ์ ์ก ์ํ ์๊ฐ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. ๊ธฐ์กด์ "ํ์ผ ์ ์ก๋จ" ๋์ "ํ์ผ์ด ์๋ฒ์ ๋๊ธฐ์ด์ ์ถ๊ฐ๋์์ต๋๋ค."์ "ํ์ผ์ด ์ ์ฅ์์ ์ ์ฅ๋์์ต๋๋ค."๋ผ๋ ๋ ๊ฐ์ง ์ํ๊ฐ ํ์๋ฉ๋๋ค. ํ์๋ ๋ค๋ฅธ ์ฅ์น๊ฐ ์ด๋ฏธ ํ์ผ ์์ ์ ์์ํ ์ ์์์ ์๋ฏธํฉ๋๋ค(๋๊ธฐ์ด์ด ๋ค๋ฅธ ์๋๋ก ์๋ํ๋ค๋ ์ฌ์ค์ ๋ง๊ฒ ์กฐ์ ๋จ).
- ์ด์ ์ ์ถ ์ ๋ณด๊ฐ ๋ค์ํ ์ฑ๋์ ํตํด ์ ๊ณต๋๋ฏ๋ก ํ์ผ ์ฒ๋ฆฌ ์ํ๋ฅผ ์์ ํ ์ ์๋ ์๋ฃจ์ ์ ์ฐพ์์ผ ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ธฐ์กด ์์ฒญ-์๋ต๊ณผ ๋ฌ๋ฆฌ ํ์ผ์ ์ฒ๋ฆฌํ๋ ๋์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ ์์ํ ์ ์์ง๋ง ์ด ์ฒ๋ฆฌ ์์ฒด์ ์ํ๋ ์ ํํฉ๋๋ค. ๊ฒ๋ค๊ฐ ์ด ํญ๋ชฉ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์ด์ ์คํจ์ ๋ ๊ด๋ํด์ก์ต๋๋ค.
์ค๋ฉ
์์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ์ด๋ฒคํธ ์์ฑ ์์คํ ์๋ ์๊ฒฉํ ์ผ๊ด์ฑ์ด ๋ถ์กฑํฉ๋๋ค. ์ด๋ ์๋ก ๋๊ธฐํํ์ง ์๊ณ ๋ ์ฌ๋ฌ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ฌธ์ ์ ์ ๊ทผํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
- ํ์ผ์ ์ ํ๋ณ๋ก ๊ตฌ๋ถํ์ธ์. ์๋ฅผ ๋ค์ด, ์ฌ์ง/๋น๋์ค๋ฅผ ๋์ฝ๋ฉํ๊ณ ๋ณด๋ค ํจ์จ์ ์ธ ํ์์ ์ ํํ ์ ์์ต๋๋ค.
- ๊ตญ๊ฐ๋ณ๋ก ๋ณ๋์ ๊ณ์ ์ ์ ๊ณตํฉ๋๋ค. ๋ง์ ๋ฒ๋ฅ ๋ก ์ธํด ์ด๊ฒ์ด ํ์ํ ์ ์์ง๋ง ์ด ์ํคํ ์ฒ ์ฒด๊ณ๋ ์๋์ผ๋ก ๊ทธ๋ฌํ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ ์ ์ฅ์์์ ๋ค๋ฅธ ์ ์ฅ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ค๋ ๊ฒฝ์ฐ ํ์ค ์๋จ์ผ๋ก๋ ๋ ์ด์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ํ๊น๊ฒ๋ ์ด ๊ฒฝ์ฐ ๋๊ธฐ์ด์ ์ค์งํ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํํ ๋ค์ ์์ํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ "์ฆ์" ์ ์ก๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฒคํธ ํ๊ฐ ์์ ํ ์ ์ฅ๋๊ณ ์ด์ ์ ์ฅ ์ํ์ ์ค๋ ์ท์ด ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฒคํธ๋ฅผ ์ฌ์ํ ์ ์์ต๋๋ค.
- ์ด๋ฒคํธ ์์ค์์ ๊ฐ ์ด๋ฒคํธ์๋ ๊ณ ์ ํ ์๋ณ์(์ด์์ ์ผ๋ก๋ ๊ฐ์ํ์ง ์์)๊ฐ ์์ต๋๋ค. ์ด๋ ๋ง์ง๋ง์ผ๋ก ์ฒ๋ฆฌ๋ ์์์ ID์ธ ํ๋๋ฅผ ์ ์ฅ์์ ์ถ๊ฐํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
- ๋ชจ๋ ์ด๋ฒคํธ๊ฐ ์ฌ๋ฌ ๋ ๋ฆฝ ์ ์ฅ์์ ๋ํด ์ฒ๋ฆฌ๋ ์ ์๋๋ก ๋๊ธฐ์ด์ ๋ณต์ ํฉ๋๋ค(์ฒซ ๋ฒ์งธ ์ ์ฅ์๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์ ์ฅ๋์ด ์๊ณ ๋ ๋ฒ์งธ ์ ์ฅ์๋ ์๋ก์ด ๊ฒ์ด์ง๋ง ์ฌ์ ํ ๋น์ด ์์). ๋ฌผ๋ก ๋ ๋ฒ์งธ ๋๊ธฐ์ด์ ์์ง ์ฒ๋ฆฌ๋์ง ์์ต๋๋ค.
- ๋ ๋ฒ์งธ ๋๊ธฐ์ด์ ์์ํฉ๋๋ค(์ฆ, ์ด๋ฒคํธ ์ฌ์์ ์์ํฉ๋๋ค).
- ์ ๋๊ธฐ์ด์ด ์๋์ ์ผ๋ก ๋น์ด ์์ผ๋ฉด(์ฆ, ์์ โโ์ถ๊ฐ์ ๊ฒ์ ์ฌ์ด์ ํ๊ท ์๊ฐ ์ฐจ์ด๊ฐ ํ์ฉ ๊ฐ๋ฅํจ) ๋ฆฌ๋๋ฅผ ์ ์ ์ฅ์๋ก ์ ํํ๊ธฐ ์์ํ ์ ์์ต๋๋ค.
๋ณด์๋ค์ํผ, ์ฐ๋ฆฌ ์์คํ ์๋ ์๊ฒฉํ ์ผ๊ด์ฑ์ด ์์๊ณ ์ง๊ธ๋ ์์ต๋๋ค. ์ฆ, ์ด๋ฒคํธ๊ฐ ๋์ผํ ์์๋ก ์ฒ๋ฆฌ๋๋ค๋ ๋ณด์ฅ(๊ทธ๋ฌ๋ ์ง์ฐ ์๊ฐ์ ๋ค๋ฅผ ์ ์์)๋ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ด์ฉํ๋ฉด ์ง๊ตฌ ๋ฐ๋ํธ์ผ๋ก ์์คํ ์ ๋ฉ์ถ์ง ์๊ณ ๋ ๋น๊ต์ ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
๋ฐ๋ผ์ ํ์ผ์ ์จ๋ผ์ธ ์ ์ฅ์์ ๋ํ ์๋ฅผ ๊ณ์ํ๋ฉด ์ด๋ฌํ ์ํคํ ์ฒ๋ ์ด๋ฏธ ๋ง์ ๋ณด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฐ๋ฆฌ๋ ๋์ ์ธ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด ์ด๋ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๋น์ค ํ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๋น์ฌ๋ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ํ์ฌ ๋ด์ ์ ์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ์
์ฌ์ฉ์๋ ๋ฐ์ดํฐ ์ ์ถ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํต์ ๋ ๋ฐ์ดํฐ ์ผํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ค๋ฉ์ ํตํด ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ฝ๊ฒ ์ง์ํ ์ ์์ต๋๋ค. ๊ณ ๊ฐ์ด ํธํ๋๋ ํด๋ผ์ฐ๋๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉด ์์
์ด ๋์ฑ ์ฌ์์ง๋๋ค(์:
Azure ์์ฒด ํธ์คํ ). - ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ตญ, ์ฐ๋ฆฌ๋ ์ ์ํ๊ฒ ์์ ์ ์์ํ๊ธฐ ์ํด ๋ชจ๋ ๊ณ์ ์ ๋ํด ํ๋์ ์คํ ๋ฆฌ์ง๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋งค์ฐ ๋ง์กฑํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์์คํ ์ ์ฃผ์ ํน์ง์ ํ์ฅ์ด ๊ฐ๋ฅํ์ง๋ง ์ด๊ธฐ ๋จ๊ณ์์๋ ๋งค์ฐ ๊ฐ๋จํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐฑ๋ง ๊ฐ์ ๋ณ๋ ๋ ๋ฆฝ ๋๊ธฐ์ด ๋ฑ์์ ์๋ํ๋ ์ฝ๋๋ฅผ ์ฆ์ ์์ฑํ ํ์๋ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๋์ค์ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์ ์ ์ฝํ ์ธ ํธ์คํ
์ด ์ ์ ๋งค์ฐ ๋ช
๋ฐฑํด ๋ณด์ผ ์ ์์ง๋ง ์ด๋ ์ ๋ ํ์ค์ด ๋ก๋๋ ์ ํ๋ฆฌ์ผ์ด์
์๋ ์ฌ์ ํ ํ์ํฉ๋๋ค. ๊ทธ ๋ณธ์ง์ ๊ฐ๋จํฉ๋๋ค. ๋ชจ๋ ์ ์ ์ฝํ
์ธ ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ ๋์ผํ ์๋ฒ๊ฐ ์๋๋ผ ์ด ์์
์ ํน๋ณํ ์ ๋
ํ๋ ํน์ ์๋ฒ์์ ๋ฐฐํฌ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด๋ฌํ ์์
์ ๋ ๋น ๋ฅด๊ฒ ์ํ๋ฉ๋๋ค(์กฐ๊ฑด๋ถ nginx๋ Java ์๋ฒ๋ณด๋ค ๋ ๋น ๋ฅด๊ณ ์ ๋ ดํ๊ฒ ํ์ผ์ ์ ๊ณตํฉ๋๋ค). ๊ฒ๋ค๊ฐ CDN ์ํคํ
์ฒ(
์ ์ ์ฝํ ์ธ ์ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ํ์ค์ ์ธ ์๋ ์น์ฌ์ดํธ์ ์คํฌ๋ฆฝํธ์ ์ด๋ฏธ์ง ์ธํธ์ ๋๋ค. ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํฉ๋๋ค. ์ฌ์ ์ ์๋ ค์ง ๋ค์ ์์นด์ด๋ธ๊ฐ CDN ์๋ฒ์ ์ ๋ก๋๋์ด ์ต์ข ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ์ ์ ์ฝํ ์ธ ์ ๊ฒฝ์ฐ ๋๋ค ์ํคํ ์ฒ์ ๋ค์ ์ ์ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ์ฉ์์๊ฒ ํ์ผ์ ๋ฐฐํฌํด์ผ ํ๋ ์์ (์จ๋ผ์ธ ํ์ผ ์ ์ฅ์)์ผ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ ๊ฐ ์ฌ์ฉ์ ์์ฒญ์ ๋ํด ํ์ํ ๋ชจ๋ ํ์ธ(์ธ์ฆ ๋ฑ)์ ์ํํ ๋ค์ ์ ์ฅ์์์ ์ง์ ํ์ผ์ ๋ค์ด๋ก๋ํ๋ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์ฅ ํฐ ๋จ์ ์ ์ ์ ์ฝํ ์ธ (๊ทธ๋ฆฌ๊ณ ํน์ ๊ฐ์ ์ด ํฌํจ๋ ํ์ผ์ ์ค์ ๋ก ์ ์ ์ฝํ ์ธ ์)๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ํฌํจํ๋ ๋์ผํ ์๋ฒ์ ์ํด ๋ฐฐํฌ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋์ ๋ค์ ๋ค์ด์ด๊ทธ๋จ์ ๋ง๋ค ์ ์์ต๋๋ค.
- ์๋ฒ๋ ๋ค์ด๋ก๋ URL์ ์ ๊ณตํฉ๋๋ค. file_id + key ํ์์ผ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ key๋ ๋ค์ 24์๊ฐ ๋์ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ ๋ฏธ๋ ๋์งํธ ์๋ช ์ ๋๋ค.
- ํ์ผ์ ๋ค์ ์ต์
์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ nginx๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
- ์ฝํ ์ธ ์บ์ฑ. ์ด ์๋น์ค๋ ๋ณ๋์ ์๋ฒ์ ์์นํ ์ ์์ผ๋ฏ๋ก ์ต์ ๋ค์ด๋ก๋ ํ์ผ์ ๋ชจ๋ ๋์คํฌ์ ์ ์ฅํ ์ ์๋ ๊ธฐ๋ฅ์ ๋ฏธ๋์ ๋๋นํด ๋จ๊ฒจ๋์์ต๋๋ค.
- ์ฐ๊ฒฐ ์์ฑ ์ ํค ํ์ธ
- ์ ํ ์ฌํญ: ์คํธ๋ฆฌ๋ฐ ์ฝํ ์ธ ์ฒ๋ฆฌ. ์๋ฅผ ๋ค์ด ์๋น์ค์ ๋ชจ๋ ํ์ผ์ ์์ถํ๋ ๊ฒฝ์ฐ ์ด ๋ชจ๋์์ ์ง์ ์์ถ ํ๊ธฐ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก IO ์์ ์ ํด๋น ์์น์์ ์ํ๋ฉ๋๋ค. Java์ ์์นด์ด๋ฒ๋ ๋ง์ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ ๋นํ์ง๋ง ๋น์ฆ๋์ค ๋ก์ง์ด ํฌํจ๋ ์๋น์ค๋ฅผ Rust/C++ ์กฐ๊ฑด๋ฌธ์ผ๋ก ๋ค์ ์์ฑํ๋ ๊ฒ๋ ํจ๊ณผ์ ์ด์ง ์์ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์๋ ๋ค์ํ ํ๋ก์ธ์ค(๋๋ ์๋น์ค)๊ฐ ์ฌ์ฉ๋๋ฏ๋ก ๋น์ฆ๋์ค ๋ก์ง๊ณผ IO ์์ ์ ๋งค์ฐ ํจ๊ณผ์ ์ผ๋ก ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
์ด ๋ฐฉ์์ ์ ์ ์ฝํ ์ธ ๋ฐฐํฌ์ ๋ณ๋ก ์ ์ฌํ์ง ์์ต๋๋ค(์ ์ฒด ์ ์ ํจํค์ง๋ฅผ ์ด๋๊ฐ์ ์ ๋ก๋ํ์ง ์๊ธฐ ๋๋ฌธ์). ๊ทธ๋ฌ๋ ์ค์ ๋ก ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ถ๋ณ ๋ฐ์ดํฐ ๋ฐฐํฌ์ ์ ํํ๊ฒ ๊ด๋ จ๋์ด ์์ต๋๋ค. ๋์ฑ์ด ์ด ๋ฐฉ์์ ์ฝํ ์ธ ๊ฐ ๋จ์ํ ์ ์ ์ธ ๊ฒ์ด ์๋๋ผ ๋ถ๋ณ ๋ฐ ์ญ์ ๋ถ๊ฐ๋ฅํ ๋ธ๋ก์ ์งํฉ์ผ๋ก ํํ๋ ์ ์๋ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ์ผ๋ฐํ๋ ์ ์์ต๋๋ค(์ถ๊ฐ๋ ์๋ ์์).
(๊ฐํ๋ฅผ ์ํ) ๋ ๋ค๋ฅธ ์: Jenkins/TeamCity๋ก ์์ ํ ๊ฒฝ์ฐ ๋ ์๋ฃจ์ ๋ชจ๋ Java๋ก ์์ฑ๋์์์ ์ ์ ์์ต๋๋ค. ๋ ๋ค ๋น๋ ์ค์ผ์คํธ๋ ์ด์ ๊ณผ ์ฝํ ์ธ ๊ด๋ฆฌ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ๋ Java ํ๋ก์ธ์ค์ ๋๋ค. ํนํ, ๋ ๋ค "์๋ฒ์์ ํ์ผ/ํด๋ ์ ์ก"๊ณผ ๊ฐ์ ์์ ์ ์ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ํฐํฉํธ ๋ฐํ, ์์ค ์ฝ๋ ์ ์ก(์์ด์ ํธ๊ฐ ์ ์ฅ์์์ ์ง์ ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํ์ง ์๊ณ ์๋ฒ๊ฐ ๋์ ์ํํ๋ ๊ฒฝ์ฐ), ๋ก๊ทธ์ ์ก์ธ์คํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ ์์ ์ IO ๋ก๋๊ฐ ๋ค๋ฆ ๋๋ค. ์ฆ, ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ ์๋ฒ๋ ๋์์ ๋๋์ ๋ฐ์ดํฐ ํ๋ฆ์ ์์ฒด์ ์ผ๋ก ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ ์ ์ด๋ฌํ ์์ ์ด ์ ํํ ๋์ผํ ์ฒด๊ณ์ ๋ฐ๋ผ ๋์ผํ nginx์ ์์๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค(์์ฒญ์ ๋ฐ์ดํฐ ํค๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ ์ ๋ง ์ ์ธ).
๊ทธ๋ฌ๋ ์์คํ ์ผ๋ก ๋์๊ฐ๋ฉด ๋น์ทํ ๋ค์ด์ด๊ทธ๋จ์ด ํ์๋ฉ๋๋ค.
๋ณด์๋ค์ํผ ์์คํ ์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ ๋ณต์กํด์ก์ต๋๋ค. ์ด์ ๋ ํ์ผ์ ๋ก์ปฌ์ ์ ์ฅํ๋ ๋จ์ํ ๋ฏธ๋ ํ๋ก์ธ์ค๊ฐ ์๋๋๋ค. ์ด์ ํ์ํ ๊ฒ์ ๊ฐ์ฅ ๊ฐ๋จํ ์ง์, API ๋ฒ์ ์ ์ด ๋ฑ์ด ์๋๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆฐ ํ์๋ ํ์ฅ์ฑ์ด ๋น์ฉ ๋๋น ๊ฐ์น๊ฐ ์๋์ง ์์ธํ ํ๊ฐํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ์์คํ ์ ํ์ฅํ๋ ค๋ฉด(๋ ๋ง์ ์์ ์ฌ์ฉ์์ ์์ ํ๋ ๊ฒ์ ํฌํจํ์ฌ) ์ ์ฌํ ์๋ฃจ์ ์ ์ ํํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ์์คํ ์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถํ ์ฆ๊ฐ์ ๋๋นํ ์ ์์ต๋๋ค(์ํ ํ์ฅ์ ์ํด ๊ฑฐ์ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ณต์ ํ ์ ์์). ์์คํ ์ ์ค์งํ์ง ์๊ณ ๋ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค(๊ฐ๋จํ ์ผ๋ถ ์์ ์ด ์ฝ๊ฐ ๋๋ ค์ง ์ ์์).
์ฒ์์ ๋งํ๋ฏ์ด ์ด์ ๋ง์ ์ธํฐ๋ท ์๋น์ค์ ๋ถํ๊ฐ ์ฆ๊ฐํ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค ์ค ์ผ๋ถ๋ ์ ๋๋ก ์๋ํ์ง ์๊ธฐ ์์ํ์ต๋๋ค. ์ฌ์ค, ์ฌ์ ์ด ๋์ ๋ฒ์ด์ผ ํ๋ ์๊ฐ์ ์์คํ ์ ์ ํํ ์คํจํ์ต๋๋ค. ์ฆ, ๋ฐฐ์ก์ ์ฐ๊ธฐํ๋ ๋์ ๊ณ ๊ฐ์๊ฒ "์์ผ๋ก ๋ช ๋ฌ ๋์ ๋ฐฐ์ก์ ๊ณํํ์ธ์"๋ผ๊ณ ์ ์ํ๋ ๋์ ์์คํ ์ ๋จ์ํ "๊ฒฝ์์ ์ฒด๋ก ๊ฐ์ญ์์ค"๋ผ๊ณ ๋งํ์ต๋๋ค. ์ฌ์ค ์ด๋ ๋ฎ์ ์์ฐ์ฑ์ ๋๊ฐ์ ๋๋ค. ์ด์ต์ด ๊ฐ์ฅ ๋์ ๋ ์์ค์ด ๋ฐ์ํฉ๋๋ค.
๊ฒฐ๋ก
์ด๋ฌํ ๋ชจ๋ ์ ๊ทผ ๋ฐฉ์์ ์ด์ ์ ์๋ ค์ ธ ์์์ต๋๋ค. ๋์ผํ VK๋ ์ค๋ซ๋์ ์ ์ ์ฝํ ์ธ ํธ์คํ ์์ด๋์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ํ์ํด ์์ต๋๋ค. ๋ง์ ์จ๋ผ์ธ ๊ฒ์์์๋ ์ค๋ฉ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ ์ด์ด๋ฅผ ์ง์ญ์ผ๋ก ๋๋๊ฑฐ๋ ๊ฒ์ ์์น๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค(์ธ๊ณ ์์ฒด๊ฐ ํ๋์ธ ๊ฒฝ์ฐ). ์ด๋ฒคํธ ์์ฑ ์ ๊ทผ ๋ฐฉ์์ ์ด๋ฉ์ผ์์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ง์์ ์ผ๋ก ์์ ๋๋ ๋๋ถ๋ถ์ ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ๋ก ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ ์ ์๋๋ก CQRS ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค. ์, ์ํ์ ํ์ฅ์ ๊ฝค ์ค๋ซ๋์ ๋ง์ ์๋น์ค์์ ์ฌ์ฉ๋์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด๋ฌํ ๋ชจ๋ ํจํด์ด ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฉํ๊ธฐ๊ฐ ๋งค์ฐ ์ฌ์์ก๋ค๋ ๊ฒ์ ๋๋ค(๋ฌผ๋ก ์ ์ ํ ๊ฒฝ์ฐ). ํด๋ผ์ฐ๋๋ ์ค๋ฉ๊ณผ ์ํ์ ํ์ฅ์ ์ฆ์ ์ ๊ณตํ๋๋ฐ, ์ด๋ ๋ค์ํ ๋ฐ์ดํฐ ์ผํฐ์ ์๋ ๋ค์ํ ์ ์ฉ ์๋ฒ๋ฅผ ์ง์ ์ฃผ๋ฌธํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฝ์ต๋๋ค. CQRS๋ RX์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋ฐ ๋๋ถ์ ํจ์ฌ ์ฌ์์ก์ต๋๋ค. ์ฝ 10๋ ์ ์๋ ๋ณด๊ธฐ ๋๋ฌธ ์น์ฌ์ดํธ๊ฐ ์ด๋ฅผ ์ง์ํ ์ ์์์ต๋๋ค. Event Sourcing์ Apache Kafka๊ฐ ํฌํจ๋ ๊ธฐ์ฑ ์ปจํ ์ด๋ ๋๋ถ์ ์ค์ ํ๊ธฐ๋ ๋งค์ฐ ์ฝ์ต๋๋ค. 10๋ ์ ์๋ ์ด๊ฒ์ด ํ์ ์ด์์ ๊ฒ์ ๋๋ค. ์ด์ ๋ ํํ ์ผ์ ๋๋ค. ์ ์ ์ฝํ ์ธ ํธ์คํ ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๋ณด๋ค ํธ๋ฆฌํ ๊ธฐ์ (์์ธํ ๋ฌธ์์ ๋๊ท๋ชจ ๋ต๋ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ค๋ ์ฌ์ค ํฌํจ)๋ก ์ธํด ์ด ์ ๊ทผ ๋ฐฉ์์ ๋์ฑ ๋จ์ํด์ก์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ค์ ๋ณต์กํ ์ฌ๋ฌ ์ํคํ ์ฒ ํจํด์ ๊ตฌํ์ด ์ด์ ํจ์ฌ ๋จ์ํด์ก์ต๋๋ค. ์ฆ, ๋ฏธ๋ฆฌ ์์ธํ ์ดํด๋ณด๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. 10๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ ๊ตฌํ ๋ฐ ์ด์ ๋น์ฉ์ผ๋ก ์ธํด ์ ์๋ฃจ์ ์ค ํ๋๊ฐ ํฌ๊ธฐ๋ ๊ฒฝ์ฐ, ์ด์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋๋ ๋ฆฌํฉํ ๋ง ํ์ ์ด๋ฏธ ๊ตฌ์กฐ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ ์๋น์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค( ์ฑ๋ฅ ์ธก๋ฉด์์) ๊ณ ๊ฐ์ ์๋ก์ด ์์ฒญ(์: ๊ฐ์ธ ๋ฐ์ดํฐ ํ์งํ)์ ์ฆ์ ๋์ํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ฐ๋จํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์, ์๋ฆ๋ต๊ณ ํฅ๋ฏธ๋กญ์ต๋๋ค. ํ์ง๋ง ์ต๋ ๋ฐฉ๋ฌธ์ ์๊ฐ 100๋ช ์ธ ์ฌ์ดํธ์ ๊ฒฝ์ฐ ๊ณ ์ ์ ์ธ ๋จ์ผ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค(์ ์ด๋ ์ธ๋ถ์์๋ ๋ด๋ถ์ ๋ชจ๋ ๊ฒ์ ๋ชจ๋๋ก ๋๋ ์ ์์ต๋๋ค ๋ฑ).
์ถ์ฒ : habr.com