๐ ๊ณต๋ถ๋ฅผ ๊ฒฐ์ฌํ ๊ณ๊ธฐ
์ ํจ์ค๋ก ๋ฐฐ์ฐ๋ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ | ํ๋ผ๋ ธ๋ฐ์ด ํ๋ผ๋ชจ๋ ๋ฉ๊ฐ๋ - ๊ต๋ณด๋ฌธ๊ณ
์ ํจ์ค๋ก ๋ฐฐ์ฐ๋ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ | ์ ํจ์ค๋ฅผ ์ฌ์ฉํด ํ๋ก์ ํธ์ ์์๋ถํฐ ์ต์ข ๋จ๊ณ๊น์ง CI/CD๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ณ , ์๋ํฌ์๋ ํ์ดํ๋ผ์ธ์ ์ง์ ๋ง๋ค์ด ๋ด์ผ๋ก์จ ๋ฐ๋ธ์ต์ค ์ค๋ฌด
product.kyobobook.co.kr
์ด๋ฒ ๋ถํธ์บ ํ ๋์ 1์ฐจ ๋ฐ 2์ฐจ ํ ํ๋ก์ ํธ, ๊ทธ๋ฆฌ๊ณ 2์ฐจ ์คํฐ๋ ์ฌ์ด๋ ํ๋ก์ ํธ์์ Jenkins๋ฅผ ํ์ฉํ CI ํ๊ฒฝ์ ๊ตฌ์ถํ๋ค. ์ฌ์ค ์์ ์ค์๋ Jenkins์ ๊ฐ๋ ๋ง ๊ฐ๋จํ ์ตํ์ ๋ฟ, ์ค์ ํ๊ฒฝ์ ์ง์ ๊ตฌ์ถํด๋ณธ ๊ฑด ์ฒ์์ด์๋ค. ์งง์ 10์ผ์ด๋ผ๋ ์๊ฐ ์์ ๊ฐ๋ ์ ์์ ํ ์ดํดํ๊ณ ์ค์ ์ ์ ์ฉํ๋ ์ผ์ ๊ฒฐ์ฝ ์ฝ์ง ์์๊ณ , ๋น์์๋ ์๋ฒฝํ ์ดํด๋ณด๋ค๋ ์ธํฐ๋ท๊ณผ GPT, ์ฝ์น๋๊ณผ ์คํผ์ค์์ ์ฝ์น๋์ ๋์์ ์์กดํด ๊ฐ๊น์ค๋ก ์ฐ๋ํ๋ค๋ ๋๋์ด ๋ ์ปธ๋ค. ์ด๋ฌํ ๊ฒฝํ์ ๋ฐํ์ผ๋ก, ํ๋ก์ ํธ ์ข ๋ฃ ํ Jenkins์ ๋ํด ์ข ๋ ๊น์ด ๊ณต๋ถํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์๊ณ , ๊ทธ ๊ณ๊ธฐ๋ก ์ ์ฑ ์ ๊ตฌ๋งคํ๊ฒ ๋์๋ค. ์์ผ๋ก๋ 'ํ๋ผ๋ ธ๋ฐ์ด ํ๋ผ๋ชจ๋ ๋ฉ๊ฐ๋ ' ์ ์์ ใ์ ํจ์ค๋ก ๋ฐฐ์ฐ๋ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถใ์ ๋ฐํ์ผ๋ก ๊ฐ๋ ์ ์ ๋ฆฌํ๊ณ , ์ด๋ฅผ ๋ธ๋ก๊ทธ์ ๊พธ์คํ ํฌ์คํ ํด๋ณผ ๊ณํ์ด๋ค.
๐ CHAPTER 1. ์ง์์ ํตํฉ/๋ฐฐํฌ์ ์ดํด
์ต๊ทผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์๋ ์์ค ์ฝ๋๊ฐ ๋น๋ฒํ๊ฒ ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ฉฐ, ์ด์ ๋ฐ๋ผ ์ ์์ผ ๊ฐ๋ฐ ๋ชจ๋ธ์ด ๋๋ฆฌ ์ฑํ๋๊ณ ์๋ค. ์ ์์ผ ๋ชจ๋ธ์์๋ ๋ณ๊ฒฝ๋ ์ฝ๋๋ฅผ ํ๊บผ๋ฒ์ ๋ณํฉํ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์๋ ํ๊ท ๊ฒฐํจ์ด๋ ์ฝ๋ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ง์์ ํตํฉ(Continuous Integration, CI) ๋ฐฉ์์ ํ์ฉํ๋ค. CI๋ ๊ฐ๋ฐ์๊ฐ ์์ ์ ์๋ฃํ๋ ์ฆ์ ์ฝ๋๋ฅผ ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉํ๋ ๋ฐฉ์์ผ๋ก, ์ฝ๋ ์ถฉ๋์ ๋น ๋ฅด๊ฒ ๋ฐ๊ฒฌํ๊ณ ํ๊ท ๊ฒฐํจ์๋ ์ด๊ธฐ์ ํจ์จ์ ์ผ๋ก ๋์ํ ์ ์๋ ์ฅ์ ์ด ์๋ค.
๐ Development Workflow
- ๋ก์ปฌ์์ ๋จ์ ํ ์คํธ ์คํ
- ๊ธฐ๋ฅ ๊ตฌํ ํ, ์ค์ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ก ์ฝ๋ ํธ์ ๋ฐ ๋ณํฉ
- ๋ณํฉ ํ ์ฝ๋ ์ปดํ์ผ
- ์ปดํ์ผ๋ ์ฝ๋์์ ํ ์คํธ ์คํ (๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ ๋ฐ ์ ์ ๋ถ์ ๋ฑ)
- ์ํฐํฉํธ ๋ฐฐํฌ (์ํฐํฉํธ๋ ๋ณดํต .war๋ .jar ํ์ผ ํ์)
๐ CI/CD Workflow
- ์ต์ ์ฝ๋ ๊ฐ์ ธ์ค๊ธฐ
- ๋จ์ ํ ์คํธ ๊ตฌํ๊ณผ ์คํ
- ์ฝ๋ ๊ฐ๋ฐ
- ๋จ์ ํ ์คํธ ์ผ์ด์ค ์ฌ์คํ
- ์ฝ๋ ํธ์์ ๋ณํฉ
- ์ฝ๋ ๋ณํฉ ํ ์ปดํ์ผ
- ๋ณํฉ๋ ์ฝ๋์์ ํ ์คํธ ์คํ
- ์ํฐํฉํธ ๋ฐฐํฌ
- ๋ฐฐํฌ ์ ํ๋ฆฌ์ผ์ด์ ์ E2E ํ ์คํธ ์คํ (Selenium ๊ฐ์ UI ์๋ํ ๋๊ตฌ ์ฌ์ฉ)
๐ก ์ธ์ฌ์ดํธ
์์ ์ ๋ฆฌํ ๋ ์ํฌํ๋ก์ฐ(Development Workflow, CI/CD Workflow)๋ ๊ต์ฌ์ ์๊ฐ๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ฆฌํ ์ผ๋ฐ์ ์ธ ์์์ผ ๋ฟ์ด๋ฉฐ, ์ ๋์ ์ธ ์ ๋ต์ ์๋๋ค. ์ค์ ์ํฌํ๋ก์ฐ๋ ํ์ ๊ฐ๋ฐ ๋ฌธํ, ์๋น์ค ํน์ฑ, ์ฌ์ฉํ๋ ํด์ฒด์ธ, ์กฐ์ง์ ์ฑ์๋ ๋ฑ์ ๋ฐ๋ผ ๋ค์ํ๊ฒ ๋ฌ๋ผ์ง ์ ์๋ค. ์ด๋ ์ ์์ผ์ฒ๋ผ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ์๊ตฌํ๋ ์๋์๋ ๊ธฐ์กด ๋ฐฉ์๋ง์ผ๋ก๋ ํ๊ณ๊ฐ ์๋ค๋ ์ ์ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ด๋ฌํ ์๊ตฌ์ ๋ถํฉํ๋ CI/CD ํ๋ก์ธ์ค๋ฅผ ๋์ ํจ์ผ๋ก์จ ์ป์ ์ ์๋ ์ด์ ์ ๊ฐ์กฐํ๊ธฐ ์ํ ๋ด์ฉ์ด๋ผ๊ณ ์ดํด๋๋ค.
๐ CHAPTER 2. ์ ํจ์ค ์๊ฐ
์ค์ CI/CD ํ๊ฒฝ์์๋ ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฃผ ์ง์์ ์ผ๋ก ํตํฉํ๊ณ ํ ์คํธํ๋ฉฐ, ๋น๋ ๊ฒฐ๊ณผ๋ฅผ ์ฆ์ ํต๋ณด๋ฐ๋๋ค. ์ด๋ฌํ ํ๋ก์ธ์ค๋ฅผ ์์์ ์ผ๋ก ๊ด๋ฆฌํ๋ ค๋ฉด ๋ด๋น์๊ฐ ํ์ํ๊ณ ๋ฒ๊ฑฐ๋ก์ธ ๋ฟ ์๋๋ผ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ๋ ๋๋ค. Jenkins๋ ์ด๋ฌํ ๋ถ๋ด์ ์ค์ด๊ธฐ ์ํด, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ํ์ด ์๋ ๊ฐ์ ์์ด๋ ๋ค์ํ ๋๊ตฌ์ ์ฐ๋ํ์ฌ ์ํฌํ๋ก ์ ์ฒด๋ฅผ ์๋์ผ๋ก ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ๋ค.
์ฆ, Jenkins๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ์๋ํํ๋ ์คํ ์์ค ๋๊ตฌ๋ก, ์ค์ ์์ค ๋ฆฌํฌ์งํฐ๋ฆฌ์์ ์ต์ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ฉฐ, ๋จ์ ํ ์คํธ๋ฅผ ์คํํ๊ณ , ์ฐ์ถ๋ฌผ์ ๋ค์ํ ํ์์ผ๋ก ํจํค์งํ ๋ค ์ฌ๋ฌ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
CI/CD๋ 'ํ์ดํ๋ผ์ธ'์ด๋ผ ๋ถ๋ฆฌ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ ํ์ ์๋ช ์ฃผ๊ธฐ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ฌ์ ์ ์ ์๋ ์์์ ๋ฐ๋ผ ๊ฐ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉด์ ๋จ์ํ ์์ค ์ฝ๋๊ฐ ์ต์ข ์ ์ผ๋ก ์คํ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ณํ๋๋ค. Jenkins๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ ์ง์ํ๊ธฐ ๋๋ฌธ์, ์ด๋ค ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์ ์ฒด ๋น๋ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์๋ํํ์ฌ ๊ตฌํํ ์ ์๋ค.
๐ ์ผ๋ฐ์ ์ธ Jenkins ๋จ๊ณ
- ์ฌ์ฉ ์ค์ธ ์์ค ์ฝ๋ ๊ด๋ฆฌ ์์คํ (Git ๋ฑ)์ ๋ง๋ ํ๋ฌ๊ทธ์ธ(์: Git ํ๋ฌ๊ทธ์ธ)์ ํตํด ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ณ๊ฒฝ๋ ํ์ผ์ ๊ฐ์ ธ์จ๋ค.
- Maven๊ณผ ๊ฐ์ ๋น๋ ๋๊ตฌ ๋ฐ ํด๋น ํ๋ฌ๊ทธ์ธ(์: Maven ํ๋ฌ๊ทธ์ธ)์ ์ฌ์ฉํด ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ค.
- ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ๋์์ผ๋ก ๋จ์ ํ ์คํธ ๋ฐ ํตํฉ ํ ์คํธ๋ฅผ ์คํํ๋ค.
- ์ ์ ๋ถ์ ๋๊ตฌ(์: SonarQube)๋ฅผ ํตํด ์ฝ๋ฉ ํ์ค ์ค์ ์ฌ๋ถ, ๋ฐ๋ ์ฝ๋ ์กด์ฌ ์ฌ๋ถ ๋ฑ์ ๊ฒ์ฌํ๋ค.
- ํ ์คํธ๋ฅผ ํต๊ณผํ ํ์ผ์ .jar, .war ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ๋ฒ๋ค๋งํ๋ค. ์ด ๋จ๊ณ ์ญ์ ํ๋ฌ๊ทธ์ธ์ ํตํด ์๋ํํ ์ ์๋ค.
- ๋น๋๋ ํ์ผ์ ํ ์คํธ ํ๊ฒฝ ๋๋ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ค.
- Selenium๊ณผ ๊ฐ์ UI ์๋ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด E2E ํ ์คํธ๋ฅผ ์คํํ๋ค.
- ํ ์คํธ ๊ฒฐ๊ณผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์์ฝํ ์ด๋ฉ์ผ์ ํ๋ก์ ํธ ํ์๋ค์๊ฒ ์ ์กํ๋ค.
๐ก ์ธ์ฌ์ดํธ
ํ ํ๋ก์ ํธ์ ์ฌ์ด๋ ํ๋ก์ ํธ ๋น์, ์ฐ๋ฆฌ๋ Jenkins๋ฅผ ํ์ฉํด Selenium๊ณผ Appium ๊ธฐ๋ฐ์ UI ์๋ํ ํ ์คํธ๋ฅผ ์คํํ๋ค. ํ ์คํธ ์ฝ๋์ ๋ณ๊ฒฝ์ด ์๊ธฐ๋ฉด Jenkins๊ฐ ์ด๋ฅผ ๊ฐ์งํ๊ณ , ๋ ํฌ์งํ ๋ฆฌ์ ์ ์๋ Jenkinsfile์ ์ฝ์ด ํ ์คํธ๋ฅผ ์๋์ผ๋ก ์ํํ๋๋ก ๊ตฌ์ฑํ๋ค. ๋น์์๋ ์ฃผ๋ก UI ํ ์คํธ ์คํ๋ง ๊ฒฝํํ์ง๋ง, ์ดํ CI/CD ํ์ดํ๋ผ์ธ์ ํ์ตํ๋ฉด์ Jenkins๊ฐ ๋จ์ํ ํ ์คํธ๋ง ์คํํ๋ ๊ฒ์ด ์๋๋ผ, ์ฝ๋ ์ปดํ์ผ(Maven ๋ฑ), ๋จ์/ํตํฉ ํ ์คํธ ์ํ, ์ ์ ๋ถ์(SonarQube), ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ๋ค๋ง(.jar/.war), ๋ฐฐํฌ๊น์ง ์ ๊ณผ์ ์ ์๋ํํ ์ ์๋ค๋ ์ ์ ์๊ฒ ๋์๋ค. ์ฐ๋ฆฌ๊ฐ ํ ์คํธํ๋ ๋์ ์๋น์ค ์ญ์ ์ด๋ฌํ ๋น๋ ๋ฐ ๋ฐฐํฌ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ง๋ค์ด์ก๊ณ , ์ด ๋ชจ๋ ๊ณผ์ ๋ํ Jenkins๋ก ํตํฉ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ฌ์ค์ด ์ธ์ ๊น์๋ค.
๐ CHAPTER 3. ์ ํจ์ค ์ค์น
Jenkins๋ ๋ฒ์ ์ ๋ฐ๋ผ ์๊ตฌํ๋ Java ๋ฒ์ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์ค์น ์ ๋ฐ๋์ ํด๋น ๋ฒ์ ์ ๋ง๋ Java ๋ฐ ๊ด๋ จ ์ํํธ์จ์ด๋ฅผ ํจ๊ป ์ค์นํด์ผ ํ๋ค. ๊ฐ Jenkins ๋ฒ์ ์์ ์ง์ํ๋ Java ๋ฒ์ ์ ํด๋น ๋งํฌ๋ฅผ ํตํด ํ์ธํ ์ ์๋ค.
๋ค์ํ Jenkins ์ค์น ๋ฐฉ๋ฒ
• MSI Installer๋ก ์ค์น
~> ํด๋น ๋งํฌ์์ Jenkins MSI Installer ๋ค์ด๋ก๋
~> ํด๋น ๋งํฌ์์ ์ค๋ช ํ๋ ๋จ๊ณ์ ๋ฐ๋ผ Jenkins ์ค์น
• .war ํ์ผ๋ก ์ค์น
~> ํด๋น ๋งํฌ์์ Jenkins .war ํ์ผ ๋ค์ด๋ก๋
~> ํด๋น ๋งํฌ์์ ์ค๋ช ํ๋ ๋จ๊ณ์ ๋ฐ๋ผ Jenkins ์ค์น
• Docker Image๋ก ์ค์น
~> ํด๋น ๋งํฌ์์ ์ค๋ช ํ๋ ๋จ๊ณ์ ๋ฐ๋ผ Jenkins ์ค์น
๐ก ์ธ์ฌ์ดํธ
1์ฐจ ํ ํ๋ก์ ํธ ์ ์ ์งํ๋ Jenkins ํน๊ฐ ๋น์, Windows ํ๊ฒฝ์ ์ง์ Jenkins๋ฅผ ์ค์นํ๋ ค๋ค๊ฐ Java ๋ฒ์ ํธํ ๋ฌธ์ ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝํ์ด ์๋ค. ๊ฒฐ๊ตญ Docker๋ฅผ ์ด์ฉํด Jenkins๋ฅผ ์คํํ๊ณ , ์ด ๋ฐฉ์์ด ํจ์ฌ ๊ฐํธํ๊ณ ์์ ์ ์ด๋ผ๋ ๊ฑธ ์ฒด๊ฐํ๋ค. ์ด๋ฒ์๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด Docker ๊ธฐ๋ฐ์ผ๋ก Jenkins๋ฅผ ๋ค์ ๋ค๋ค๋ณผ ๊ณํ์ด๋ค.
๐ CHAPTER 4. ์ ํจ์ค ๊ตฌ์ฑ
Jenkins ์๋ฒ๋ฅผ Docker ์ปจํ ์ด๋๋ก ์คํํ๋ ค๋ฉด, Windows ๋ช ๋ น ํ๋กฌํํธ์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค
docker run -p 8080:8080 --name={์ปจํ ์ด๋ ์ด๋ฆ} jenkins/jenkins
์ฌ๊ธฐ์ -p 8080:8080์ ํฌํธ ํฌ์๋ฉ ์ค์ ์ผ๋ก, ํธ์คํธ์ 8080 ํฌํธ์ ๋ค์ด์จ ์์ฒญ์ ์ปจํ ์ด๋ ๋ด๋ถ Jenkins ์๋ฒ์ 8080 ํฌํธ๋ก ์ ๋ฌํ๋ค๋ ์๋ฏธ์ด๋ค. ์ด ์ค์ ๋๋ถ์ ๋ธ๋ผ์ฐ์ ์์ http://localhost:8080์ผ๋ก ์ ์ํ๋ฉด Jenkins์ ์ ๊ทผํ ์ ์๋ค.
์ด ์ธ์๋ Jenkins ๊ด๋ฆฌ > System์ ํ ๋๋ ํฐ๋ฆฌ, Jenkins URL, System Admin e-mail address ๋ฐ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ , ์ ๊ท ์ฌ์ฉ์ ์ถ๊ฐ ๋ฐฉ๋ฒ๊น์ง ๋ค๋ค๋ค. ํด๋น ๋ด์ฉ์ ์ง์ ์กฐ์ํด๋ณด๋ฉฐ ์ค์ตํ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ค๊ณ ํ๋จํด, ๋ณ๋๋ก ์ ๋ฆฌํ์ง๋ ์์๋ค.
๐ Next
์ค๋์ CI/CD์ ๊ฐ๋ ๋ถํฐ Jenkins์ ์๊ฐ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ๊น์ง ํ์ตํ๊ณ ์ ๋ฆฌํ๋ค. ์ฌ์ค ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฑ ์ ์ฝ๊ธฐ ์ ์๋ ํญ์ ๋ชฉ์ฐจ๋ฅผ ๊ผผ๊ผผํ ์ดํด๋ณด๋ ํธ์ธ๋ฐ, ์ด๋ฐ์๋ Jenkins์ GUI ์๊ฐ๊ฐ ์ค์ฌ์ด์ด์ ๋ค์ ์ง๋ฃจํ ๊ฒ ๊ฐ์๊ณ , ์ค๋ฐ์๋ ์๋ฐ API๋ฅผ ํ์ฉํ Jenkins ์ฌ์ฉ๋ฒ์ด ๋ฑ์ฅํด ์ด๋ ต๊ฒ ๋๊ปด์ก๋ค. ๋ฐ๋ฉด, ํ๋ฐ๋ถ์ ์ด๋ฉ์ผ ์๋ฆผ ์ค์ , Selenium์ ํ์ฉํ E2E ํ ์คํธ, ํ์ดํ๋ผ์ธ, ๋ถ์ฐ ๋น๋ ๋ฑ์ ๊ฝค ํฅ๋ฏธ๋ก์ ๋ค.
์ฌ์ค ์ฑ ๋ด์ฉ์ด ์ ๋ฐ์ ์ผ๋ก ์ด๋ ต๊ฒ ๋๊ปด์ก๊ณ , ์์ง ํ์ ๊ฒฝํ์ด ์๋ค ๋ณด๋ 'QA ์์ง๋์ด์๊ฒ ์ด๋ฌํ ์ง์์ด ์ค๋ฌด์์ ์ค์ ๋ก ์ฌ์ฉ๋ ๊น?'๋ผ๋ ์๋ฌธ๋ ๋ค์๋ค. ํ์ง๋ง ํ์ง์ ์ํํธ์จ์ด ์ ๊ฐ๋ฐ ๊ณผ์ ์ ์์ฐ๋ฅด๋ ์์ญ์ด๋ฉฐ, QA ์์ง๋์ด๋ ๋๊ณ ์์ ์ง์ ์์ ๊น๊ฒ ํ๊ณ ๋ค ์ ์๋ ํธ๊ธฐ์ฌ๊ณผ ์ด์ ์ด ํ์ํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋ฐ ์๋ฏธ์์ ์ด ์ฑ ์ ๋ถ๋ช ์ธ์ ๊ฐ ๋์์ด ๋ ๊ฒ์ด๋ผ ๋ฏฟ๊ณ , ๋๊น์ง ๋ง์คํฐํด๋ณด๊ณ ์ ํ๋ค.
๋ค์ ๊ธ์์๋ CHAPTER 5. ์ ํจ์ค ํ๋ฌ๊ทธ์ธ ๊ด๋ฆฌ, CHAPTER 6. ์ ์ญ ๋๊ตฌ ๊ตฌ์ฑ์ ์ดํด, CHAPTER 7. ์ ํจ์ค์ ๋ณด์ ๊ด๋ฆฌ, CHAPTER 8. ์๊ฒฉ ์ฆ๋ช
๊ด๋ฆฌ, CHAPTER 9. ์ฌ์ฉ์ ๊ด๋ฆฌ๋ฅผ ์ด์ด์ ๋ค๋ฃฐ ์์ ์ด๋ค.
โฌ๏ธ ๋ค์ ๋ด์ฉ์ ์๋ ๊ธ์ ์ฐธ๊ณ
(ํฌ์คํ ์์ )