๐ ngrinder
ํ์ฌ ์งํ ์ค์ธ shoe-auction ํ๋ก์ ํธ์ ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ์ด 90% ์ด์ ์๋ฃ๋์์ต๋๋ค. ํ์ฌ Naver Cloud Platform์ผ๋ก ํ๋ก์ ํธ์ ์ธํ๋ผ ํ๊ฒฝ์ ๊ตฌ์ถํด๋์ ์ํ์์ ์ฑ๋ฅ ํ ์คํธ ์งํ๋ฅผ ์ด์ฉํด Scale-out ๋ฐฉ์์ผ๋ก ์๋ฒ ํ์ฅ์ ์งํํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ฑ๋ฅ ํ ์คํธ ํด์ ๋ค์ด๋ฒ์์ ๋ง๋ ngrinder ์ฌ์ฉํด์ ์งํํ์์ต๋๋ค. ์ฌํํ UI๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ด๋ณด์๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ณ ํ ์คํธ ๊ฒฐ๊ณผ๋ ๊ฒฐ๊ณผ ๋ณด๊ณ ์๋ฅผ ํตํด ํ๋์ ์์๋ณผ ์ ์์ด์ ๊ตญ๋ด์์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
์ค์น ๋ฐฉ๋ฒ์ ์ด์ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๐ ์ฌ์ฉ ๋ฐฉ๋ฒ
๊ฐ์ฅ ๋จผ์ ์ฑ๋ฅํ ์คํธ๋ฅผ ์ํ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ngrinder ๋ฉ์ธ ํ๋ฉด์์ ์คํฌ๋ฆฝํธ ์์ฑ ํ๋ฉด์ผ๋ก ์ด๋ํฉ๋๋ค.
์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ํ๋ URL ์ ๋ ฅํ๊ณ , ์๋ ์ฌ์ง์ฒ๋ผ body์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ ๋ณด๋ผ์๋ ์์ต๋๋ค.
์๋์ผ๋ก ๋ง๋ค์ด์ง groovy ์ฝ๋๋ฅผ ํ๊ฒฝ์ ๋ง๊ฒ ์ ์ ํ ์์ ํ๊ณ ์ค๋ฅธ์ชฝ ์๋จ์ [๊ฒ์ฆ] ๋ฒํผ์ ๋๋ฌ ์ ์์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ๊ณ ์ ์ฅ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
์คํฌ๋ฆฝํธ๋ฌธ ์์ฑ์ด ์๋ฃ๋์์ผ๋ฉด ์ฑ๋ฅ ํ ์คํธ ํ์ด์ง๋ก ์ด๋ํด ํ ์คํธ ์์ฑ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
์์ด์ ํธ ์๋ฅผ ์ ๋ ฅํ๊ณ , ๋ช ๋ช ์ ๊ฐ์ ์ฌ์ฉ์๋ก ๋ถํ ํ ์คํธ๋ฅผ ์งํํ ์ง ์ ํํฉ๋๋ค. ๋ํ ๋น๊ต์ ์ ํํ ํ๊ท ์์น๋ฅผ ์ฐ์ถํด๋ด๊ธฐ ์ํด ํ ์คํธ ๊ธฐ๊ฐ์ 10๋ถ ์ด์์ผ๋ก ์ก๋ ๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
๋ชจ๋ ์ค์ ์ ์๋ฃํ๊ณ ์ค๋ฅธ์ชฝ ์๋จ์ [์ ์ฅ ํ ์์] ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ ์คํธ๊ฐ ์์๋ฉ๋๋ค.
์ฃผ์์ฌํญ
์ฑ๋ฅ ํ ์คํธ ์ ๊ธฐ๋ณธ์ ์ผ๋ก Agent๋ 12000~ port๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ํด๋น ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ ์ ์ด์ด๋์์ผ ํฉ๋๋ค.
๐ ํ ์คํธ ์งํ - ๋จ์ผ ์๋ฒ ํ๊ฒฝ
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฑ๋ฅํ ์คํธ๋ฅผ ์งํํด๋ณด๊ฒ ์ต๋๋ค. ์ด๊ธฐ ์๋ฒ ๊ตฌ์ฑ์ [Compact] 1vCPU, 2GB Mem, 50GB ๊ธ WAS ์๋ฒ 1๋์ Master/Slave๋ก ๊ตฌ์ฑ๋ ๋์ผํ ์คํ์ MySQL ์๋ฒ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
1. ๋ก๊ทธ์ธ ํ ์คํธ
๊ฐ์ฅ ๋จผ์ ๋ก๊ทธ์ธ ํ ์คํธ๋ฅผ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
์ ํ ์คํธ๋ ๊ฐ์ ์ฌ์ฉ์ 1000๋ช ์ ๊ธฐ์ค์ผ๋ก ์งํํ ํ ์คํธ์ ๋๋ค. ์ด๋น ์ฒ๋ฆฌ ๊ฐ๋ฅํ ์์ฒญ์ธ TPS๋ ํ๊ท 632 ์ ๋๊ฐ ๋์๊ณ , ์ง์ฐ ์๊ฐ์ 1500ms ์ ๋๊ฐ ๋์์ต๋๋ค. ๋ํ ํด๋น ์๋ฒ์ CPU ์ฌ์ฉ๋ ์กฐํ ๊ฒฐ๊ณผ ์ฝ 90% ์ด์์ ์ ์ ํ๊ณ ์์์ต๋๋ค.
ํ์ง๋ง ํ ์คํธ ์ฑ๊ณต๋ฅ ์ด 100%์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ์๋ ๊ฐ์ ์ฌ์ฉ์๋ฅผ 3000๋ช ํฌ์ ์์ผ ํ ์คํธ๋ฅผ ์งํํด๋ณด์์ต๋๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ TPS๋ 1000๋ช ์ ๊ฐ์์ ์ ๋ฅผ ํฌ์ ํ์๋์ ๋น์ทํ์ง๋ง ์ง์ฐ์๊ฐ๊ณผ ์๋ฌ ๋ฐ์๋ฅ ์ด ์ฆ๊ฐํ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค. ๋ํ WAS์ CPU ์ฌ์ฉ๋ฅ ์ ์กฐํํด๋ณธ ๊ฒฐ๊ณผ ๊ฑฐ์ 100%์ ์ก๋ฐํ๋ ์ฌ์ฉ๋ฅ ์ ๋ณด์ด๊ณ ์์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ ํ ์กฐ์น๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
2. ์ํ ์กฐํ ํ ์คํธ
๋ค์์ผ๋ก ํด๋น ํ๋ก์ ํธ์์ ๊ฐ์ฅ ๋ง์ ํธ๋ํฝ์ด ๋ฐ์๋ ๊ฒ์ผ๋ก ์์๋๋ ์ํ ์กฐํ ๊ธฐ๋ฅ์ ํ ์คํธํด๋ณด๊ฒ ์ต๋๋ค. ํด๋น ํ ์คํธ๋ ๋จ์ผ WAS ์๋ฒ์์ ์บ์๋ฅผ ์ ์ฅํ๊ธฐ ์ ๊ณผ ํ์ ์์น๋ฅผ ๋น๊ตํด๋ณผ ์์ ์ ๋๋ค.
์บ์ ์ฌ์ฉ ์ ์ ์๋ฒ ๊ตฌ์ฑ์ ๊ฐ๋ตํ๊ฒ ํํํ์๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๋จผ์ ๋์ผํ ์๋ฒ ์คํ ๊ธฐ์ค์ผ๋ก ๋ฌผํ ์กฐํ์ ์บ์๋ฅผ ์ ์ฉํ์ง ์์ ์ํ์์ 3000๋ช ์ ๊ฐ์์ฌ์ฉ์๋ฅผ ํฌ์ ํ ํ ์คํธ ๊ฒฐ๊ณผ์ ๋๋ค.
ํ๊ท TPS๋ 500์ ๋๋ฅผ ๋ณด์ด๊ณ ์์ผ๋ฉฐ ์ฝ 5200ms์ ์ง์ฐ์๊ฐ๊ณผ ์๋ฌ ๋ฐ์ ํ๋ฅ ๋ 1% ์ด์์ผ๋ก ์๋นํ ๋ถ์์ ํ ๋ชจ์ต์ ๋ณด์ด๊ณ ์์์ต๋๋ค.
๋ค์์ผ๋ก ๋์ผ ํ๊ฒฝ์ Redis๋ฅผ ์ด์ฉํ ์บ์ ์๋ฒ๋ฅผ ์ถ๊ฐ๋ก ๊ตฌ์ถํ๊ณ ๋ฌผํ ์กฐํ ๋ก์ง์ ์บ์ฑ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ํ ํ ์คํธ๋ฅผ ์งํํด๋ณด์์ต๋๋ค. ์บ์๋ฅผ ์ ์ฅํ ๊ฐ๋จํ ์๋ฒ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก 3000๋ช ์ ๊ฐ์์ฌ์ฉ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฑ๋ฅํ ์คํธ๋ฅผ ์งํํด๋ณด์์ต๋๋ค.
์บ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ๊ณผ ํ์ ์ฑ๋ฅ ์งํ ์ฐจ์ด๋ฅผ ์ดํด๋ณด๋ฉด TPS๋ ์ฝ 5๋ฐฐ ์ ๋ ์ฆ๊ฐํ์๊ณ , ์ง์ฐ ์๊ฐ ๋ํ 5๋ฐฐ ์ ๋ ๊ฐ์ํ์์ต๋๋ค. ๋ํ ์๋ฌ ๋ฐ์๋ฅ ๋ 0.01% ๋ฏธ๋ง์ผ๋ก ๊ฐ์ํ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
๋ฌผ๋ก ์ค์ ์ด์ ํ๊ฒฝ์์๋ ํด๋น Product(๋ฌผํ)์ ๋ํ Trade(๊ฑฐ๋)๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ์บ์ ๋ง๋ฃ(CacheEvict)๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ ์ฑ๋ฅ ์งํ๋ณด๋ค๋ ์กฐ๊ธ ๋ฎ์ ์ฑ๋ฅ์ ๋ณด์ผ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
๐ ํ ์คํธ ์งํ - nginx๋ฅผ ํตํ ๋ก๋๋ฒจ๋ฐ์ฑ
์์์ ๋จ์ผ ์๋ฒ ํ๊ฒฝ์ผ๋ก ํ ์คํธ๋ฅผ ์งํํด๋ณธ ๊ฒฐ๊ณผ ๋น๊ต์ ๊ฐ๋จํ ๋ก์ง์ธ ๋ก๊ทธ์ธ ํ ์คํธ์์ 3000๋ช ์ด์์ ๋์ ์ฌ์ฉ์๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์๋นํ ๋ถ์์ ํ ๋ชจ์ต์ ๋ณด์ธ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
๋ฐ๋ผ์ nginx ์น์๋ฒ๋ฅผ ๋์ฐ๊ณ ํ๋์ WAS๋ฅผ ๋ ์ถ๊ฐ์์ผ ๋ก๋๋ฐธ๋ฐ์ฑ์ ํตํด ์ ์ ํ๊ฒ ๋ถํ๋ฅผ ๋ถ์ฐ์ํค๋๋ก Scale-out๋ฐฉ์์ผ๋ก ์๋ฒ ํ์ฅ์ ์งํํ์์ต๋๋ค.
ํด๋น ํ๋ก์ ํธ๋ ์ด๊ธฐ ์ค๊ณ ์ Scale-out ๋ฐฉ์์ผ๋ก ์๋ฒ๋ฅผ ํ์ฅํ ์ ์๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ๊ฐ๋จํ๊ฒ ์๋ฒ๋ฅผ ํ์ฅ์ํฌ ์ ์์์ต๋๋ค.
nginx๋ฅผ ์ด์ฉํ ๋ก๋๋ฐธ๋ฐ์ฑ ๋ฐฉ๋ฒ์ ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
๋ก๊ทธ์ธ ํ ์คํธ
๋จ์ผ ์๋ฒ ํ๊ฒฝ์์ 3000๋ช ์ด์์ด ์ ๊ทผํ์๋ ์๋ฒ๊ฐ ๋ถ์์ ํ ์ํ๋ฅผ ๋ณด์ด๋๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค. ์ด๋ฒ์๋ ์น์๋ฒ๋ฅผ ๊ฑฐ์ณ 2๊ฐ์ ์๋ฒ๋ก ๋ถํ๋ฅผ ๋ถ์ฐ์์ผฐ์ ๋ ์ฑ๋ฅ ์งํ๊ฐ ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ ๋จ์ผ ์๋ฒ ํ๊ฒฝ์์๋ณด๋ค ๋ชจ๋ ๋ฉด์์ ํฅ์๋ ์งํ๋ฅผ ๋ณด์์ต๋๋ค. ํนํ ๋์ ๋๋ ๊ฒ์ ํ๊ท ํ ์คํธ ์๊ฐ์ด 4400ms์์ ์ฝ 300ms๋ก ๊ฐ์ํ๋ค๋ ์ ๊ณผ ํ๊ท TPS๋ ๊ฑฐ์ 20๋ฐฐ ๊ฐ๊น๊ฒ ์ฆ๊ฐํ๋ค๋ ์ ์ ๋๋ค.
๋ํ nginx์ CPU ์ฌ์ฉ๋ฅ ์ ์กฐํํ ๊ฒฐ๊ณผ 50~60% ์ ๋๋ก, 3000๋ช ์ธ ์ด๊ณผํ๋ ํ๊ฒฝ์์๋ ๋น๊ต์ ์์ ์ ์ผ๋ก ์๋ฒ ์ด์์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ ์์ํ ์ ์์์ต๋๋ค.
ํ์ง๋ง ํด๋น ์งํ๋ ์ด๋๊น์ง๋ ๋ก๊ทธ์ธ์ ๋ํ ์ฑ๋ฅ ํ ์คํธ ์งํ์ ๋๋ค. ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ๋ง ํ๊ณ ์๋ฌด๋ฐ ํ๋๋ ์ํ๋ ๊ฒฝ์ฐ๋ ๋๋ฌผ๊ธฐ ๋๋ฌธ์ ์ ํํ ์ฑ๋ฅ ํ ์คํธ ์งํ๊ฐ ๋ ์๋ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ํ ์กฐํ ํ ์คํธ
์๋ฒ ํ์ฅ์ด ์งํ๋ ์ํ์์ ์์ ๋์ผํ๊ฒ Redis๋ฅผ ์ด์ฉํ ์บ์ฑ ๊ธฐ๋ฅ์ ์ ์ฉํ ์ํ๋ก ์ํ ์กฐํ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์งํํด๋ณด์์ต๋๋ค.
ํ๊ท TPS๊ฐ 12000๊น์ง ์ฆ๊ฐํ์๊ณ , ํ๊ท ํ ์คํธ ์๊ฐ ๋ํ ์ฝ 240ms๋ก ๊ฐ์ํ์์ต๋๋ค. ๋ํ ํด๋น ํ ์คํธ๊ฐ ์งํ๋๋ ๋์ nginx์ CPU ์ฌ์ฉ๋ฅ ์ ์ดํด๋ณธ ๊ฒฐ๊ณผ ์ฝ 60% ์ ๋๋ก ๋งค์ฐ ์์ ์ ์ธ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค.
๋ก๊ทธ์ธ -> ์ํ ๊ฒ์ -> ์ํ ์กฐํ ํ ์คํธ
๋ง์ง๋ง์ผ๋ก, ์ด๋ฒ ํ๋ก์ ํธ์์ ๊ฐ์ฅ ๋น๋ฒํ๊ฒ ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ์์๋๋ ๋ก์ง์ ๋ฌถ์ด์ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์งํํด๋ณด์์ต๋๋ค. ๊ณผ์ ์ ๋๋ต ์๋ ๊ทธ๋ฆผ๊ณผ ๋น์ทํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. (๋ก๊ทธ์ธ -> ์ํ ๊ฒ์ -> ์ํ ์กฐํ)
๋ง์ฐฌ๊ฐ์ง๋ก ์น์๋ฒ๋ฅผ ๊ฑฐ์ณ 2๋์ WAS์ ๋ผ์ด๋๋ก๋น ๋ฐฉ์์ผ๋ก ๋ก๋๋ฐธ๋ฐ์ฑ์ด ์งํ๋๋ ๋ฐฉ์์ด๋ฉฐ, ์บ์ฑ ๋ํ ์ ์ฉ๋ ์ํ์ ๋๋ค.
์ฌ์ ์ 3000๋ช ์ ๊ฐ์ ์ฌ์ฉ์๋ก ํ ์คํธ๋ฅผ ์งํํด๋ณธ ๊ฒฐ๊ณผ nginx์ CPU์ฌ์ฉ๋ฅ ์ด ํ๊ท 98%~100%์ ๊ธฐ๋กํ์ต๋๋ค. ๋ฐ๋ผ์ 2000๋ช ์ ๊ธฐ์ค์ผ๋ก ํ ์คํธ๋ฅผ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ ํ๊ท TPS๋ 5600, ํ๊ท ํ ์คํธ ์๊ฐ์ ์ฝ 340ms ์ ๋๊ฐ ๋์์ต๋๋ค. ํ์ง๋ง ์์์๋ ์ธ๊ธํ๋ฏ์ด ์ํ๊ณผ ์ฐ๊ด๋์ด ์๋ Trade๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ์บ์๊ฐ ๋ง๋ฃ๋๊ธฐ ๋๋ฌธ์ ์ค์ ์ด์ ํ๊ฒฝ์์๋ ํด๋น ์ฑ๋ฅ ํ ์คํธ ๊ฒฐ๊ณผ์์ ๋ณด์ธ ํผํฌ๋จผ์ค๋ณด๋ค๋ ์กฐ๊ธ ๋ ๋ฎ์ ์ฑ๋ฅ์ ๋ณด์ด๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด๋ฒ ํ๋ก์ ํธ์ ๋ชจํฐ๋ธ๊ฐ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์กฐ์ฌํด๋ณธ ๊ฒฐ๊ณผ, ์๋ก์ด ํ์ ํ ์ค๋์ปค์ฆ ๋ฐ๋งค์ผ์ ์ ์ธํ๊ณ ๋ Trade๊ฐ ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๊ทธ๋ ๊ฒ ๋ง์ง๋ ์์ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค. ๋ํ ๋น์ธ๊ธฐ ์ํ์ ๊ฒฝ์ฐ์๋ ์๋ก์ด Trade ์์ฑ์ด ๋งค์ฐ ๋๋ฌผ๊ฒ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์๋น์ค ์คํ ์ด๊ธฐ ๊ธฐ์ค์ผ๋ก ์ด๋ฒ ์ฑ๋ฅ ํ ์คํธ ์งํ์ ์์ฒญ๋๊ฒ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ด์ง๋ ์์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
๐ ์๋ฒ ๊ตฌ์ฑ
์ด๋ฒ ํ๋ก์ ํธ์์ ์๋ฒ ๊ตฌ์ฑ์ AWS S3์ Lambda๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์ด์ฉํด์ ๊ตฌ์ฑํ์์ต๋๋ค.
1. Redis Server
์ฑ๋ฅ ํ ์คํธ ๊ฒฐ๊ณผ Cache์ ์ ์ฉ ์ฌ๋ถ์ ๋ฐ๋ผ ์์ฒญ๋ ์ฑ๋ฅ ์ฐจ์ด๋ฅผ ๋ณด์ด๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ Redis ์๋ฒ๋ฅผ ๊ฐ ๊ธฐ๋ฅ๋ณ๋ก ๋ถ๋ฆฌ์์ผ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํตํด ์บ์ ์ ์ฅ์์ ๊ฐ์ฉ์ฑ์ ์ ์ ์งํด์ผ ํฉ๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ด3๊ฐ์ ์บ์ ์๋ฒ๋ฅผ ์ฉ๋๋ณ๋ก ๋ถ๋ฆฌ์์ผฐ์ต๋๋ค.
โ FCM ํ ํฐ ์ ์ฅ์ : [Compact] 1vCPU, 2GB Mem, 50GB Disk
โ Login Session ์ ์ฅ์ : [Compact] 1vCPU, 2GB Mem, 50GB Disk
โ ์บ์ ๋ฐ์ดํฐ ์ ์ฅ์ : [Compact] 1vCPU, 2GB Mem, 50GB Disk
2. WAS
๋ก๊ทธ์ธ ํ ์คํธ์์ 3000๋ช ์ ์ฌ์ฉ์ ์ ์ ์ ๋ถ์์ ํ ์ฑ๋ฅ์งํ๋ฅผ ๋ณด์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธฐ์กด์ WAS 1๋๋ง ์ด์ฉํ๋ ๋ฐฉ์์์ ์น์๋ฒ nginx์ WAS1๋๋ฅผ ์ถ๊ฐ๋ก ๋์ด์ ๋ก๋๋ฐธ๋ฐ์ฑ์ ํตํ ๋ถํ ๋ถ์ฐ์ด ๊ฐ๋ฅํ๋๋ก ์๋ฒ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ์์ต๋๋ค.
โ WAS 1 : [Compact] 1vCPU, 2GB Mem, 50GB Disk
โ WAS 2 : [Compact] 1vCPU, 2GB Mem, 50GB Disk
โ nginx : [Standard] 2vCPU , 4GB Mem, 50GB Disk
3. MySQL
์ฑ๋ฅ ํ ์คํธ ์ด์ ์ DB์์ ๋ฐ์ํ๋ ๋ณ๋ชฉํ์์ ๊ฐ์ ํ๊ณ ์ ์ฌ์ ์ Master/Slave ๊ตฌ์กฐ์ Replication์ ๊ตฌ์ฑํ์์ต๋๋ค. ์ผ๋จ Slave์๋ฒ๋ 1๊ฐ๋ง ๊ตฌ์ฑํ์๊ณ , Master ์๋ฒ์ Slave ์๋ฒ ๋ชจ๋ ๋์ผํ ์คํ์ ์๋ฒ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. (๊ธฐ๋ณธ์ ์ผ๋ก Master์๋ฒ๋ Slave ์๋ฒ ์คํ๊ณผ ๋์ผํ๊ฑฐ๋ ๋ ๋๊ฒ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.)
โ MySQL Master : [Compact] 1vCPU, 2GB Mem, 50GB Disk
โ MySQL Slave : [Compact] 1vCPU, 2GB Mem, 50GB Disk
4. Jenkins
์ฒ์ Jenkins ์๋ฒ๋ฅผ ๋์์ ๋๋ NCP์์ 1๋ ๊ฐ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ micro ์๋ฒ๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. git push ๋๋ pull request๊ฐ ๋ฐ์ ํ ๋๋ง๋ค ์๋ ํ ์คํธ์ ๋น๋๊ฐ ์งํ๋๋๋ก ์ค์ ํ์๋๋ฐ, ํ ์คํธ๊ฐ ์งํ๋ ๋๋ง๋ค 20๋ถ์์ ์ต๋ 1์๊ฐ๊น์ง ๊ฑธ๋ฆฌ๊ณ ์ฌํ ๊ฒฝ์ฐ Timeout์ผ๋ก ์ธํด ๋น๋๊ฐ ์คํจํ๋ ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค. ๋ฐ๋ผ์ Jenkins ์๋ฒ์ ์คํ์ ๋ค๋ฅธ ์๋ฒ๋ค๋ณด๋ค ์กฐ๊ธ ๋ ๋์ ์ฌ์์ ์ ํํ์ต๋๋ค.
โ Jenkins : [Standard] 2vCPU , 4GB Mem, 50GB Disk
5. AWS S3 & Lambda
ํ๋ก์ ํธ์ ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ธฐ ์ํด AWS S3์, ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง์ ์ํด AWS Lambda๋ฅผ ์ ํํ์ต๋๋ค. ํด๋น ํ๋ก์ ํธ์์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ ์ ์๋ ์ฌ์ฉ์๋ ๊ด๋ฆฌ์ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋์ด ๊ทธ๋ฆฌ ๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ๋จํ์ต๋๋ค. ์ถํ ์ปค๋ฎค๋ํฐ์ฑ ๊ฒ์ํ์ ์ถ๊ฐ ๊ตฌํํ๋ค๋ฉด ํด๋น ์๋ฒ ์คํ๋ Sacle -UP์ ์งํํ ์์ ์ ๋๋ค.
โ AWS S3 & Lambda : AWS ํ๋ฆฌ ํฐ์ด (์ด๋ฏธ์ง ์ ์ฅ ๊ธฐ๋ณธ 50GB, Lambda ์๋ณ ๋ฌด๋ฃ์์ฒญ 100๋ง)
6. ngrinder
์ต๋ํ ์ ํํ ํ ์คํธ ๊ฒฐ๊ณผ ์งํ๋ฅผ ์ป๊ธฐ ์ํด Controller์ Agent, ๊ทธ๋ฆฌ๊ณ ํ ์คํธ Target์ด ๋๋ Server๋ฅผ ๋ชจ๋ ๊ฐ๊ฐ ๋์ด์ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์งํํ์์ต๋๋ค. Controller์ ๋ช ๋ น์ ๋ฐ์ Agent์์ ์ค์ ๋ถํ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ Agent์ ์๋ฒ ์คํ์ ๊ฐ์ฅ ๋๊ฒ ๊ตฌ์ฑํ์์ต๋๋ค.
โ Controller server : [Standard] 2vCPU, 4GB Mem, 50GB Disk
โ Agent server : [Standard] 4vCPU, 8GB Mem, 50GB Disk
Shoe-auction 1์ฐจ ์๋ฒ ๊ตฌ์กฐ๋
ํ์ฌ๊น์ง ์์ฑ๋ ์๋ฒ ๊ตฌ์กฐ๋ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค. ์์ง docker์ ๋ํ ํ์ต์ด ๋ถ์กฑํด์ docker๋ฅผ ์ด์ฉํ์ง ์๊ณ ์ง์ ํ๋ํ๋ ์๋ฒ๋ฅผ ๋์ฐ๋ ๋ฐฉ์์ผ๋ก ์งํํด๋ณด์์ต๋๋ค. ์ถํ ๋์ปค ๊ด๋ จ ํ์ต์ด ์ด๋ ์ ๋ ์๋ฃ๋๋ฉด ๋์ปค ์ด๋ฏธ์ง๋ฅผ ํตํ ๋ฐฐํฌ ๊ณผ์ ์ ์ถ๊ฐํ ์์ ์ ๋๋ค.
'ํ๋ก์ ํธ : shoe-auction' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ ์๊ฐ : Shoe-auction (20) | 2021.06.10 |
---|---|
[MySQL] MySQL ์คํ ๊ณํ ๋ถ์์ ํตํ ๋ฆฌํฉํ ๋ง (0) | 2021.05.12 |
[MySQL] MySQL Replication ๊ตฌ์ฑํ๊ธฐ - NCP (0) | 2021.05.06 |
[CI/CD] Jenkins๋ฅผ ์ด์ฉํด CI/CD ์๋ํํ๊ธฐ - CIํธ (3) | 2021.04.26 |
[AWS] AWS S3์ ์ด๋ฏธ์ง ์ ๋ก๋ํ๊ณ AWS Lambda๋ก ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ์ ์ฉํ๊ธฐ (3) | 2021.04.15 |