๐ ๊ทธ๋์์ ๋นํจ์จ์ ์ธ ๋ฐฐํฌ ๊ณผ์
๊ธฐ์กด ํ์๋ฒ์ ๋ฐฐํฌํ ๋ ๋ฒ๊ฑฐ๋ก์ด ๊ณผ์ ์ ์ฐ์์ด์๋ค. ์๊ฒฉ ์ ์์ผ๋ก ํ์ผ์ ์ด๋ํ๊ณ ์๋ฒ๋ฅผ ์ข ๋ฃ์ํจ ๋ค์ ์ฝ๋๋ฅผ ๋ฎ์ด์ฐ๊ณ ๋ค์ ์คํํ๋ ๊ณผ์ ์ ํตํด ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์๋ค. ๋ํ ๊นํ๋ธ์ ๊ฐ์ ํด์ ์ฐ์ง ์์ ๋ฒ์ ๊ด๋ฆฌ์๋ ๋ฌธ์ ๊ฐ ์์๋ค. ์ด์ธ์๋ ์์กด์ฑ์ด ๊นจ์ง๋ฉด ๋ค๋ฅธ ์ํํธ์จ์ด์๋ ์ํฅ์ด ๊ฐ๋ค๊ฑฐ๋, ๋ค์ด๊ทธ๋ ์ด๋๋ฅผ ์ํด ์์ ๊ณผ์ ์ ๋ค์ ์งํํ๋ ๋ฑ ๋ฌธ์ ์ ์ด ๋ง์๋ค.
์ฝ๋๋ ์ ๊ธฐ์ฒด์ ๊ฐ๋ค. ์ง์์ ์ผ๋ก ๊ด๋ฆฌํด์ฃผ๊ณ ์ ๊ฒฝ ์จ์ฃผ์ง ์์ผ๋ฉด ์ฐ๊บผ๊ธฐ(๋ ๊ฑฐ์ ์ฝ๋)๊ฐ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ๊ฒ ๋๋ค. ๊ด๋ฆฌ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ ๋ฐ๋ก ๋ฐฐํฌ์ ์๋ํ๋ค. ์ด์ ๊ธ์์๋ ์ค๋ช ํ๋ฏ์ด, ๋ช ๋ ์ ์๋ USB๋ก ํ์ผ์ ์ด๋ํ๋ ๋งํ(?)์ ์ ์ง๋ฅด๊ธฐ๋ ํ๋ค. ๋ถ๋ช ๋น์์๋ ๋ฒ์ ์ด ๊ผฌ์ด๊ณ ๋ ๊ฑฐ์ ์ฝ๋๊ฐ ๋์ณ๋๋ ํฐ ๋ถํธํจ์ ๋๋ผ์ง ๋ชปํ๋ค. ๊ธฐ๋ฅ์ ๋ง์๋ดค์ 6๊ฐ ์ ๋์๊ณ ์ฝ๋ ๊ฐ ์์กด์ฑ์ด ์๋ค์ํผ ํ์๊ธฐ์ ๋ฒ๊ทธ ๋ํ ๋ฐ์ํ์ง ์์๋ค.
๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์ง ์์๋ค๊ณ ์ข์ ์ฝ๋๊ฐ ๋๋๊ฑด ์๋๋ค. ํ์ฅ์ ๋ฌผ์ด ๊ฐ๋ ์ฐจ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๋ด๊ฐ ํ์ฅ์ ๋ค์ด๊ฐ์ ๋ ์ ๋นํ๋ค๊ณ ํด์ ์น๊ตฌ 100๋ช ์ ๋ฐ๋ ค์๋ ๋์น์ง ์์ ๊ฑฐ๋ ๋ณด์ฅ์ ์๋ค. ์ฝ๋ ํ์ง๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ๋ฒ๊ทธ๊ฐ ์๋ค๊ณ ํด์ ๊ธฐ๋ฅ์ ํ์ฅํ์ ๋๋ ๋ฒ๊ทธ๊ฐ ์์ ๊ฑฐ๋ผ๋ ๊ฐ์ ์ ์ฑ๋ฆฝ๋์ง ์๋๋ค.
๊ทธ๋์ ๊ทธ๋์์ ๋ฐฐํฌ ๊ณผ์ ์ ๊ฐ์ ํ๊ณ ์ ๊นํ๋ธ ์นํ ๊ณผ ๋์ปค ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ ํด์ ๋ง๋ค๊ณ ์ ํ๋ค.
๐ ์ด๋ค ๊ธฐ๋ฅ์ด ํ์ํ๊ฐ
์ฐ์ ๊นํ๋ธ ์นํ ์ ๋ฐ๊ณ ๋ ํฌ์งํ ๋ฆฌ ๋งํฌ๋ฅผ ํ์ฑํ๋ ๋ก์ง์ด ํ์ํ๋ค. ๋ค์์ผ๋ก git clone <link>๋ฅผ ์คํํ์ฌ ์ง์ ๋ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ ์ฅํ๋ค. ์ดํ ํด๋น ๋๋ ํ ๋ฆฌ์ ์๋ dockerfile๋ก ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ ์ด๋ฏธ์ง๋ฅผ ์คํ์ํค๋ฉด ๋๋ค. ์๋ ๋ก์ง์ ๋ณด๋ฉด ์ฝ๊ฒ ์ดํดํ ์ ์๋ค.
๐ญ ์ฝ๋ฐฑ ์ง์ฅ
NodeJS ๊ฐ๋ฐ์๋ผ๋ฉด ์ฝ๋ฐฑ ์ง์ฅ์ ๋ํด์๋ ์ ์๊ณ ์๋ค. ๋์ปค API ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์์ dockerode๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๋์ปค ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ญ์ ํ๋ ๋ฐ์ ์ฝ๋ฐฑ์ ์ฝ๋ฐฑ์ ๋ถ๋ฌ์ค๋ฉฐ ์ฝ๋๊ฐ ๋๋ฌ์์ง๋ ๋จ์ ์ด ์์๋ค. ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๊ธฐ๋ฅ๋ณ๋ก ์ฝ๋ฐฑ์ ๋ฌถ์ด ์๋น์ค ๋ก์ง์ผ๋ก ๋ง๋ค๊ณ ๋ชจ๋ ๋ก์ง์ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๋ค. ์น ํ ์์ฒญ์ด ์ค๋ฉด eventemitter๋ก ์ด๋ฒคํธ๋ฅผ ํธ์ถํ์ฌ ๋๊ธฐ์ ์ผ๋ก ์์ ์ ์ํํ ์ ์์๋ค.
๐ ์ปจํ ์ด๋ ๋ฐฐํฌ ๋ฌธ์
์ปจํ ์ด๋ ๋ฐฐํฌ ๋ฌธ์ ๋ฅผ ํตํด ๋ฌธ์๋ฅผ ์์ธํ๊ฒ ์ฝ์ด์ผ ํ๋ค๋ ๊ตํ์ ์ป์๋ค. ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด nginx reverse proxy์ ์ปจํ ์ด๋๋ฅผ ํ ๋นํ๊ณ letsencrypt SSL์ ๋ฐ๊ธ๋ฐ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค. ๋ฐฐํฌ ์ค๊ฐ์ SSL ์ธ์ฆ์๊ฐ ์ ๋๋ก ๋ฐ๊ธ๋์ง ์์์ ์ปจํ ์ด๋์ ์ ์ ์ค๋ฅ๊ฐ ๋จ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๋ถ๋ช ์๋ธ ๋๋ฉ์ธ ์ฐ๊ฒฐํ๊ณ ์ปจํ ์ด๋๋ ์ ์ ์๋ํ๋๋ฐ well-known/acme-challenge/* ๋งํฌ๋ก ์ ์ํ ์ ์์ด์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ์ง ๋ชปํ๋ค๊ณ ์ค๋ฅ๊ฐ ๋ฌ์๋ค.
2์ผ๋์ ๊ณ ๋ฏผํด๋ณธ ๋์ ์ปจํ ์ด๋ ํ๊ฒฝ ์ค์ ๋ฌธ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค. ๋ฐฐํฌ๋ ์๋น์ค ๋ด์ ./deployenv๋ผ๋ ํ์ผ์์ ์๋ธ ๋๋ฉ์ธ ์ ๋ณด์ ์ธ์ฆ์ ๋๋ฉ์ธ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์ค์ ํ๋๋ฐ, ์ด ๋ ๋๋ฉ์ธ์ ์ฃผ์๊ฐ ๋ฌ๋ผ์ ์ธ์ฆํ ์ ์์๋ค. ์ฆ, ์๋ธ ๋๋ฉ์ธ์ dds.devent.kr๋ฅผ ํธ์ถํ๋๋ฐ ์ธ์ฆ์ ๋๋ฉ์ธ์ dds1.devent.kr๋ฅผ ํธ์ถํ๊ฒ ๋์ด ์ ์์ ์ผ๋ก ๋ฐ๊ธ๋ฐ์ ์ ์์๋ค.
์ค๊ฐ์ค๊ฐ ์ฝ์ง์ด ๋ง์๋ค. reverse proxy ๋์ ํธ์คํธ์ ๋ค์ด๋ ํธ๋ก ์ค์นํด๋ณด๊ธฐ๋ ํ๊ณ , ์ธ์ฆ์ ๋ฐ๊ธ ์ปจํ ์ด๋๋ฅผ ๊ต์ฒดํด๋ณด๊ธฐ๋ ํ์ง๋ง ๋๋ด ํด๊ฒฐ๋์ง ์์๋ค. ํด๋น ๋ชจ๋์ ๋ฌธ์๋ฅผ ์กฐ๊ธ ๋ ์ธ์ธํ๊ฒ ์ฝ์ด๋ณด์๋ค๋ฉด ๋ฌธ์ ๋ฅผ ๋นจ๋ฆฌ ์์๋ผ ์ ์์๊ฒ ๋ค๋ ์์ฌ์์ ๋จ์์ง๋ง ๊ทธ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ ํ๋ จํ๋ค.
๐ ์๋ํ ํด์ ๋ง๋ค๊ธฐ๊น์ง
์ฒ์์ CI ๋์ ์ ๊ณ ๋ คํ์๋ค. circleCI๋ผ๋ ์ข์ ํ๋ก๊ทธ๋จ์ด ์๊ธธ๋ ์ฌ์ฉํด๋ณด์๋๋ ์์ง TDD์ ์ฝ๋ ํตํฉ์ ๋ํด ์ต์ํ์ง ์์ ์ฌ์ฉํ๊ธฐ์ ์ด๋ ค์์ด ์์๋ค. ์๋ ๋ฐฐํฌ๋ง ๋๋ฉด ๋๋๋ฐ ๊ทธ ์ด์์ ๊ธฐ๋ฅ๋ค๋ ๋ง์์ CI๋ฅผ ์ฐ๊ธฐ์ ์์ง์ ์ด๋ฅธ ์๊ธฐ๋ผ๊ณ ํ๋จํ๋ค. ์ดํ, ๋ฐฐํฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํ๋ ํ๋ก๊ทธ๋จ์ ์์๊น ๊ณ ๋ฏผํ๋ค๊ฐ ์ง์ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
๊ทธ๋ ๊ฒ ๋์ปค ๊ธฐ๋ฐ์ผ๋ก ์๋๋ฐฐํฌ+SSL ์ ์ฉ๊น์ง ๊ฐ๋ฅํ ์ํํธ์จ์ด๋ฅผ ๋ง๋ค๊ฒ ๋์๋ค.
โจ๏ธ ๊ด๋ จ ๋งํฌ
์ฝ๋๋ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ด ์์ต๋๋ค. ๊ถ๊ธํ ์ฌํญ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
https://github.com/Team-DeVent/devent-deploy
'๐คํ๊ณ > ํ๋ก์ ํธ ํ๊ณ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋์์ธ ์์คํ ํ๋กํ ํ์ ์ ๋ง๋ค๋ฉด์. (0) | 2022.06.16 |
---|---|
๊ธฐ์ ๋ธ๋ก๊ทธ ๊ฐ๋ฐ ํ๊ณ (0) | 2022.04.07 |
NodeJS ํ ํ๋ฆฟ์ ๋ง๋ค์ด๋ณด๋ฉฐ (0) | 2022.03.17 |