๊ฐ์
๋ณดํต ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด ๊ฐ์ฅ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์๊ฒ ๋๋ ๋ถ๋ถ ์ค ํ๋๊ฐ ๋ฐฐํฌ์ด๋ค.
๋ฐฐํฌ๋ฅผ ํ์ง ๋ชปํ๋ฉด ์ผ๋จ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๋ด๊ฐ ์งํํ ํ๋ก์ ํธ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ๊ฐ ์ด๋ ต๋ค.
์ด์ ๋ํ์ฌ, ๋ณดํต ํ๋ก์ ํธ๋ฅผ ํ์คํ์ผ๋ก ์งํํ์ง ์๋ ์ด์์์ผ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ฅผ ๋๋์ด ์งํํ๊ฒ ๋ ํ
๋ฐ, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ API๋ฅผ ์ ๋ฌํ๋ ๊ฒ๋ ์ ๋งคํด์ง๋ค. ๊ทธ๋ฅ โ์ฌ๊ธฐ์ฌ๊ธฐ์ ์ ๊ทผํ์๋ฉด ๊ฐ๋ฐํ์ค ๋ ๋ถํธํจ ์์ผ์ค ๊ฑฐ์์โ๋ก ๋๋ผ ์ ์๋ ๋ฌธ์ ๋ฅผ, โํน์ ๋ก์ปฌ์ DB ์ค์น๋ ๊ฒ ์์ผ์ธ์? Docker๋ ์์ผ์ธ์? ์โฆ ๋จ ์ฉ๋์ด ํน์โฆ?โ ์ ๊ฐ์ ์์ฌ์ํต ๋น์ฉ๊ณผ ์ค์ ํ๊ฒฝ ๊ตฌ์ถ ๋น์ฉ์ ๋ฐ์์ํค๋ ๋ฌธ์ ๋ก ๋ฐ์ ์ํค๊ธฐ ์ญ์์ด๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ์ ๋์์ด ๋ ์ ์๋ ์ธํ๋ผ ๊ด๋ จ ์๋น์ค๋ฅผ ์๊ฐํ๋ ค ํ๋ค. ๊ทธ ์ฃผ์ธ๊ณต์ Oracle Cloud Infrastructure์ MongoDB Atlas์ด๋ค.
Oracle Cloud Infrastructure
์ฐ๋ฆฌ๊ฐ ํํ ์ ํ๋ ๊ฐ์ฅ ๋ง์ ํด๋ผ์ฐ๋๋ ๋๊ฐ AWS ์ ๋์ผ ๊ฒ์ด๋ค. ์์ฝ๊ฒ๋, AWS๋ ํ๋ฆฌํฐ์ด ์ดํ์๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ ์ธ์คํด์ค๊ฐ ์กด์ฌํ์ง ์๋๋ค. ๋ฌด๋ฃ๋ก ๋ฐฐํฌํ๊ธฐ ์ํด์๋ Docker ์ด๋ฏธ์ง๋ฅผ Lambda์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ ์ ๋๋ฅผ ๊ณ ๋ คํ ์๊ฐ ์๋๋ฐ, ์๊ทธ๋๋ ํ๋ก์ ํธ ๊ธฐ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ Spring Boot ํ๋ก์ ํธ๋ฅผ Cold Start ํ๋ ์ํฉ์ ์ฌ๋ฌ๋ชจ๊ณ ๊ท์ฐฎ์ ์์ธ์ด ๋ ์ ์๋ค.
๊ทธ๋ฐ ๋น์ ์ ์ํด, Oracle์์ ์๋น์คํ๋ OCI๊ฐ ์๋ค. AWS๋งํผ ์ฝ์์ด ํธ๋ฆฌํ์ง๋ ์๊ณ , ๋ญ๊ฐ ๋ค๋ฅธ ๋ถ๋ถ์ด ์์ด์ ์ฌ์ฉํ๊ธฐ๊ฐ ๋งค๋๋ฝ์ง ์์ ๋ถ๋ถ์ด ์์ ์ ์์ง๋ง OCI์๋ ํ๋ฆฌํฐ์ด์์๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ ์ธ์คํด์ค๋ฅผ ์ ๊ณตํ๋ค๋ ํฐ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค. (์ธ์คํด์ค ์ด์ธ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์๋น์ค๋ค๋ ์กด์ฌํ๋ค.)
๋๋ ARM 3-Core / 18GB RAM ์ธ์คํด์ค๋ฅผ ์์ฑํด์ ์ฌ์ฉํ๊ณ ์๋ค. ์๋ชป ๋ณธ ์์น๊ฐ ์๋๋ค. ์ค์ ๋ก 18GB RAM ์ธ์คํด์ค์ด๋ค. ๋๋ํ ๋จ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, Docker ์ปจํ
์ด๋ ๋ช ๊ฐ ๋์ฐ๋ ๊ฑธ๋ก๋ ์ ํ ๋ถ๋ด์ด ๋์ง ์๋๋ค๋ ์๋์ ์ธ ์ฅ์ ์ด ์กด์ฌํ๋ค. ์ด๋ ๊ฐ์ ํ๋ฆฌํฐ์ด์์๋ ๊ณ ์ Spring Boot ํ๋ก์ ํธ์ DB๋ง์ ๋์๋๊ณ ๋ ํน์๋ CPU๋ RAM์ด ํฐ์ ธ์ ์๋น์ค๊ฐ ๋ป์๊น๋ด ๊ฑฑ์ ํด์ผ ํ๋ AWS t2.micro
์ธ์คํด์ค์์์ ๊ฒฝํ๊ณผ ์๋ฐ๋๋ค.
๋น๋ก ARM ์ธ์คํด์ค์์๋ aarch64
์ํคํ
์ฒ๋ก ๋น๋๊ฐ ๋ Docker ์ด๋ฏธ์ง๋ง ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ฝ์ด ์๊ธด ํ๋, ์ผ๋จ์ ๋ฌด๋ํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฆฌ๋
์ค ํ๊ฒฝ์ ์ ๊ณตํ๋ค. ์ผ๋จ Java Spring Boot(AdoptOpenJDK8)๋ node 16 ์ ๋์ ํ๊ฒฝ์์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค. ์ฌ๊ธฐ์ ๋ํ์ฌ, x86
, amd64
ํ๊ฒฝ์ ์ธ์คํด์ค๋ ๋ฌผ๋ก ๋ฌด๋ฃ๋ก ๋์ธ ์ ์๋ ์ต์
์ ์ ๊ณตํ๋ค. (๋ค๋ง ์ด ๊ฒฝ์ฐ, Ubuntu๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ ๋ฏธ์ง์์ด๋ค.)
MongoDB Atlas
๋ณดํต ์๋ฒ๋ฅผ ๋์ด ์ดํ ๊ฐ์ฅ ๋น์ฉ ๋ถ๋ถ์์ ๊ณ ๋ฏผ์ ํ๊ฒ ๋ง๋๋ ๋
์์ด DB์ด๋ค. AWS RDS๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌด๋ฆฌ ์ ์ ๋น์ฉ์ ์ฌ์ฉํ๋ ค๊ณ ํด๋ ํ๋ฃจ์ 3์๊ฐ ์ด์ ํฌ์ํ๊ธฐ๋ ์ด๋ ค์ด ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์ํ ๊ฒ ์น๊ณ ๋ ๊ฝค ๋ง์ ๋น์ฉ์ ์ง๋ถํด์ผ ํ๋ค. ์ด๋ฐ ์ํฉ์์ MongoDB Atlas๋ ๊ฝค ์ข์ ์ ํ์ง๊ฐ ๋ ์ ์๋ค.
MongoDB Atlas๋ฅผ Shared ํ๋์ผ๋ก ์ฌ์ฉํ๋ฉด, MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฌด๋ฃ๋ก ํธ์คํ
๋ฐ์ ์ฌ์ฉํ ์ ์๋ค. ๋ฌผ๋ก ์๊ธฐํ OCI ์ธ์คํด์ค ๋ด์์ ๋์ปค์๋ค๊ฐ ์ํ๋ DB ์ปจํ
์ด๋๋ฅผ ๋์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ๋งค๋ ฅ์ ์ด์ง๋ง, ์๋ฒ ์ธ์คํด์ค์ DB ์ธ์คํด์ค๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค๋ ์ ๊ณผ MongoDB Atlas์์ ์ ๊ณตํ๋ ์ฌ๋ฌ ๋ถ๊ฐ ์๋น์ค(๋์ ์ข ๋ธ๋ค๋ฉด ํ์ฅ๋ ์ฉ์ดํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์น ์์์ ๋ณผ ์ ์๋ ์ฝ์๋ ์ ๊ณตํ๋ค)๋ ๋๋ฆด ์ ์์ผ๋, ๊ฐ๋ฒผ์ด ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์ํด์๋ ๊ณ ๋ คํด๋ณผ๋ง ํ๋ค.
๋๋ถ์ด Spring์ ํ์ตํ๋ ์ธก๋ฉด์์๋ WebFlux์ ํจ๊ป ์ฌ์ฉํ ๋, DB ๋ ์ด์ด๋ถํฐ Controller ๋ ์ด์ด๊น์ง ์์ฝ๊ฒ Full Reactive Stack์ผ๋ก ๊ตฌ์ฑํ ์ ์๋ค๋ ์ฅ์ ๋ ๊ฐ์ง๊ณ ์๋ค. (RDB + R2DBC๋ผ๋ ์ ํ์ง๋ ์์ง๋ง)
์ ๋ฆฌ
๊ฐ๋จํ OCI์ MongoDB Atlas๋ฅผ ์๊ฐํด๋ณด์๋ค. ํ์๋ ์ด์ ๋ง ์ฌ์ฉํด๋ณด๊ธฐ ์์ํ๋ ์๋น์ค๋ค์ด๋ผ์ ๋ฒค์น๋งํฌ๋ฅผ ํฌํจํ ๋ํ
์ผํ ๋ฆฌ๋ทฐ๋ฅผ ํ๊ธฐ๋ ๊ทธ๋ ์ง๋ง, ๊ฐ๋จํ ์ฌ์ฉ๋ก์์๋ ์ถฉ๋ถํ ์ธ๋งํ ์ต์
์ธ ๊ฒ ๊ฐ๋ค.
์ฌ์ด๋ ํ๋ก์ ํธ ๋ฐฐํฌ, ํนํ ๋ฐฑ์๋ ๋ฐฐํฌ๋ฅผ ๊ณ ๋ฏผํ๊ณ ์๋๋ฐ, AWS์ ์ฐ๋ ๋์ผ๋ก ๊ตญ๋ฐฅ ํ ๊ทธ๋ฆ ๋ ๋ ๋ ํ๊ฒ ๋จน๊ณ ์ถ์ ๊ฐ๋ฐ์๋ค์๊ฒ ์ด ๋ ๊ฐ์ง ์๋ฃจ์
์ ๊ณ ๋ คํด๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค.
๋.