๐ ํ ํ๋ก์ ํธ ๊ณต์ฉ DB ๋ง์ถ๊ธฐ (Railway)
์ด๋ฒ์ MomFit์ด๋ผ๋ ์กธ์
์ํ์ ์งํํ๋ ๋์ค, ํ์๋ค๋ผ๋ฆฌ ๊ณต์ฉ DB๋ฅผ ๋ง์ถ๊ฒ ๋์๋ค.
์ฒ์์๋ ๊ฐ์ ๋ก์ปฌ์์ ๊ฐ๋ฐ์ ํ๊ณ ์์๋ค. Docker๋ก MySQL์ ๋์ฐ๊ณ , ๊ฐ์ .env ํ์ผ์ localhost๋ฅผ ๋ฃ๊ณ ๊ฐ๋ฐํ๋ ๊ตฌ์กฐ์๋ค.
์ ์ ์์ฑ์ด ๋์ด๊ฐ์๋ก ๊ณต์ฉ DB์ ํ์์ฑ(๊ฒ์ํ ํ
์คํธ, ๋ก๊ทธ์ธ ๋ฌธ์ ๋ฑ)์ ๋๋ผ๊ฒ ๋์์ง๋ง, ๋ฐฐํฌ ๋จ๊ณ๋ ์๋์๊ธฐ ๋๋ฌธ์ AWS ๊ฐ์ ์ ์ ๋ฐฐํฌ ํ๊ฒฝ์ ์์ง ์ด๋ฅด๋ค๊ณ ํ๋จํ๋ค.
๊ธ์ก์ ์ธ ๋ฌธ์ ๋ ์๊ธฐ์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ Railway๋ฅผ ์ ํํ์์ผ๋ฉฐ, Railway์์ MySQL ์ธ์คํด์ค๋ฅผ ํ๋ ์์ฑํ๊ณ ๊ทธ DB๋ฅผ ํ ๊ณต์ฉ ๊ฐ๋ฐ DB๋ก ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
์ ๊ณต์ฉ DB๊ฐ ํ์ํ์๊น?
๋ก์ปฌ DB๋ก ๊ฐ๋ฐํ ๋๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ๋์ํ๋ค.
ํ์๊ฐ์
๋ ๋๊ณ , ๋ก๊ทธ์ธ๋ ๋๊ณ , ๊ฒ์ํ ๊ธ๋ ์ ์ ์ฅ๋๋ค.
ํ์ง๋ง ๋ฌธ์ ๋ ์ฌ๊ธฐ์ ์์๋๋ค.
๋ด๊ฐ ํ์๊ฐ์
์ ํ๋ฉด ๋ด ์ปดํจํฐ DB์๋ง ์ ์ฅ๋๋ค. ํ์์ด ๊ฐ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ ค๊ณ ํ๋ฉด ์กด์ฌํ์ง ์๋ ์ฌ์ฉ์๋ผ๊ณ ๋์จ๋ค.
๊ฒ์ํ๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ๋ด๊ฐ ์์ฑํ ๊ธ์ ๋๋ง ๋ณผ ์ ์๋ค..
์ด ์ํ์์๋ ํตํฉ ํ
์คํธ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ๊ฐ์ ์ ๋์๊ฐ๋ ์ฝ๋๊ฐ ์๋๋ผ, ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ผ๋ณด๋ ํ๋์ ์์คํ
์ด์ด์ผ ํ๋ค.
ํ๊ฒฝ ๋ถ๋ฆฌ
๋ก์ปฌ DB๋ฅผ ์์ค๋ค๋ ๊ฒ์ด ์๋๋ผ ํ๊ฒฝ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ค์ํ๋ค. AppModule์์
ConfigModule.forRoot({
isGlobal: true,
envFilePath: `.env.${process.env.NODE_ENV || 'local'}`,
})
์ด๋ฐ์์ผ๋ก ์ค์ ์ ํ์ฌ ์คํํ๊ฒจ์ฅ ๋ฐ๋ผ ์ฌ์ฉํ๋ ํ๊ฒฝ ํ์ผ์ ๋ค๋ฅด๊ฒ ๋ง๋ค์๋ค.
npm run start๋ก ์๋ฒ ์คํ โ .env.local ํ์ผ ์ฌ์ฉ
NODE_ENV=dev npm run start๋ก ์๋ฒ ์คํ โ .env.dev ํ์ผ ์ฌ์ฉ
Railway ๊ณต์ฉ DB ์ค์
Railway์์ MySQL ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด ์ ์ ์ ๋ณด๊ฐ ์ ๊ณต๋๋ค.
Host, Port, Username, Password, Database ์ด๋ฆ์ ํ์ธํ ๋ค .env.dev ํ์ผ์ ์
๋ ฅํ๋ค. ์ด์ ๊ณต์ฉ DB ๋ชจ๋๋ก ์๋ฒ๋ฅผ ์คํํ๋ฉด ํ์ ๋ชจ๋ ๋์ผํ DB๋ฅผ ๋ฐ๋ผ๋ณด๊ฒ ๋๋ค.
์ฒ์ ๊ณต์ฉ DB๋ ์์ ๋น์ด์๋ ์ํ๋ค. ๊ทธ๋์ seed ์์
์ ํตํด ๋ฐ์ดํฐ ๋ค์ ์ฝ์
ํ์๋ค.
(์ด ๊ณผ์ ์์ ์ธ๋ํค ์ ์ฝ ์กฐ๊ฑด ๋ฌธ์ ์ ๊ฐ์ ๋ฌธ์ ๋ค์ด ์์์ง๋ง..์ ํด๊ฒฐ๋์๋ค)
๋๋ถ์ ํ ๋ช
์ด ํ์๊ฐ์
ํ๋ฉด ๋ค๋ฅธ ํ์๋ ํด๋น ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ ์ ์๊ณ , ๊ฒ์ํ ๊ธ๋ ์๋ก ๊ณต์ ๋๋ค.
์ ๋ฆฌ
Railway๋ ๋ณ๋์ ์๋ฒ ๊ตฌ์ถ ์์ด MySQL ์ธ์คํด์ค๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑํด ์ฌ์ฉํ ์ ์๋ ํด๋ผ์ฐ๋ ์๋น์ค๋ค.
๋ฐฐํฌ ๋จ๊ณ๊น์ง๋ ์๋์ง๋ง, ํ ๋จ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง์ถ๊ธฐ์๋ ์ถฉ๋ถํ ํจ์จ์ ์ธ ์ ํ์ธ๊ฑฐ๊ฐ๋ค. ์ด๋ฒ ๊ณต์ฉ DB ๊ตฌ์ถ์ ํตํด ๊ฐ์๊ฐ ์๋ ํ๋์ ์๋น์ค๋ก ๋์ํ๊ฒ ๋์๋ค.