Section4 Unit7 [Deploy] CI/CD - Github Actions ์ค์ต
๐ Chapter1. ๊ฐ๋ฐ ํ๋ก์ธ์ค
• ๊ฐ๋ฐ ํ๋ก์ธ์ค, ์ฆ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค ๋ชจ๋ธ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ(SDLC, Software Develpment Life Cycle)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๋ค.
• ์ ํต์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ก ์ํฐํ ๋ฐฉ์์ด ์๊ณ , ๋ชจ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ก ์ ์์ผ์ด ์๋ค.
๐ Chapter2. CI/CD
• ์ง์์ ํตํฉ(Continuous Integration, CI)
๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ํ ํ๋ก์ธ์ค (Code - Build - Test ๋จ๊ณ)
CI๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ ์คํธ๋์ด ๊ณต์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํตํฉ๋๋ฏ๋ก ์ฌ๋ฌ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ๋์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ฝ๋ ์์ ์ ํ ๊ฒฝ์ฐ ์๋ก ์ถฉ๋ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
• ์ง์์ ๋ฐฐํฌ(Continuous Delivery/Deployment, CD)
์ง์์ ์ธ ์๋น์ค ์ ๊ณต(Continuous Delivery) ๋ฐ/๋๋ ์ง์์ ์ธ ๋ฐฐํฌ(Continuous Deployment)๋ฅผ ์๋ฏธํ๋ฉฐ ์ด ๋ ์ฉ์ด๋ ์ํธ ๊ตํ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
๐ Chapter3. Github Action
• GitHub Actions๋ Github๊ฐ ๊ณต์์ ์ผ๋ก ์ ๊ณตํ๋ ๋น๋, ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์๋ํํ ์ ์๋ CI/CD ํ๋ซํผ์ด๋ค.
โญ๏ธ ๊ณผ์ . Github Actions ์ค์ต
โ๏ธ Bare Minimum Requirement
โ ๋๋ง์ ์๊ณ ๋ผ ์คํ ์ด์ธ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ถ๋ถ์ S3๋ก ๋ฐฐํฌํฉ๋๋ค. ํํ ๋ฆฌ์ผ์ ์ด์ด์ ํด๋น ์ค์ต์ ์งํํฉ๋๋ค. ๊ธฐ์กด์ ๊ฐ์ง๊ณ ์์๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ด์ฉํด ๋ด ์๋ค.
Github Actions ์ค์ต์ ๋ฐ๋ก ์ ๋ฆฌ๋ฅผ ํด๋ณด์๋ค.
ํ๋ค๋ณด๋ ํฅ๋ฏธ๋กญ๊ณ , ์ฌ๋ฏธ์๋ ์์ ์ด์๋ค. ๋ค๋ฅธ ๋ค์ํ ํ ์คํธ๋ ๋ฃ์ ์ ์์์ผ๋ฉด ์ข์์ ํ ๋ฐ! ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณต๋ถํด์ผ๊ฒ ๋ค.
๐ ์ค๋์ ํ๊ณ
์ด์ AWS ๋ง๋ณด๊ธฐ ํ์ต์ ์ด์ด์ ์ค๋์ CI/CD์ ๋ํ ํ์ต๊ณผ Github Actions์ ์ฌ์ฉํ ๊ณผ์ ๋ฅผ ํ๋ค. 1๋ ์ ์ฏค CI/CD์ ๊ด๋ จ๋ ์ ํ๋ธ ์์์ ๋ณธ ์ ์ด ์์๋๋ฐ, ๋ณด๋ฉด์๋ ๋ฌด์จ ๋ง์ธ์ง ์ดํด๊ฐ ํ๋๋ ์๋๊ณ ๋์๊ฒ ํ์ํ ์ง์์ ์๋๊ฒ ๋ค, ๋ผ๋ ์๊ฐ์ผ๋ก ๊ฐ๋ณ๊ฒ ๋๊ธด ์ ์ด ์์๋ค. ๊ทธ ๋๋ ๋ฌผ๋ก ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก ์ ํฅํ๊ณ ์ถ์ ๋ง์์ ์์์ง๋ง, CI/CD๋ ๋์๋ ๊ฑฐ๋ฆฌ๊ฐ ๋จผ ์ด์ผ๊ธฐ์ธ์ค ์์๋ค. ๊ฑฐ์ 1๋ ๋ง์ ๋ค์ ๊ทธ ์์์ ๋ดค๋ค. ์ ๋ง ์๋ฌด๊ฒ๋ ๋ชฐ๋๋ ๊ทธ๋๋์ ๋ค๋ฅด๊ฒ ํฅ๋ฏธ๊ฐ ์๊ธฐ๊ณ , ์ดํด๋ ๋ฌผ๋ก ๋ ์ ๋์๋ค. ์ง์์ ์ธ ํตํฉ๊ณผ ๋ฐฐํฌ๊ฐ ์ ํ์ํ์ง, CI/CD๋ฅผ ํตํด ์ป์ ์ ์๋ ์ฅ์ ์ ๋ฌด์์ธ์ง, ๋จ๊ณ๋ ์ด๋ป๊ฒ ๋๋์ง ๋ฑ ์ด๋ฒ ํ์ต์ ํตํด ๋ ๋ง์๊ฑธ ์๊ฒ๋์๋ค.
์ค๋์ ํ๊ณ ๋ฅผ ์ฐ๋ฉฐ ๋ฌธ๋ ๊ทธ๋ฐ ์๊ฐ์ด ๋ค์๋ค. ๋ถ๊ณผ 3๋ ์ ๊น์ง๋ง ํด๋ ๋๋ “๊ฐ๋ฐ์”๋ผ๋ ์ง์ ์์ฒด์ ๋ํด์ ์ ํ ๋ชจ๋ฅด๊ณ ์์๋ค. ์ฐ์ฐํ ์น ํผ๋ธ๋ฆฌ์ฑ์ ์ ํ๊ฒ ๋๊ณ , ํ๋ก ํธ ๊ฐ๋ฐ์ ํ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค๋ฉด์ ๋์์์ด ์ธํ์ ๋ฃ์ผ๋ ค ๋ ธ๋ ฅํ๋ค. ๊ทธ๋๋ ์ญ์ ๋ชจ๋ ๊ฒ ๋ค ์ฝ์ง ์์๋ค. ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๊ณ ๋, ์ปดํจํฐ์ ๋คํธ์ํฌ์ ๋ํ ์ง์๋, ๊ฐ๋ฐ ์ธ์ด์ ๋ํด์๋ ํ๋๋ ๋ชจ๋ฅด๋ ์ํ๋ก ํ๋์ฉ ๋ฐฐ์๊ฐ๋ ๊ฒ์ ๋๋ฌด ํ๋ค์๊ณ , ์ง๊ธ๋ ์ญ์ ๋๋ฌด ์ด๋ ต๋ค. ํ๋ฒ ์ฅ ๋ณด๊ณ ๋ ์ดํด๋ฅผ ํ ์ ์์ผ๋ฉด ์ผ๋ง๋ ์ข์๊น. ๊ทธ๋๋ 1๋ ์ ์ฒ์ ์ ํ๋ฉฐ ๋ฌด์จ ๋ง์ธ์ง ์ ํ ์์์๋ ์ฉ์ด๊ฐ ์ง๊ธ์ ๋ฏ์ค์ง ์๋ค๋ ๊ฒ์ ๋ฟ๋ฏํจ์ ๋๋๋ค.
์ฌ์ค ์ด์ ์ค์ตํ๋ AWS์ ์ค๋ ์ค์ตํ Github Actions๋ ์ฒ์ ์ ํ๋ค๋ณด๋ ๋ฌ๊ตฌ๋ฆ ์ก๋ ๋๋์๋ค๊ฐ ์ง๊ธ ๋น์ฅ ํ์ํ๊ฑด ์๋๋ผ๊ณ ์๊ฐํด์ ๊ทธ๋ฅ ํ๋ฒ ๊ฒฝํ๋ง ํด๋ณด๊ณ React ๊ณต๋ถ๋ ๋ ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐ์ ํ์๋๋ฐ, ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ํฅ๋ฏธ๊ฐ ์๊ฒผ๋ค. ๊ฒฐ๊ตญ์๋ ์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ด ํ์ฌ์ ๋ชฉํ์ผํ ๊ณ , ๋ฐฐํฌ๋ ์๋น์ค๋ ์ง์์ ์ผ๋ก ๊ด๋ฆฌ๋ฅผ ํด์ค์ผํ ํ ๋ ๋น์ฐํ ์์์ผ ํ๋ ๋ถ๋ถ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋ฌผ๋ก ๋น์ฅ์ ์ฌ์ฉ๋น๋๊ฐ ๋จ์ด์ง๋๋ผ๋, ์ธ์ ๊ฐ ๋ด ์๋น์ค๋ฅผ ๋ด๊ฐ ๊ตฌ์ถํ๊ณ ๋ฐฐํฌํ๋ ๋ ๋ ์ค์ง ์์๊น? ๊ทธ๋ ๊น์ง ํ์ดํ ๐