๋๊ท๋ชจ ํธ๋ํฝ์ ๊ฐ๋นํ๋ MSA ํฐ์ผ ์๋งค ์ํคํ ์ฒ ์ค๊ณํ๊ธฐ ( 0์ฃผ์ฐจ )
1์ฃผ์ฐจ๋ฅผ ์ฝ๊ธฐ ์ ์ ๋จผ์ , 0์ฃผ์ฐจ์์ ๊ธฐ๋ณธ์ ์ธ ์์คํ ์ค๊ณ ์ํคํ ์ฒ๋ฅผ ์ดํดํ๊ณ ๋ณธ ๊ธ์ ์ฝ๊ธฐ๋ฅผ ์ถ์ฒ ๋๋ฆฝ๋๋ค.
์๋ฒ ํ๊ฒฝ ๊ตฌ์ถ
์ ์ค๊ณ์์ ํ์ธํ์ค ์ ์๋ฏ์ด ์ ํฌ๊ฐ ๊ธฐ์กด์ ์ค๊ณํ ์์คํ ์ ์ด 4๋์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ ๋ฆฝ๋ ์๋ฒ์์ ๋์ํ๋ ์์คํ ์ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ด 4๋์ ์๋ฒ๊ฐ ํ์ํ์ต๋๋ค.
- ํ๋ก ํธ์๋ ์น์๋ฒ → ๋ฐํ์ SSR ์ฒ๋ฆฌ
- ์ผ๋ฐ API ์๋ฒ(WAS)
- ํฐ์ผ ์๋งค ์๋ฒ(Ticker WAS)
- ๋๊ธฐ์ด ์๋ฒ(Queue WAS)

์ด๋ ๊ฒ ์๋ฒ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ ๊ฒ์๋ ‘์ฅ์ ์ ํ๋ฅผ ์ต์ํํ์๋ ์๋’์ ‘์์ญ๋ง์ ํธ๋ํฝ์ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ์๋ ๋ชฉ์ ’์ ๊ฐ์ง๊ณ ์์์ง๋ง, ์ค์ ๊ตฌํ ๋จ๊ณ์ ๋ค์ด์๋ฉด์ ๋ช ๊ฐ์ง ํ์ค์ ์ธ ์ ์ฝ์ ์ง๋ฉดํ์ต๋๋ค.
์ฒซ์งธ, ํ์ ๋ชจ๋๊ฐ MSA ํ๊ฒฝ ์ด์ ๊ฒฝํ์ด ์๋ ์ํฉ์์ ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ๋์์ ๊ด๋ฆฌํ๋ ๊ฒ์ ํ์ต ๋ฐ ์ด์ ๋ถ๋ด์ด ์๋นํ์ต๋๋ค.
๋์งธ, ๋ค์ด๋ฒ ๋ถ์คํธ์บ ํ์์ ์ ๊ณต๋๋ ์ธํ๋ผ ํฌ๋ ๋ง์ด ์ด 30๋ง ์์ด๋ฉฐ, ์ต์ 3๊ฐ์๊ฐ ๋ฐฐํฌ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ค๋ ์กฐ๊ฑด์ด ์์์ต๋๋ค.
๋๊ท๋ชจ ํธ๋ํฝ ํ ์คํธ ๋น์ฉ๊ณผ ์๋น ๋น์ฉ์ ๊ณ ๋ คํด ์ฝ 5๋ง ์์ ์ ์ธํ๋ฉด,
์ค์ง์ ์ผ๋ก ์๋ณ๋ก ์ฌ์ฉํ ์ ์๋ ์๋ฒ ๋น์ฉ์ ์ฝ 7~8๋ง ์ ์์ค ์ด์์ต๋๋ค.
๊ทธ๋ฌ๋ NCloud ๊ธฐ์ค ์ต์ ์ฌ์(vCPU 2, Memory 4GB) ์๋ฒ ํ ๋์ ์ ๋น์ฉ๋ง์ผ๋ก๋
์ด๋ฏธ ์ด ์์ฐ์ ๊ทผ์ ํ๋ ์์ค์ด์๊ณ , ๊ธฐ์กด์ ์ค๊ณํ 3~4๋์ ์๋ฒ๋ฅผ ๊ทธ๋๋ก ์ด์ํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ์ต๋๋ค.


