์ง๊ธ๊น์ง์ ์ค์ ์ผ๋ก๋ ๋ฉ์ธ ๋ธ๋์น์ ์ฝ๋๊ฐ merge๋ ๋๋ง๋ค EC2์ ์ ์ํด์ ๋ฐฐํฌ๋ฅผ ์ํ ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์ง์ ์คํํด์ฃผ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ฃผ๊ธฐ๊ฐ ๋น๋ฒํ ์๋ก ๋งค๋ฒ EC2์ ์ ๊ทผํ์ฌ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๊ณผ์ ์ ๋์ฑ ๋ฒ๊ฑฐ๋ก์์ง๋๋ค. ์ด๋ฒ ๊ธ์์๋ CD ๊ธฐ์ ์ธ Jenkins๋ฅผ ์ ์ฉํ์ฌ ์์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ง CI/CD ํ๋ก์ฐ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก CI/CD๊ฐ ์ด๋ฃจ์ด์ง๋๋ค. PR์ด ์์ฑ๋๋ฉด Github Actions์ผ๋ก ํ
์คํธ๋ฅผ ์งํํฉ๋๋ค. ์ ๊ณผ์ ์ด ์ฑ๊ณตํด์ผ๋ง main ๋ธ๋์น์ mergeํ ์ ์์ต๋๋ค. github์ ๋ฉ์ธ ๋ธ๋์น์ mergeํฉ๋๋ค. ์๋์ ๊ณผ์ ์ ์ ํจ์ค์์ ์งํํฉ๋๋ค. ํ
์คํธ๋ฅผ ์งํ (CI) JARํ์ผ ๋น๋ JARํ์ผ์ EC2์ ์ ์ก EC2 ์ ์ ..
๐ณ๏ธ ๋ฐฐํฌ ๋ฐ ์ธํ๋ผ
์ด๋ฒ ๊ธ์์๋ PR์ ๋ ๋ ธ์ ๋ ํด๋น PR์ด ๋ฌธ์ ๊ฐ ์๋์ง ์๋์ผ๋ก ํ
์คํธ๋ฅผ ์ํํ๊ณ , ๋ง์ฝ ํ
์คํธ์ ์คํจํ๋ค๋ฉด mergeํ ์ ์๋๋ก ๋ฉ์ธ ๋ธ๋์น๋ฅผ ๋ณดํธํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๐ง Github Actions ์ค์ Repository์ ๋ค์ด๊ฐ์ Actions - Java with Gradle์ ํด๋ฆญํฉ๋๋ค. ์ yml ํ์ผ์ ์๋์ ๊ฐ์ด ์์ ํฉ๋๋ค. name: Java CI with Gradle on: pull_request: branches: [ "main" ] permissions: contents: read jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: ๐ณ JDK 11 ์ธํ
uses: actions/..
์ด์ ๊ธ์์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ ๋ ํ๊ฒฝ๋ณ์๋ฅผ ํตํด์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ์ต๋๋ค. ์ด๋ฒ์๋ ํ๊ฒฝ๋ณ์ ๋์ Git Submodule์ด๋ผ๋ ๊ธฐ๋ฅ์ ํตํด์ ์ด๋ฌํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ง Git Submodule ๊น ๊ณต์ ๋ฌธ์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช
๋์ด ์์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ์ํํ๋ค ๋ณด๋ฉด ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋ค. ํจ๊ป ์ฌ์ฉํ ๋ค๋ฅธ ํ๋ก์ ํธ๋ ์ธ๋ถ์์ ๊ฐ๋ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋๊ฐ ๋ด๋ถ ์ฌ๋ฌ ํ๋ก์ ํธ์์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ผ ์ ์๋ค. ์ด๋ฐ ์ํฉ์์ ์์ฃผ ์๊ธฐ๋ ์ด์๋ ๋ ํ๋ก์ ํธ๋ฅผ ์๋ก ๋ณ๊ฐ๋ก ๋ค๋ฃจ๋ฉด์๋ ๊ทธ ์ค ํ๋๋ฅผ ๋ค๋ฅธ ํ๋ ์์์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. Atom ํผ๋๋ฅผ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ก ๋ค์ด๋ณด์. Atom ํผ๋๋ฅผ ์์ฑ..
์ด์ ๊ธ์์๋ ์ ํ๋ฆฌ์ผ์ด์
์ฉ EC2 ์๋ฒ์์๋ง ์ ๊ทผํ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฉ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ํด๋น ์ธ์คํด์ค์ MYSQL์ ์ค์นํ๋ ๊ณผ์ ์ ์งํํ์ต๋๋ค. ์ด๋ฒ์๋ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์
๊ณผ DB๋ฅผ ์ง์ ์ฐ๋ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์คํ๋ง ์ฝ๋ ์์ฑํ๊ธฐ ์ฐ์ ํ
์คํธ๋ฅผ ์ํด์ ๊ฐ๋จํ ์ฝ๋๋ฅผ ํ๋ ์์ฑํ ์์ ์
๋๋ค. public class Member { private Long id; private String email; private String password; public Member(Long id, String email, String password) { this.id = id; this.email = email; this.password = password; } publ..
์ด์ ๊ธ์์๋ EC2 ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด์ ์๋ํ๋ฅผ ํ์๋๋ฐ์, ์ฌ์ค ์ด๋ ๋ฐฐํฌํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ด์ฅ H2 DB๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋จํ ํ๋ก์ ํธ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ๋์๋ Mysql ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋ฒ์ ๋์์ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ์, ์ด๋ฒ ๊ธ์์๋ ์๋ก์ด EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ค, ๊ทธ๊ณณ์์ Mysql์ ์คํ์์ผ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ง ์๋ก์ด EC2 ์์ฑํ๊ธฐ ํด๋น ๊ธ์ ๊ณผ์ ์์ ์งํํ๋ ๊ฒ ์ฒ๋ผ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํด ์ฃผ๋ฉด ๋๋๋ฐ์, ์ค๋ณต๋ ๊ณผ์ ์ด์ง๋ง ์์ฃผ ์ด์ง ์ฐจ์ด์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ฐจ๋ก์ฐจ๋ก ์งํํด๋ณด๋ ค ํฉ๋๋ค. ๋จผ์ EC2 ๋์๋ณด๋์ ์ ์ํฉ๋๋ค. ์ดํ ์ธ์คํด์ค ์์์ ํด๋ฆญํด์ฃผ์ธ์. ์ด๋ฆ์ ๋ง์๋๋ก ์ง์ด์ฃผ์ธ์. ์ ํ๋ฆฌ์ผ์ด์
๋ฐ OS ์ด๋ฏธ์ง๋ Ubun..
์ด์ ๊ธ์์๋ EC2 ์๋ฒ์์ ์ง์ ๊นํ๋ธ ํ๋ก์ ํธ๋ฅผ clone๋ฐ๊ณ ์ง์ ์คํํด ๋ณด์๋๋ฐ์, ์ฌ์ค ์ด๋ฌํ ๋ฐฉ๋ฒ์ ํตํด์ ๋ฐฐํฌ๋ฅผ ์งํํ๋ค๋ฉด ์ฌ๋ฌ ๊ท์ฐฎ์ ์ํฉ์ด ๋ฐ์ํ ๊ฒ์
๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํด์ ๋ ํฌ์งํ ๋ฆฌ์ ์ปค๋ฐ์ ํ๋ค๊ณ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ EC2 ์ธ์คํด์ค์ ์ ๊ทผํ์ฌ ๋ณ๊ฒฝ๋ ์ฌํญ์ PULL ๋ฐ์์ผ ํฉ๋๋ค. PULL ์ ๋ฐ์ ์ดํ์๋ ์ด๋ฅผ ๋น๋ํ๊ณ , ๊ธฐ์กด์ ์คํ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ์ข
๋ฃ์ํค๊ณ , ์๋กญ๊ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ ๋์์ผ ํฉ๋๋ค. ์ฆ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์ด ์ด๋ฃจ์ด์ง ๋ ๋ง๋ค ํด์ผ ํ๋ ๊ท์ฐฎ์ ๋ฐ๋ณต ์์
๋ค์ด ๋๋ฌด ๋ง์ต๋๋ค. ๊ทธ๋์ ์ด๋ฌํ ๋ฐ๋ณต ์์
์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด์ ์๋ํ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ง ์ด๋ ํ ์์๋ก ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง๊น? ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ธฐ ์ ์, ์ฐ์ ๋ฐฐํฌ๊ฐ ์ด๋ ํ ์์๋ก ์ด๋ฃจ์ด์ง์ง ..
์ด๋ฒ ๊ธ์์๋ ์ด์ ๊ธ์์ ์์ฑํ EC2์ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์
์ ๋์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด๋ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์
์ ์์ ์ ์๋ฌด๋ฐ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ์๊ด์์ต๋๋ค. (๋จ maven์ด ์๋ gradle์ ๋์์ผ๋ก ์งํํฉ๋๋ค) ๐ง ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ์ ํ๋ก์ ํธ ์ฌ๋ฆฌ๊ธฐ ์ด๋ฏธ ๊นํ๋ธ์ ํ๋ก์ ํธ๋ฅผ ์ฌ๋ ค๋์
จ๋ค๋ฉด ํด๋น ๊ณผ์ ์ ๊ฑด๋๋ฐ์ด๋ ์๊ด์์ต๋๋ค. ์ ๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํ๋ ์์ฑํด์ ๋ค์๊ณผ ๊ฐ์ด ์์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ๋ ค๋์์ต๋๋ค. ์ด์ ํด๋น ํ๋ก์ ํธ๋ฅผ clone๋ฐ์ ์ ์๋๋ก, code ๋ฒํผ์ ๋๋ฅธ ๋ค ์ฃผ์๋ฅผ ๋ณต์ฌํฉ๋๋ค. ๐ง EC2 ์์ ํ๋ก์ ํธ clone๋ฐ๊ธฐ ์ด์ ๊ธ์์๋ ๋ค๋ฃจ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅํ์ฌ ์ ์ํ ์ ์์ต๋๋ค. ssh -i [ํคํ์ด] ubuntu@[ํผ๋ธ๋ฆญ IPv4 ์ฃผ์] ssh -i mallang-ke..
๐ง ์ด๋ ค์ด ๋ฐฐํฌ ๋ฐฐํฌ๋ ์ฐธ ์ด๋ ต์ต๋๋ค. ์ ๋ ์ง๊ธ ์ ๋ง ๋๋ฌด ์ด๋ ค์์ ์ธ ๊ฒ ๊ฐ์์. ํ์ง๋ง, ๋ฐฐํฌ๋ฅผ ์ฒ์ ํด๋ณด๋ ๋ชจ๋๊ฐ ๋ค ์ ์ ๊ฐ์ ๊ฐ์ ์ผ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค. ๊ทธ๋์ ๋ฐฐํฌ๋ฅผ ์ฒ์ํ๋ ์ ๊ฐ, ์ด ๊ธ์ ์จ๊ฐ๋ฉด์ ์๋ ๋ฐฐํฌ๊น์ง ์งํํ๋ ๊ณผ์ ์ ์ธ์ธํ ์ ๋ฆฌํจ์ผ๋ก์จ, ๋๊ตฐ๊ฐ์๊ฒ ๋์์ ์ค ์ ์์ง ์์๊น ํ๋ ์๊ฐ์ผ๋ก ์ด๋ ๊ฒ ์ ๋ฆฌ๋ฅผ ํ๊ฒ ๋์์ต๋๋ค. (๋ฌด์๋ณด๋ค, ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ค์ด ๋๋ฌด ๋ถ์น์ ํ๋ฌ๊น... ์ ๋ง ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๋ ์ฌ๋์ด ์ด๊ฑธ ๋ฐ๋ผํ ์ ์๋ค๊ณ ..? ํ๋ ์๊ฐ์ด ๋ค์ด์ ์ ๊ฐ ๊ทธ๋ฅ ์ ๋ฅผ ์ํด์ ์ ๋ฆฌ๋ฅผ ํ๊ณ ์๋ค์..๐ญ) ์์ํ๋ ๋ชฉ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. AWS ๊ณ์ ๋ง๋ค๊ธฐ ~ EC2 ์ธ์คํด์ค ๋ง๋ค๊ณ ์ ์ํ๊ธฐ (์ด๋ฒ ๊ธ) ๊ฐ๋จํ ์คํ๋ง ํ๋ก์ ํธ ์์ฑํ๊ณ ๊นํ๋ธ์ ์ฌ๋ฆฌ๊ธฐ -> EC2์์ ์์ clone๋ฐ์ ..