๋ฐฐํฌ ํ๋ฆ ์์ฝ ๋ฐ q&a
docker, docker-compose, nginx, jenkins, react, ec2 ๋ฐฐํฌ
1. ๋ฐฐํฌ ํ๋ฆ ์์ฝ ๋ฐ q&a
2. ๋ฐฐํฌ ํ๋ก์ ํธ docker ๋ฐ nginx ํ์ผ ์ค์
3. ์ ํจ์ค์ ๊น๋ฉ ์ฐ๊ฒฐ ๋ฐ ci/cd ์ค์
react๋ก ๋ง๋ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํด๋ณด์.
๋ฐฐํฌ ํ๋ฆ ์์ฝ
๋ฐฐํฌ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ์์ด ์๋๋ฐ ๋ณธ ๊ธ์์ ์๊ฐํ ๋ฐฐํฌ ๋ฐฉ์์ ํ๋ฆ์ ๋๋ต ๋ค์๊ณผ ๊ฐ๋ค.
- ec2 ์๋ฒ์ docker in docker๋ฅผ ์ ์ฉํ jenkins ์ปจํ ์ด๋๋ฅผ ๋์ด๋ค.
- jenkins๋ฅผ ๋ฐฐํฌํ ํ๋ก์ ํธ๊ฐ ์๋ ๋ ํฌ์งํ ๋ฆฌ(์ ๋ธ๋์น)์ ์ฐ๊ฒฐํ๋ค.
- ํด๋น ๋ธ๋์น์ ํน์ ์ด๋ฒคํธ(ํธ์ฌ, ๋จธ์ง ๋ฑ)์ด ๋ฐ์ํ๋ฉด jenkins๋ ์ค์ ํ shell script๋ฅผ ์คํํ๋ค.
- shell script๋ฅผ ํตํด docker-compose๋ฅผ ํ์ฉํด Dockerfile์ ์๋ ์์ผ react ํ๋ก์ ํธ๋ฅผ ์ด๋ฏธ์งํ ๋ฐ ์ปจํ ์ด๋ํํด์ ec2 ์๋ฒ์ ๋ฐฐํฌํ๋ค.
- react๋ nginx๋ฅผ ์น์๋ฒ๋ก ์ฌ์ฉํด์ ๋ฐฐํฌํ๋ค.(๋ณธ ๊ธ์์ ํฌํธํฌ์๋ฉ ๋ฐ ssl ์ธ์ฆ์ ์ ์ฉ์ ๋ค๋ฃจ์ง ์๋๋ค)
๋ฐฐํฌ ๊ณผ์ ๊ด๋ จ q&a
์ ๊ณผ์ ์ ์ฝ์ผ๋ฉด์ '์ ์ ๋ ๊ฒ ํ์ง'๋ผ๊ณ ๊ถ๊ธํด ํ ์ ์๋ ๋ช ๊ฐ์ง ์ฌํญ๋ค์ ์ ๋ฆฌํด๋ดค๋ค
Q: ๊ทธ๋ฅ ๋ฐ๋ก ec2 ์๋ฒ์ ์ฌ๋ฆฌ๋ฉด ๋์ง ์ ๋์ปค๋ฅผ ์ฌ์ฉํ๋์?
A: ์๋ฒ์ react๋ฟ๋ง ์๋๋ผ db, backend server ๋ฑ๋ ์ฌ๋ฆฌ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ์ ์ด๋ฏธ์งํํด์ ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋์์ ์ด์ํ๋ ๊ฒ ๊ด๋ฆฌ์ ํธํฉ๋๋ค.Q: ์ jenkins๋ฅผ ์ฌ์ฉํ๋์?
A: jenkins๋ ci/cd (์ง์ ํตํฉ ๋ฐ ๋ฐฐํฌ) ํด์ธ๋ฐ ๊น๋ฉ์ด๋ ๊นํ๋ธ ๊ฐ์ ์๊ฒฉ ๋ ํฌ์งํ ๋ฆฌ์ ์ฐ๊ฒฐํด ํน์ ์ด๋ฒคํธ(ํธ์ฌ, ๋จธ์ง ๋ฑ) ๋ฐ์ ์ ์๋์ผ๋ก ํน์ ๋ช ๋ น(์ฃผ๋ก ๋น๋ ๋ฐ ๋ฐฐํฌ)๋ฅผ ์ํํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ ๊ณผ์ ์ค์ ์์๋ก ๋ณ๋์ฌํญ์ด ์๊ธฐ๋๋ฐ ๋งค๋ฒ ์๋์ผ๋ก ๋น๋ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ๊ธฐ ๋ณด๋ค ์ ํจ์ค ๊ฐ์ ci/cdํด์ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ํธ๋ฆฌํ๊ฒ ์์ ํ ์ ์์ต๋๋ค.Q: docker-compose๋ฅผ ์ ์ฌ์ฉํ๋์?
A: docker-compose๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ๋์ปค ์ปจํ ์ด๋๊ฐ ์์ ๋ ํด๋น ๋์ปค๋ค์ ์ค์ ์ ๋ณด ๋ฐ ์คํ์ ์ ์ดํ๊ธฐ ์ํ ํด์ ๋๋ค. ๋น์ฐํ ํ ๊ฐ์ ์ปจํ ์ด๋์ผ ๊ฒฝ์ฐ์๋ ์ ์ฉ์ ํ ์ ์์ต๋๋ค. ๋จ์ผ ์ปจํ ์ด๋์ ๊ฒฝ์ฐ docker-compse๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ปคํ์ผ์ ์คํ ๊ณผ์ ์ ์์ฃผ ์กฐ๊ธ ๊ฐํธํ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์ฌ์ค ํ ๊ฐ์ ๊ฒฝ์ฐ ๋ณ ์ฐจ์ด๋ ์์ต๋๋ค. ๋ณธ ๊ธ์์ docker-compose๋ฅผ ์ฌ์ฉํ ์ด์ ๋ ํ๋ก์ ํธ ๋ค๋ฅธ ๋ถ๋ถ์์ ๋ฉํฐ ์ปจํ ์ด๋๋ฅผ ์ค์ ํ ์ผ์ด ์์ด ์ด์ฐจํผ docker-compose๋ฅผ ํ์ฉํด์ผ ํ๋ ์ํฉ์ด๋ผ ๊ฒธ์ฌ๊ฒธ์ฌ ์ฌ์ฉํ์ต๋๋ค.Q: Nginx๋ ์ ์ฌ์ฉํ๋์
A: react ๋ฐฐํฌ์ ์น์๋ฒ๋ก ํ์ฉํฉ๋๋ค. nginx๋ ๋จ์ผ ์ค๋ ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณ ์ฑ๋ฅ ๊ฒฝ๋ ์น์๋ฒ์ ๋๋ค.(๋ค๋ฅธ ์ ๋ช ํ ์น์๋ฒ์ธ Apache๋ ์ค๋ ๋ ํ๋ก์ธ์ค ๊ธฐ๋ฐ์ผ๋ก nginx์ ๋นํด ๋ฌด๊ฒ์ต๋๋ค) spring ์๋ฒ๋ฅผ ํฐ์บฃ(ํฐ์บฃ์ ์ํ์น์ ๋๋ค)๋ก ๋ฐฐํฌํ๋ฏ์ด react๋ฅผ nginx๋ก ๋ฐฐํฌํ๋ค๊ณ ์ดํดํ๋ฉด ์ฝ์ต๋๋ค. ์ถ๊ฐ๋ก Nginx๋ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ๋ก๋ ํ์ฉํ ์ ์๋๋ฐ ๋ณธ ๊ธ์์๋ ๋ค๋ฃจ์ง ์์ต๋๋ค.Q: ๋ฆฌ๋ฒ์ค ํ๋ก์๋ ์ ์ ํ๋์?
A: ๋ฆฌ๋ฒ์ค ํ๋ก์๋ ๋ฐ๋ก ec2 server์ nginx ์ค์ ์ ์ ์ฉํด์ค์ผ ๋ผ์ ๋ค์ ๊ธ์์ ssl ์ธ์ฆ์์ ํจ๊ป ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. (๊ฐ์ด ํ ๋ ค๋ฉด ํ ์๋ ์์)
์ฐธ๊ณ ๋ก ๋ณธ ๊ธ์ ์งํ์ค์ด๋ ํ๋ก์ ํธ์ ๋ฐฐํฌ ๊ณผ์ ์ ์ ๋ฆฌํ ๊ฑฐ๋ผ ๋๊ฐ์ด ์ ์ฉ๋์ง ์์ ์ ์๋ค. ๋ํ ๋๋ Devops ์ ๋ฌธ๊ฐ๊ฐ ์๋๊ณ ํด๋น ๊ธ์ ๋ด์ฉ๋ ๊ณต์๋ฌธ์์ ๊ตฌ๊ธ, chat gpt ๊ทธ๋ฆฌ๊ณ ์ฃผ๋ณ ์ง์ธ ์ฐธ๊ณ ํด์ ์ ์ฉํ ๊ธ์ด๋ผ ํ๋ฆฐ ๋ด์ฉ์ด ์์ ์ ์๋ค.
๋ค์ ๊ธ์์๋ ํ๋ก์ ํธ ๋ฐฐํฌ๋ฅผ ์ํ docker ๋ฐ nginx ํ์ผ๋ค์ ์์ฑํ๊ฒ ๋ค.
๋๊ธ