๊ทธ๋๋ง ์ ํ ๊ฐ๋ฅํ ๋์์
- ๊ณ์ ๋น 1๋ ์ ๊ณต๋๋ Micro-g1 ๋ฌด๋ฃ ์๋ฒ
- vCPU 1, Memory 1~2GB ์์ค์ compact-g1 ์๋ฒ(์ 26,000์)
์ด์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด compact-g1 server ๊ธฐ์ค์ผ๋ก๋ ์ต๋ 3๋(78,000์) ๊น์ง์ ์๋ฒ๋ฅผ ๋์ฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ๊ฐ์ฅ ๊ฑฑ์ ์ด ๋๋ ์ ์, ์ ํฌ๋ ์๋ฌด๋๋ ‘์์ญ๋ง๋ช ์ ๋๊ท๋ชจ ํธ๋ํฝ์ ๊ฐ๋นํ ์ ์๋ ์๋ฒ’ ๋ฅผ ๋ชฉํ๋ก ํ๊ณ ์๊ธฐ ๋๋ฌธ์, ํน์๋ ์ด๋ฌํ ‘๋ฎ์ ์๋ฒ ์คํ์ ์ ํํ์ ๋ ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋๋ฐ ๊ฑธ๋ฆผ๋์ด ๋์ง ์์๊น?’ ๊ณ ๋ฏผํ๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ณ ๋ฏผ์ผ๋ก๋ ์ด์ด์ก์ต๋๋ค.
“์ ์ฌ์·์์ ์๋ฒ ํ๊ฒฝ์์
‘์์ญ๋ง ๋ช ํธ๋ํฝ์ ๊ฐ๋นํ๋ ์์คํ ’์ด๋ผ๋ ๋ชฉํ๊ฐ ๊ณผ์ฐ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์์๊น?”
๋ฌผ๋ก ๊ธฐ์ ์ ์ต์ ํ๋ฅผ ํตํด ๋จ์ผ ์๋ฒ์์ ์ฒ๋ฆฌ๋์ ์ด๋ ์ ๋ ๋์ด์ฌ๋ฆด ์๋ ์์ต๋๋ค.
ํ์ง๋ง ๊ทผ๋ณธ์ ์ผ๋ก ์๋ฒ์ ์ฒ๋ฆฌ๋์ CPU์ ๋ฉ๋ชจ๋ฆฌ๋ผ๋ ๋ฌผ๋ฆฌ์ ์์์ ๊ฐํ๊ฒ ์์กดํ๋ฉฐ,
์ ์ฌ์·์์ ์๋ฒ ํ๊ฒฝ์์ ์ค์ ์์ญ๋ง ๋ช ์ ๋์ ํธ๋ํฝ์ ๊ฐ๋นํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ์ด๋ ค์ธ ์ ์์ต๋๋ค.
์ค์ ๋ก ์ฌ์ค ์์ ์ ํ์ด ์๋ค๋ ๊ฐ์ ํ์ ๋ฌดํ๋์ ์๋ฒ๋ฅผ ๋์ฌํ ์ ์๋ค๋ฉด, ๋๊ท๋ชจ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ ์๋ฒ์ ์ฌ์ ํน์ ๋์๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ๊ฒฐ๊ตญ ์ด๋ฌํ ์๋๊ฐ ๋จ์ํ ์๋ฒ๋ฅผ ๋๋ฆฌ๋ ๊ฒ์์ ๊ทธ์น์ง ์๊ณ ์ด๋ฅผ ๊ธฐ์ ์ ์ผ๋ก ์๋ฏธ์๋ ๋์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ด ๋ชฉํ๋ฅผ ์ฌ์ ์ํ๊ฒ ๋์์ต๋๋ค.
- ์ฃผ์ด์ง ๋น์ฉ๊ณผ ์๋ฒ ์ ์ฝ(์ฌ์·๋์)์ ๊ณ ์ ํ ์ํ์์, ๊ทธ ์์์ ์ต๋ํ์ ์ฒ๋ฆฌ๋์ ๋ฌ์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
- ์ ๋์ ์ธ ์ฌ์ฉ์ ์๊ฐ ์๋๋ผ, ์๋ฒ 1๋๋น ๊ฐ๋น ๊ฐ๋ฅํ ์ฒ๋ฆฌ๋(๋จ์ ์ฒ๋ฆฌ๋)์ ์ง์คํ๋ค.
- ๋ง์ฝ compact-g1 server ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ต๋ 1๋ง๋ช ์ ์ฌ์ฉ์๊น์ง๋ง ๋ฐ์ ์ ์์๋ค๋ฉด, ์ด๋ฅผ 10๋๋ก Auto-Scaling ํ์ ๋๋ ์ต๋ 10๋ง๋ช ์ ์ฌ์ฉ์๋ฅผ ๋ฐ์ ์ ์๋ค๊ณ ๋ ๋ณผ ์ ์์ต๋๋ค. ๋น๋ก ์ค์ 10๋ง๋ช ์ ์ ์ ํธ๋ํฝ์ ํ ์คํธํด๋ณด์ง๋ ๋ชปํ์ด๋, ๋น์ฉ(๋)๋ง ์ถฉ๋ถํ๋ค๋ฉด ์์ญ๋ช ๊น์ง ๊ฐ๋นํ ์ ์๋ ์์คํ ์ด๋ผ๋ ๊ฒ์ ๊ฐ์กฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋๊ฐ์ง ํ์ค์ ์ธ ๋์
๋ฐ๋ผ์ ์ ํฌ๋ ํ์ค์ ์ธ ์์์ ํ๊ณ๋ฅผ ๊ณ ๋ คํด์ ๋ณธ ์ค๊ณ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ํ๊ธฐ ์ํ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ์ํ๊ณ , ๊ณ ๋ฏผํ๊ฒ ๋์์ต๋๋ค.
- ์ฌ์์ด ์ข์ ๋จ์ผ ์๋ฒ ํ๋์ ๋์ปค ์ปจํ
์ด๋๋ก MSA ๊ตฌ์กฐ๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ
- ์ฅ์
- ์๋ฒ ์ฌ๋ฌ๋๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค.
- ๋จ์
- ๋์ปค๋ก๋ CPU / ๋ฉ๋ชจ๋ฆฌ / ๋คํธ์ํฌ ๋ฌผ๋ฆฌ ์์ ๊ฒฝํฉ ์ ํด๊ฒฐํ์ง ๋ชปํจ
- cgroup ์ ํตํด ์ด๋ก ์ ์ผ๋ก ์์์ ์ ํํ ์ ์๋ค๋ ์๊ฒฌ์ด ๋์์ง๋ง ์ด๋ ๋ ผ๋ฆฌ์ ๋ถ๋ฆฌ์ด์ง ๋ฌผ๋ฆฌ์ ๋ณดํธ๊ฐ ์๋๋ฏ๋ก, ์ปค๋ ์ค์ผ์ค๋ฌ, GC ์๊ฐ burst ๋ฑ์ผ๋ก ์๋ฒฝํ๊ฒ ๊ฒฉ๋ฆฌํ๋ ๊ฒ์ ์ด๋ ต๋ค๊ณ ํ๋จ.
- ๋๊ธฐ์ด ์๋ฒ + ํฐ์ผ ์๋งค WAS๋ฅผ ๊ฐ์ ๋ฌผ๋ฆฌ ์๋ฒ์ ์ฌ๋ฆฌ๋ฉด, ๋๊ธฐ์ด ํธ๋ํฝ ์ฆ๊ฐ ์ CPU·๋ฉ๋ชจ๋ฆฌ ์์ ๊ฒฝํฉ(Resource Contention)์ด ๋ฐ์ํ์ฌ ํฐ์ผ ์๋งค ์์ฒญ์ด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์ง ๋ชปํ ์ํ์ด ์๋ค.
- ๋์ปค๋ก๋ CPU / ๋ฉ๋ชจ๋ฆฌ / ๋คํธ์ํฌ ๋ฌผ๋ฆฌ ์์ ๊ฒฝํฉ ์ ํด๊ฒฐํ์ง ๋ชปํจ
- ์ฅ์
- 3๋์ ์๋ฒ๋ฅผ ์ด์ฉ : ๊ฐ๊ฐ ํ๋ก ํธ์๋ ์น์๋ฒ, ์ผ๋ฐ+ํฐ์ผ ์๋งค ์๋ฒ, ๋๊ธฐ์ด ์๋ฒ ๋ก ๋๋๋ค.
- ์ฅ์
- ์ต์ํ์ ์ค์ผ์ผ๋ง ๋จ์๋ ์ ์งํ๋ฉด์ ์ฅ์ ์ ํ๋ฅผ ์ต์ํํ ์ ์๋ค.
- ๋จ์
- ์๋ฒ 3๋๋ฅผ ๋์์ ์ด์ฉํด์ผ ํ๋ค.
- ์ฅ์
3๋์ ์๋ฒ๋ฅผ ์ด์ฉํ๊ธฐ
์ฐ์ ์๋ฒ๋ฅผ 3๋๋ฐ์ ํ์ฉํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, ๋๊ฐ์ ์๋ฒ๋ ํ๋ฐ ๋ฌถ์ด์ ๋ฐฐํฌํ๋ ๊ฒฐ์ ์ ํด์ผํ์ต๋๋ค.
ํนํ๋ 3๋์ ์๋ฒ๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ์ ๊ธฐ์กด ์๋ฒ 4๋ ์ค ์ด๋ค ์กฐํฉ์ ํฉ์ณ๋ ๊ด์ฐฎ์์ง์ ๋ํด์๋ ๊ณ ๋ฏผ์ ํด๋ณด์์ต๋๋ค.
1. Web Server + ์ผ๋ฐ Backend
์ฒ์์๋ ์ผ๋ฐ Backend ์๋ฒ์ ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๊ฑฐ๋ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋, ํ๋ก ํธ์๋์์๋ ํญ์ ์์ ์ ์ผ๋ก ์๋ฌ ๋ฉ์์ง ํ๋ฉด์ ์ ๊ณตํ๊ธฐ ์ํด Web Server ์ ์ผ๋ฐ Backend ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ์ ํ์ ํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ผ๋ฐ์ ์ผ๋ก Web Server ์ ์ผ๋ฐ Backend ๊ฐ ๊ฐ๋นํด์ผํ๋ ์ฌ์ฉ์ ์๋ ๊ฑฐ์ ๋น์ทํฉ๋๋ค.
์ด๋ก ์ธํด ์ค์ ํธ๋ํฝ ํผํฌ ์ํฉ์์๋ Web Server ์ ์ผ๋ฐ Backend ๊ฐ ๊ฐ๋นํด์ผ ํ๋ ๋ถํ ์์ค์ด ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค๊ณ ํ๋จํ์ต๋๋ค.
๋ฐ๋ผ์ ์ผ๋ฐ Backend ๊ฐ ํธ๋ํฝ ๋ฌธ์ ๋ก ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ๋์ ์ํฉ์ด๋ผ๋ฉด, ๋์ผํ ์ธํ๋ผ ํ๊ฒฝ์์๋ Web Server ์ญ์ ํจ๊ป ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ณ , ์ด ๊ฒฝ์ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๋๋ผ๋ ๋ณ๋ชฉ ์ง์ ์ ๋ถ๋ฆฌํ๋ ํจ๊ณผ๋ ์ ํ์ ์ด๋ผ๊ณ ๋ณด์์ต๋๋ค.
์ด๋ฌํ ์ด์ ๋ก Web Server ์ ์ผ๋ฐ Backend ๋ ํ๋์ ์๋ฒ๋ก ํตํฉํด๋ ์ ์ฒด ์์คํ ์์ ์ฑ ์ธก๋ฉด์์ ํฐ ์ํด๋ ์๋ค๊ณ ํ๋จํ์ต๋๋ค.
๋ค๋ง, ํ๋ก ํธ์๋ ๋น๋ ๊ฒฐ๊ณผ๋ฅผ CDN ๊ฐ์ ๊ณณ์ ๋ฐฐํฌํด์ ํธ๋ํฝ์ ์ ๋์ ์ผ๋ก ๋์ํ ์ ์๊ฒ๋ ํ ์ ์๋ค๋ฉด, ํ์คํ ์ด๋ค ์ํฉ์์๋ ์ ์ ๋น๋ ๊ฒฐ๊ณผ(HTML&CSS&JS) ๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ ์ ์์
์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ์์ ์ ์ํ์ง ๋ชปํ๋ ์ํฉ์ ๋ฒ์ด์ง์ง ์์ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋๋ฉ๋๋ค. ( ์ต์ํ ์๋ฌ ํ์ด์ง๋ ๋ณด์ฌ์ค ์ ์์ )
์ ์ ๋ฆฌ์์ค ์๋ฒ์ API ์๋ฒ์ ๋ถํ ๊ท๋ชจ์ ํจํด์ ๋ค๋ฅธ๋ฐ, ์ ๋น์ทํ๋ค๊ณ ๋จ์ ํ์ง?
๋ฌผ๋ก , ์ ์ ๋ฆฌ์์ค ์๋ฒ์ API ์๋ฒ์ ๋ถํ ํจํด๊ณผ ๊ท๋ชจ๋ ๋ค๋ฅผ ์ ์์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํ๋ก ํธ์๋ ์น์๋ฒ๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ์๋นํ๋ ์ญํ ์ ๋งก์ต๋๋ค.
- ๋ง์ผ SSR ์ ์ต์ํํ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ฐํ๋ค๋ฉด, SPA + CSR ๊ตฌ์กฐ์์๋ ์ ์ ๋ฆฌ์์ค ์์ฒญ์ด ์ด๊ธฐ ๋ก๋ฉ์ ์ง์ค๋๊ณ , ์ดํ ํธ๋ํฝ์ ๋๋ถ๋ถ์ API ์์ฒญ ํํ๋ก ์ผ๋ฐ Backend ์ ์ง์ค๋ฉ๋๋ค.
- ์ ์ ๋ฆฌ์์ค ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋จ์ํ ํ์ผ์ ์ฝ๊ณ ์ ๋ฌ๋ง ํ๋ฉด ๋๋ ์๋์ ์ผ๋ก ๊ฐ๋ฒผ์ด ์์ ์ด๋ฉฐ, CDN / ๋ธ๋ผ์ฐ์ ์บ์๋ก ๋ถํ๋ฅผ ๊ฐ์ํ ์ ์๊ธฐ์ ๊ฒฐ๊ตญ ํธ๋ํฝ ํผํฌ์ ์ค์ง์ ์ธ ์์ธ์ API ์์ฒญ์์ ๋ฐ์ํฉ๋๋ค.
- API ์๋ฒ์์๋ ์ธ์ฆ/์ธ๊ฐ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ฉด์ ์๋์ ์ผ๋ก ํฐ CPU ์ ๋ฉ๋ชจ๋ฆฌ ์์์ ์๋ชจํ๊ฒ ๋๊ณ , DB I/O (DB, Redis) ๋ฑ์ผ๋ก ์๋์ ์ผ๋ก ๋น์ฉ์ด ๋์ต๋๋ค.
- ๋ฐ๋ผ์ ๋์์ ๊ฐ์ ์์ ์ ์ ๊ฐ ์ ์ํ์ ๋, ๋ฐฑ์๋ API์๋ฒ๋ง ๋ถํ๊ฐ ๊ฑธ๋ ค์ ํฐ์ง๊ณ , ์๋์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์์ฒญ์ด ๊ฐ๋ฒผ์ด ํ๋ก ํธ ์น์๋ฒ๋ ํฐ์ง์ง ์๋ ์ํฉ์ด ๋ฐ์ํ ์๋ ์์ต๋๋ค.
- ์ด ๊ฒฝ์ฐ์๋ ๋ณ๋ชฉ ์ง์ ์ ๋ถ๋ฆฌํด์ ํญ์ HTML ์ ๋ณด์ฌ์ค ์ ์๋๋ก ์ค๊ณํ๋๊ฒ ์๋ฏธ ์๋ ์ ํ์ด๋ผ๊ณ ๋ณผ ์๋ ์์ต๋๋ค.
๊ทธ๋ฌ๋, ์ ํฌ๊ฐ ์ ์ฌ์ ์๋ฒ (vCPU 1, 1~2GB RAM)๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ด์ ์์๋ ์๋ฌด๋ฆฌ ์ ์ ์๋ฒ๊ฐ ๊ฐ๋ณ๋ค๊ณ ํด๋ ๋คํธ์ํฌ / ์ด๋ฒคํธ ๋ฃจํ / ๋ฉ๋ชจ๋ฆฌ ์๋ฐ ์ ๊ฐ์ด ๋ฐ์ํ ๋ API ์๋ฒ๋ง ํฐ์ง๊ณ ํ๋ก ํธ๋ ๋ฉ์ฉกํ ์ด์์ ์ธ ๊ทธ๋ฆผ์ด ์ ๊ทธ๋ ค์ง์ง ์์์ต๋๋ค.
์๋ํ๋ฉด, ์๋ฅผ ๋ค์ด ํ๋ก ํธ์๋ ์ ์ ์น์๋ฒ๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ง ~ ์์ญ๋ง rps (Requests Per Second), ์ผ๋ฐ API ๋ 1์ฒ ~ ์์ฒ rps ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด,
| ์ ์ ๋ฆฌ์์ค | 50,000+ rps |
| SSR | 200~500 rps |
| ์ผ๋ฐ API | 1,000~2,000 rps |
| ํฐ์ผํ API | 50~200 rps |
๋๋ต์ ์ผ๋ก ๊ณ์ฐํ์ ๋, ๋ฉ์ธ ํ์ด์ง์์ ๊ฐ ์ฌ์ฉ์๊ฐ 5์ด์ 1๋ฒ ์์ฒญ์ ๋ณด๋ธ๋ค๋ฉด, API ์๋ฒ๋ ์ต๋ 400๋ช ์ ์ฌ์ฉ์๋ฅผ ๋ฐ์ ์ ์๊ณ , ๋ฐ๋ฉด, ์ ์ ๋ฆฌ์์ค ์๋ฒ๋ 50,000๋ช ์ ์ฌ์ฉ์๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
๊ฒฐ๊ตญ ์ด๋ฌํ ๊ตฌ์กฐ๊ฐ ๋ณ๋ชฉ ์ง์ ๋ถ๋ฆฌ๋ก ์คํจ์ฑ์ ๋ฐํํ๋ ๊ฒ์ 400~50,000๋ช
์ฌ์ด ๊ตฌ๊ฐ์ ์ฌ์ฉ์ ์์ฒญ์ด ๋ค์ด์์ ๋์ด๊ณ , 5๋ง๋ช
์ด์์ ํธ๋ํฝ์ด ๋ชฐ๋ฆด ๊ฒฝ์ฐ์๋ ๋ ์๋ฒ๊ฐ ๋ชจ๋ ํฐ์ ธ์ ๋ณ๋ชฉ ์ง์ ์ ๋ถ๋ฆฌํ ๊ฒ์ด ํฌ๊ฒ ์๋ฏธ๊ฐ ์์ ์ ์๋ค๋ ๊ฒฐ๋ก ์ ์ด๋ฆ
๋๋ค.
2. ํฐ์ผ ์๋งค WAS + ์ผ๋ฐ Backend (์ด๊ธฐ)
๋๋ฒ์งธ๋ WAS ์ ์ผ๋ฐ Backend ๋ฅผ ํฉ์น๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฌ์ค ์ด ๋์ ๋ฐฐํฌ๋จ์๋ฅผ ๋ถ๋ฆฌํ๋๋ก ์ค๊ณํ ์ด์ ๋ ์์ ์ด์ ์ ๋น์ทํฉ๋๋ค.
์ฒ์์๋ ์ผ๋ฐ Backend(WAS)์ ํฐ์ผ ์๋งค WAS๋ฅผ ๋ถ๋ฆฌํด ๋ฐฐํฌํ๋๋ก ์ค๊ณํ์ต๋๋ค.
๊ทธ ์ด์ ๋ ์ผ๋ฐ WAS๋ ์ฑํ , ๊ณต์ฐ ์กฐํ ๋ฑ ๋น๊ต์ ๊ฐ๋ฒผ์ด ์์ฒญ์ ์ง์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐ๋ฉด,
ํฐ์ผ ์๋งค WAS๋ ์๋งค ์์ ์์ ์ ๋ค์์ ์ฌ์ฉ์๊ฐ ๋์์ ์์ฒญ์ ๋ณด๋ด๋ฉฐ
์๊ฐ์ ์ธ ํธ๋ํฝ ํผํฌ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๊ณ ์ด๊ฒ์ด ์ผ๋ฐ ๊ธฐ๋ฅ ์ฌ์ฉ์ ์ํฅ์ ์ค ์ ์๊ฒ ๋ค๊ณ ํ๋จํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์ธํฐํํฌ์์ ๋ํ ์ฝ์ํธ ํฐ์ผํ ์ด ์งํ๋๋๋ผ๋,
ํด๋น ๊ณต์ฐ์ ์๋งค ํธ๋ํฝ์ผ๋ก ์ธํด ๊ณต์ฐ ๋ชฉ๋ก ์กฐํ๋ ์ฑํ ๊ณผ ๊ฐ์ ์ผ๋ฐ ์๋น์ค ๊ธฐ๋ฅ๊น์ง ํจ๊ป ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ์ํฉ์ ์ง์ํ๊ณ ์ ํ์ต๋๋ค.
ํ์ง๋ง ๋ค์ ๊ตฌ์กฐ๋ฅผ ๊ฒํ ํ๋ฉด์, ์คํ๋ ค ์ผ๋ฐ WAS ๊ฐ ํฐ์ผ ์๋งค WAS ๋ณด๋ค๋ ๋ ๋ง์ ์ค์๊ฐ ์์ฒญ์ ๊ฐ๋นํ๊ณ ์์ด์ผ ํ ์๋ ์๊ฒ ๋ค๋ ์ฌ์ค์ ๊นจ๋ซ๊ฒ ๋์์ต๋๋ค.
์๋ํ๋ฉด ํฐ์ผ ์๋งค WAS ์์ ์๊ฐ์ ์ผ๋ก ์๋งคํ๊ธฐ ๋ฒํผ์ ๋๋ฅธ ์์ฒญ ์๋ ํ์ฌ ์น์ฌ์ดํธ์ ์ ์ํ๊ณ ์๋ ์ฌ์ฉ์ ์๋ฅผ ๋์ด๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
10๋ง๋ช ํธ๋ํฝ์ ๊ฐ๋นํ๊ธฐ ์ํด์๋ ์ด๋์ ๋์ ์๋ฒ ์ฌ์์ด ํ์ํ ๊น?
๋ง์ฝ ํ์ฌ ์น์ฌ์ดํธ ์ ์์ ์๊ฐ 10๋ง๋ช ์ด๋ผ๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค.
1. ์ฒซ๋ฒ์งธ ์๋๋ฆฌ์ค : 10๋ง๋ช ์ด ๋์์ ์น์ฌ์ดํธ์ ์ ์ํด์ ์ดํ์๋ 5์ด์ 1๋ฒ ์ฑํ ์์ฒญ์ ๋ณด๋ด๋ ์ํฉ
๋ฉ์ธํ์ด์ง์ 5๊ฐ์ API ๋ฅผ ํธ์ถ๋๋ค๊ณ ์น๋ฉด,
์ผ๋ฐ WAS ๋ ์ต์ด ์ ์ ์์ ์๋ ์๊ฐ์ ์ผ๋ก ์ต๋ ์ด๋น 50๋ง๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ด์ผ ํ๊ณ ,
100,000 * 5 = 500,000 rps
์ดํ์๋ ์ด๋น 2๋ง๊ฐ์ ์์ฒญ์ ์ง์์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ด์ผ ํฉ๋๋ค.
RPS = 100,000 / 5 = 20,000 rps
๋ฐ๋ฉด ํฐ์ผ WAS ๋ 10๋ง๊ฐ์ ์์ฒญ์ ์๊ฐ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ผ๋ฉด ๋ฉ๋๋ค.
2. ๋๋ฒ์งธ ์๋๋ฆฌ์ค : 10๋ง๋ช ์ ์ธ์์ด ์ ์ง์ ์ผ๋ก ์น์ฌ์ดํธ์ ์ ์ํ ์ํฉ
๊ทธ๋ฌ๋ ์ด๋ ๋๊ท๋ชจ ์ธ์์ด ํ๋ฒ์ ๋์ ์ ์ํ๋ ๊ฑด ์ค์ ์ํฉ๊ณผ ์ฝ๊ฐ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์, ์ ์ง์ ์ผ๋ก ์ ์ํ๋ ์ํฉ ๋ํ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค.
์ด ๊ฒฝ์ฐ์๋ ์๋งค๊ฐ ์คํํ๊ธฐ 5๋ถ ์ ์ 10๋ง๋ช ์ ์ ์์ด ๊ณ ๋ฅด๊ฒ ๋ถํฌํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ์ผ๋ฐ WAS๋ ์ด๋น ํ๊ท ์ ์ผ๋ก 1666 ๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํด์ค ์ ์์ด์ผ ํฉ๋๋ค.
RPS = 100,000 * 5 / 5 * 60 = 1666 rps
์ฆ, ์ผ๋ฐ WAS ๋ ์์ญ๋ง๋ช ์ ๊ฐ๋นํ๊ธฐ ์ํด์๋ ์ต์ 1666rps ๋ถํฐ ์๊ฐ์ ์ผ๋ก๋ 500,000 rps๊น์ง ์ง์์ ์ผ๋ก ๋์ ์์ค์ ์ฒ๋ฆฌ๋์ ์๊ตฌํ๋ค๋ ์ฌ์ค์ ์ ์ ์์ต๋๋ค.
vCPU 1, Memory 1~2GB ์์ค์ compact-g1 ์์๋ ์์ฒญ์ ์ต๋ ๋ช๋ช ๊น์ง ๊ฐ๋นํ ์ ์์๊น?
- ์ผ๋ฐ API ์๋ฒ
์๋ฅผ ๋ค์ด ์ผ๋ฐ API ์๋ฒ๊ฐ ์ด๋น 2,000 rps๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ณ ,
์ฌ์ฉ์ 1๋ช ์ด ์ต์ด ์ ์ํ์ ๋๋ 5ํ์ API ์์ฒญ, ์ดํ์๋ ์ง์์ ์ผ๋ก 0.2 ํ API ์์ฒญ์ด ๋ฐ์ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด,
- ์ฒซ๋ฒ์งธ ์๋๋ฆฌ์ค์์๋ ์๊ฐ์ ์ผ๋ก ์ต๋ ์ฝ 400๋ช ์ ์ฌ์ฉ์๊น์ง ๊ฐ๋นํ ์ ์์ต๋๋ค. ( worst case )
- 400 * 5 = 2,000 rps
- ๋๋ฒ์งธ ์๋๋ฆฌ์ค์์๋ ๊ฐ์ ์คํ์ ์๋ฒ์ ๋ํด์๋ 5๋ถ๊ฐ ํธ๋ํฝ์ด ๋ถ์ฐํด์ ๋ค์ด์ค๋ฏ๋ก ์ ์คํ์ผ๋ก๋ ๋๊ท๋ชจ ์ธ์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ⇒ ํธ๋ํฝ์ด ๋๋ ์ ๋ค์ด์จ๋ค๋ฉด 2,000 rps ์๋ฒ๋ก ์ด๋น 400๋ช ์ฉ ๊พธ์คํ ๋ฐ์์ 5๋ถ๋์ ์ต๋ 120,000๋ช ์ ์ฌ์ฉ์๋ฅผ ๊ฐ๋นํ ์ ์์ต๋๋ค.
- ํฐ์ผ ์๋งค WAS
๋ฐ๋ฉด ํฐ์ผ ์๋งค WAS๋ ์๊ฐ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผํ๋ ํธ๋ํฝ์ด ๋ชฐ๋ฆด ์ ์๋ค๋ ํน์ฑ์ ์ง๋๋๋ค.
์๋งค ์์ฒญ์ ์ฌ์ฉ์ ์๋ฅผ ์ด๊ณผํด ๋ฐ์ํ ์๋ ์์ผ๋ฉฐ,
๋ฝ์ด๋ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ก ์ธํด ์์ฒญ 1๊ฑด๋น ๋น์ฉ์ ์๋์ ์ผ๋ก ์กฐ๊ธ ๋ ๋์ต๋๋ค.
์๊ฐ์ ์ผ๋ก ๋ง์ ์์ฒญ์ ์์ ์ฑ ์๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ๊ณผ ํฐ ๊ท๋ชจ์ ์์ฒญ์ ์ง์์ ์ผ๋ก ์์ ์ฑ ์๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ถ๋ช ๋ค๋ฅธ ๋ฌธ์ ์ ๋๋ค.
๋ฐ๋ผ์, ์ด๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ๊ฐ ํ์ฌ ์ ์ํ ์ ์ ์ ๋ํ ์ผ๋ฐ ์๋น์ค์ ๋ํ API ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋๋ฐ,
๊ทธ ์ด์์ ์๋งค ์์ฒญ์ด ์๊ฐ์ ์ผ๋ก ๋ชฐ๋ ค์ ์ด๊ฑธ ์ฒ๋ฆฌํ ์ ์์ ๋์๋ง ๋ณ๋ชฉ์ง์ ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์๋ฏธ๊ฐ ์๋ค๋ ๊ฒฐ๋ก ์ด ๋์ต๋๋ค.
์ผ๋ฐ API ์๋ฒ๊ฐ ์ด๋น 2,000 rps๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ณ , ์ฌ์ฉ์ 1๋ช ๋น ์ด๋น ํ๊ท 5ํ์ API ์์ฒญ์ด ๋ฐ์ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ๋์์ ์ฝ 400๋ช ์ ์ฌ์ฉ์๋ฅผ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด ํฐ์ผ ์๋งค API๋ ์์ฒญ 1๊ฑด๋น ์ฒ๋ฆฌ ๋น์ฉ์ด ๋์ ์ด๋น 50~200 rps ์์ค์ ์ฒ๋ฆฌ๋๋ง์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ 400๋ช ์ด์์ด ์ ์ํ ์ํ์์๋ ์ผ๋ฐ API ๋ง์ผ๋ก ์๋ฒ ์์์ด ๋ค ์์ง๋๊ณ ,
200๋ช ์ด์์ผ ๊ฒฝ์ฐ์๋ ์๊ฐ์ ์ผ๋ก ์๋งค ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๋ฉด ( ์ผ๋ฐ 200 + ํฐ์ผ์๋งค 200 ) ์ต๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ๋์ ๋์ด์์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์ง ๋ชปํ ์ํ์ด ์์ต๋๋ค.
์ฆ, ์์๋๋ ์ฌ์ฉ์ ์๊ฐ 200๋ช ๋ฏธ๋ง์ด๋ผ๋ฉด ์ผ๋ฐ WAS์ ํฐ์ผ ์๋งค WAS๋ฅผ ํ๋์ ์๋ฒ๋ก ํตํฉํด๋ ๋์ ํธ๋ํฝ์ ๊ฐ๋นํ ์ ์์ด์ ํฐ ๋ฌธ์ ๊ฐ ์๊ณ , 200๋ช ~ 400๋ช ์ฌ์ด์ผ ๋์๋ ์๋ฒ๋ฅผ ํตํฉํ๋ฉด ํ๋ฒ์ ์ต๋ 200๋ช ๊น์ง๋ง ์ฌ์ดํธ ์ ์ → ํฐ์ผ ์๋งค๋ฅผ ๋์์ ์ฒ๋ฆฌํ ์ ์์๋๋ฐ, ์ต๋ 400๋ช ๊น์ง๋ ์น์ฌ์ดํธ ์ ์ํด์ ์ผ๋ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ๊ฐ์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ฆ, ์์๋๋ ์ฌ์ฉ์ ์๊ฐ 200๋ช ์ด์์ธ ๊ฒฝ์ฐ์๋, ํฐ์ผ ์๋งค ๊ธฐ๋ฅ์ ๋ถ๋ฆฌ ๋ฐฐํฌํ์ฌ
‘ํฐ์ผ ์๋งค’ ๊ธฐ๋ฅ์ ์ํ CPU ์ ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ฐ๋ก ํ ๋นํด๋์ด์ ์ฌ์ดํธ์ ์ ์ํ๋๋ฐ ์๋งค ์์ฒญ์ ์ ๋๋ก ์ฒ๋ฆฌ๋์ง ๋ชปํ๋ ์ํฉ์ ์ด๋์ ๋ ๋ง์ ์ ์๋ค๋ ๋ฐ์ ์์๊ฐ ์์ต๋๋ค.
๊ฒฐ๋ก
- ์ ํฌ๋ Websever ๋ CDN ๊ฐ์๋ฐ์ ์ฌ๋ ค์ ๋ ๋ฆฝ์ ์ผ๋ก ์ค์ผ์ผ๋ง ๋ ์ ์๋๋ก ํด์ ์ต์ํ์ ํ์ด์ง ์ ๊ณต์ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ณ ,
- ๋๋จธ์ง Backend + ์ผ๋ฐ API ๋ฅผ ๊ทธ๋ฅ ์๋ฒ ํ๋์ ๋ฐฐํฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
- ์๋ฒ๋ฅผ ๋๋ ๋, ๊ฐ ์๋ฒ๊ฐ ๋ณ๋ชฉ์ ๊ฑธ๋ฆฌ๋ ์์ ์ด ๊ฑฐ์ ๋น์ทํด์ ์ ์ฒด ์์คํ ์ด ๋ฒํธ ์ ์๋ ์ต๋ ์ฌ์ฉ์ ์๋ ๊ฑฐ์ ๋์ง ์๊ณ
- ์๋ฒ๋ฅผ ๋๋ ์400๋ช
์ด ์น์ฌ์ดํธ์ ์ ์ ๊ฐ๋ฅํ๊ฒ๋ ํ๋๋ผ๋ ์ค์ ์ ์ผ๋ก๋ 200๋ช
๋ง ์๋งค๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ์ถ๊ฐ 200๋ช
์ ๋จ์ ์น์ฌ์ดํธ ์ ์ ๋ง์ ์ํด์ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ ํ์๊ฐ ์์๊น? ๊ณ ๋ฏผ์ ํ์ ๋, ๊ทธ๋ ๊ฒ ํฐ ์ด์ต์ ์๋๋ผ๊ณ ํ๋จํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์๋ฒ ํตํฉ ~200๋ช ~200๋ช ์๋ฒ ๋ถ๋ฆฌ ~400๋ช ~200๋ช - ์๋ง ์ด ๋ถ๋ถ์ ์ค์ ์๋น์ค ๋๋ ํ๊ฒฝ์ด๋ผ๋ฉด ์ค์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ํ๊ท ์ ์์ ์๋ฅผ ๊ฐ์ํ์ฌ ๋ ์ํฉ์ ์ ํฉํ ๊ฒฐ์ ์ ํ ์ ์์ ๊ฒ์ ๋๋ค.
'โ๏ธ ์ธํ๋ผ(Devops)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋๊ท๋ชจ ํธ๋ํฝ์ ๊ฐ๋นํ๋ MSA ํฐ์ผ ์๋งค ์ํคํ ์ฒ ์ค๊ณ (0) | 2026.01.09 |
|---|