๋ด๊ฐ ๊ฐ๋ฐํ ํ๋ก์ ํธ๋ ๊ฐ์ธ์ ๋ณด๊ฐ ๋ง์ด ํฌํจ๋ ์๋น์ค์๋ค.
ํนํ, ์ฌ์ฉ์ ์ ๋ณด์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ DB์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋ณด์์ด ์ค์ํ ์์์๊ณ ,
๊ฒฐ๊ตญ ISMS(์ ๋ณด๋ณดํธ ๊ด๋ฆฌ์ฒด๊ณ) ์ฌ์ฌ ๋์์ด ๋๋ฉด์ ๋ง๋ถ๋ฆฌ ํ๊ฒฝ์์ ์ด์ํ ํ์๊ฐ ์๊ฒผ๋ค.
๋ง๋ถ๋ฆฌ ํ๊ฒฝ์์๋ ๊ฐ๋ฐ๋ง๊ณผ ์ด์๋ง์ด ์์ ํ ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์,
๊ธฐ์กด์ฒ๋ผ GitHub Actions์ ์ด์ฉํ ์๋ ๋ฐฐํฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง, ๋จ์ํ ์๋ ๋ฐฐํฌ๋ฅผ ํ์๋ ์์ฐ์ฑ์ด ๋๋ฌด ๋ฎ์์ง๋ ๋ฌธ์ ๊ฐ ์์๋ค.
๊ทธ๋์ AWS S3 + CodeDeploy๋ฅผ ํ์ฉํ ์๋ ๋ฐฐํฌ ์์คํ
์ ๊ตฌ์ถํด์ผ ํ๊ณ ,
์ด ๋ชจ๋ ๊ณผ์ ์ ํผ์์ ์ฃผ๋์ ์ผ๋ก ์งํํด์ผ ํ๋ ์ํฉ์ด ๋์๋ค.
๐ ์ฆ, "๋ง๋ถ๋ฆฌ + CI/CD ์๋ํ + ISMS ์ค์"๋ผ๋ ์ธ ๊ฐ์ง ๊ณผ์ ๋ฅผ ๋์์ ํด๊ฒฐํด์ผ ํ๋ค.
๋ง๋ถ๋ฆฌ๋ฅผ ์ ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ๋ณด์ ๊ฐํ์
๋๋ค.
ํนํ ๊ธ์ต, ์๋ฃ, ๊ณต๊ณต๊ธฐ๊ด ๋ฑ ๋ฏผ๊ฐํ ๊ฐ์ธ์ ๋ณด๊ฐ ํฌํจ๋ ์๋น์ค์์๋ ISMS(์ ๋ณด๋ณดํธ ๊ด๋ฆฌ์ฒด๊ณ) ์ฌ์ฌ๋ฅผ ํต๊ณผํด์ผ ํฉ๋๋ค.
ISMS ์ฌ์ฌ์์๋ ๋ฐ์ดํฐ ์ ์ถ ๋ฐฉ์ง ๋ฐ ์ธ๋ถ ๊ณต๊ฒฉ ๋์์ ์ํ ๋ง๋ถ๋ฆฌ ์ ์ฑ
์ ์๊ตฌํฉ๋๋ค.
์ด ๋๋ฌธ์, ๊ฐ๋ฐ/์ด์๋ง๊ณผ ์๋น์ค๋ง์ ๋ถ๋ฆฌํ์ฌ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ์ธ๋ถ๋ง๊ณผ ์ง์ ์ฐ๊ฒฐ๋์ง ์๋๋ก ๋ณดํธํด์ผ ํฉ๋๋ค.
-GOOGLE-
๊ฐ๋ฐ๋ง(์ธ๋ถ๋ง)๊ณผ ์ด์๋ง(๋ด๋ถ๋ง) ๋ถ๋ฆฌ โ ๋ณด์ ๊ฐํ
DB์ ์ ์ฅ๋ ๊ฐ์ธ์ ๋ณด ๋ณดํธ โ ISMS ์ฌ์ฌ ๊ธฐ์ค ์ค์
์ธ๋ถ๋ง์์ ์ง์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ โ ํดํน ๋ฐ ์ ๋ณด ์ ์ถ ๋ฐฉ์ง
ํ์ง๋ง ๋ง๋ถ๋ฆฌ ํ๊ฒฝ์์๋ CI/CD ์๋ํ๊ฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด GitHub Actions + AWS S3 + CodeDeploy๋ฅผ ํ์ฉํ ๋ฐฐํฌ ์๋ํ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
1.GitHub Actions์์ ํ๋ก์ ํธ ๋น๋
2.๋น๋๋ .jar ํ์ผ์ AWS S3์ ์ ๋ก๋
3.AWS CodeDeploy๊ฐ S3์์ ํ์ผ์ ๊ฐ์ ธ์ ๋ง๋ถ๋ฆฌ ์๋ฒ์ ๋ฐฐํฌ
4.๋ฐฐํฌ ์๋ฃ ํ ์๋ ์คํ
โ
GitHub Actions Workflow ์ค์
.github/workflows/deploy.yml ํ์ผ์ ์์ฑํ๊ณ ๋ด์ฉ์ ์ถ๊ฐํ๋ค.
โ
1) S3 ๋ฒํท ์์ฑ
AWS ์ฝ์์์ S3 ๋ฒํท(my-deploy-bucket)์ ์์ฑํ๋ค.
์ฌ๊ธฐ์ ๋ฐฐํฌํ .jar ํ์ผ์ ์ ์ฅํ ๊ฒ์
๋๋ค.
โ
2) IAM Role ์์ฑ (CodeDeploy ๊ถํ)
CodeDeploy๊ฐ S3์์ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์๋๋ก IAM Role์ ์ค์ ํด์ผ ํ๋ค.
โ
1) appspec.yml ํ์ผ ์์ฑ
CodeDeploy๋ appspec.yml์ ์ด์ฉํ์ฌ ๋ฐฐํฌ ํ์ผ์ ์์น์ ์คํ ๋ฐฉ๋ฒ์ ์ ์ํ๋ค
appspec.yml์ ํ๋ก์ ํธ ๋ฃจํธ์ ์ถ๊ฐํ๋ค.
โ
2) ๋ฐฐํฌ ํ ์คํํ start.sh ์คํฌ๋ฆฝํธ ์์ฑ
๋ฐฐํฌ๊ฐ ์๋ฃ๋๋ฉด JAR ํ์ผ์ ์คํํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ผ ํ๋ค.
scripts/start.sh(์ฐ๋ฆฌํ์ start.sh , shutdown.sh ์ด๋ฐ์์ผ๋ก ๋ค์ด๋ฐํจ) ํ์ผ์ ์์ฑ
1๏ธโฃ GitHub Actions๊ฐ ์คํ๋์๋์ง ํ์ธ
GitHub โ Repository โ Actions์์ ์คํ ๋ก๊ทธ๋ฅผ ํ์ธ
2๏ธโฃ AWS CodeDeploy์์ ๋ฐฐํฌ ์งํ ํ์ธ
AWS CodeDeploy โ ์ ํ๋ฆฌ์ผ์ด์
โ ๋ฐฐํฌ ๊ทธ๋ฃน์์ ์งํ ์ํ๋ฅผ ํ์ธ
3๏ธโฃ EC2 ์๋ฒ์ ์ง์ ์ ์ํ์ฌ ์คํ ํ์ธ
1๏ธโฃ ๋ง๋ถ๋ฆฌ ํ๊ฒฝ์์ ๋ฐฐํฌ ์๋ํ, ์๊ฐ๋ณด๋ค ์ฝ์ง ์๋ค
CI/CD๋ ์ผ๋ฐ์ ์ผ๋ก GitHub Actions โ ์๋ฒ ๋ฐฐํฌ ๋ฐฉ์์ผ๋ก ์งํํ๋๋ฐ, ๋ง๋ถ๋ฆฌ ํ๊ฒฝ์์๋ ์ธ๋ถ๋ง์์ ์ง์ ๋ฐฐํฌํ ์ ์๋ค๋ ์ ์ด ํฐ ์ฅ๋ฒฝ์ด์๋ค.
S3 + CodeDeploy ์กฐํฉ์ผ๋ก ํด๊ฒฐํ์ง๋ง, ๊ถํ ์ค์ (IAM)๊ณผ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์์ฑ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ ธ๋ค.
โ ๊ฒฐ๊ตญ ๋ฐฐํฌ ์๋ํ๋ ์ค์ ์ด 80%, ์คํ์ด 20%๋ผ๋ ๊ฑธ ๋ค์ ํ๋ฒ ๊นจ๋ฌ์๋ค.
2๏ธโฃ ISMS ๋ณด์ ์ ์ฑ
์ ์ค์ํ๋ฉด์๋ ํจ์จ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํด์ผ ํ๋ค
๋ณด์์ ๊ฐํํ๋ ๊ฒ์ ์ค์ํ์ง๋ง, ๊ทธ๋ ๋ค๊ณ ๊ฐ๋ฐ ์์ฐ์ฑ์ด ๋ฎ์์ง๋ฉด ์ ๋๋ค.
๋ง๋ถ๋ฆฌ ํ๊ฒฝ์์๋ ์๋ํํ ์ ์๋ ๋ถ๋ถ์ ์ต๋ํ ์๋ํํ๊ณ ,
๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ํ์คํํ์ฌ ํ์ ๋๊ตฌ๋ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฑธ ๋๊ผ๋ค.
3๏ธโฃ AWS ์๋น์ค๋ฅผ ์กฐํฉํ๋ฉด ๋ง๋ถ๋ฆฌ ํ๊ฒฝ์์๋ ์ถฉ๋ถํ ์๋ํ๋ฅผ ๊ตฌํํ ์ ์๋ค
๋ง๋ถ๋ฆฌ ํ๊ฒฝ์์๋ CI/CD๊ฐ ์ด๋ ต๋ค๊ณ ๋ง ์๊ฐํ๋๋ฐ,
โ
S3๋ฅผ ์ค๊ฐ ์ ์ฅ์๋ก ํ์ฉํ๊ณ
โ
CodeDeploy๋ก ๋ด๋ถ๋ง์ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ์ ์ฉํ๋
๊ธฐ์กด CI/CD ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์ ๊ทธ๋๋ก ์ ์งํ๋ฉด์๋ ๋ณด์ ์๊ฑด์ ์ถฉ์กฑํ ์ ์์๋ค.
4๏ธโฃ ๋ฐฐํฌ ์๋ํ๋ฅผ ํด๋์ผ๋, ์ดํ ์ด์์ด ํจ์ฌ ํธํด์ก๋ค
์ฒ์์๋ GitHub Actions, S3, CodeDeploy ์ค์ ์ ๋ง์ถ๋๋ผ ์๊ฐ์ด ๊ฑธ๋ ธ์ง๋ง,
์ผ๋จ ์๋ํ๊ฐ ์๋ฃ๋๋ ์ดํ ๋ฐฐํฌ๊ฐ ํจ์ฌ ๊ฐํธํด์ก๋ค.
ํ ์ค ๋ช
๋ น์ด๋ก ๋๋๋ ๋ฐฐํฌ๋ฅผ ๋ณด๋ฉด์ โ์ด๊ฑธ ๋งค๋ฒ ์๋์ผ๋ก ํ๋ค๋ฉด ์์ฒญ ๊ท์ฐฎ์๊ฒ ๋คโฆโ๋ ์๊ฐ์ด ๋ค์๋ค. ๐
๋ฒ์ธ๋ก ์์ธ๋ก ๊น์ด ํฐ์ง๋๊ฐ ์ข ์ข ์๋ค๋ ์ฌ์ค์ ์๊ฒ๋์๋ค.. https://www.githubstatus.com/ -> ์ด๋งํฌ๋ฅผ ํตํด์ ๊น์ํ๋ฅผ ํ์ธํ ์ ์๋ค.