๋ธ๋์น ๋จ์ ๋ฐฐํฌ๊ฐ ์
๋ฌด๋ฅผ ๋งค๋๋ฝ๊ฒ ํ ์ ์์๊น?
์๋
ํ์ธ์, ์์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์์์ค์
๋๋ค.
๊ฐ๋ฐํ์์ ๋ธ๋์น ์ ๋ต๊ณผ QA ๋ฐฉ์์ ๊ฐ์ ํ๋ฉด์ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ ์์คํ
์ ๋์
ํ์ต๋๋ค.
๊ธฐ์กด์ ๊ฒช๊ณ ์๋ ๋ถํธํจ์ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ๊ฐ์ ํ์๋์ง ์๊ฐํ๊ณ ์ ๊ธ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
์ด๊ธฐ ๋ธ๋์น ์ ๋ต์ ๋ฌธ์ ์
๊ฐ๋ฐํ์ ๊ท๋ชจ๊ฐ ์์ ๋๋
- develop ๋ธ๋์น์ ๊ฐ๋ฐ๋ ๋ด์ฉ๋ค์ mergeํ๊ณ
- merge๋ ๋ด์ฉ๋ง๋ค QA๋ฅผ ๋ฐ์
- ๋ชจ๋ QA๊ฐ ๋๋๋ฉด develop์ master์ mergeํ์ฌ ๋ฐฐํฌํ๋ ๋ฐฉ์์ด์์ต๋๋ค.
→ ์ฆ, ๋ธ๋์น ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค.
์์ ๊ฐ์ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ด ์์ต๋๋ค.
- develop์ merge๋ ์ฌ๋ฌ ๊ฐ๋ฐ ์คํ ๋ฆฌ๋ค ์ค ํ๋๋ผ๋ ๋ฌธ์ ๊ฐ ์์ด QA๊ฐ ๋ฆ์ด์ง๊ฒ ๋๋ฉด, ๋ค๋ฅธ ์คํ ๋ฆฌ๋ค๋ ๋ชจ๋ ์ฐ๊ธฐ๋ฉ๋๋ค.
- ๋ฐฐํฌ๋ฅผ ๋๊ฐ ์ ์๋ ์คํ ๋ฆฌ์ ๊ฒฝ์ฐ revert๋ฅผ ํด์ผํ๋ฉฐ, ์ด์ ๋ฐ๋ฅธ ์ถฉ๋ ๋ํ ๊ฐ์ํ๊ณ ํด๊ฒฐํด์ผ ํ์ฃ .
๊ฐ๋ฐํ์ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์ด๋ฌํ ์ผ์ด ๋์ฑ ๋น๋ฒํด ์ ธ์, ์ ํฌ๋ ์๋ก์ด ๋ธ๋์น ์ ๋ต์ ์ธ์ฐ๊ฒ ๋์์ต๋๋ค.
๋ณ๊ฒฝ๋ ๋ธ๋์น ์ ๋ต์ ๋ฌธ์ ์
์คํฌ๋ผ, ์คํ๋ฆฐํธ ์
๋ฌด ์ฒ๋ฆฌ ๋ฐฉ์์ ๋์
ํ ์ดํ, ๊ฐ๋ฐํ์ ์คํ ๋ฆฌ ํด๊ฒฐ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ด ์ค QA๋ฅผ ์งํํ๊ธฐ ์ํด์ ๊ธฐ์กด์ develop ๋ธ๋์น์์ ์๋ฒ๋ฅผ ์์ฑํ์์ง๋ง, QA ์๋ฒ ๋ธ๋์น๋ก ์์
ํ ๋ธ๋์น๋ฅผ ๋ฐ๋ก Mergeํ์ฌ ์๋ฒ๋ก ๋ฐฐํฌํ๊ณ QA๊ฐ ๋ง๋ฌด๋ฆฌ๊ฐ ๋๋ฉด ๋ค์ develop ๋ธ๋์น๋ก Mergeํ์ฌ ๋ฐฐํฌ๋๊ธฐ ์ํ๋ก ๋์ด๊ฐ๋๋ก ๋ณ๊ฒฝํ๊ฒ ๋์์ต๋๋ค.
→ ์ฆ, ๋ณ๊ฒฝ๋ ๋ธ๋์น ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค.
- ๊ธฐ์กด ๋ธ๋์น ์ ๋ต
- develop์ base๋ก ํ qa ๋ธ๋์น๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์์ฑํด๋
- develop์ base๋ก feature/a,b,c ๋ธ๋์น ์์ฑ
- ์ฝ๋ ์์ฑ ํ feature → develop PR ์์ฑ + ์ฝ๋๋ฆฌ๋ทฐ
- qa ← feature/a,b,c merge ํ qa ์๋ฒ ๋ฐฐํฌ
- qa ์๋ฒ์์ qa ์งํ
- (qa ์ข
๋ฃ ํ) feature/a,b,c → develop PR merge
- develop → master merge
- master ๋ฐฐํฌ
๋ณ๊ฒฝ๋ ์ ๋ต๋๋ก ์
๋ฌด๋ฅผ ์งํํด ์์ผ๋, ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ์์
์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค.
< ๊ฐ๋ฐํ์์ ์๋ก qa ์ฌ์ฉ ํํฉ์ ๊ณต์ ํ๋ ๋ชจ์ต.. ์ฝ.. >
์๋ก์ด ๋ธ๋์น ์ ๋ต
๋ฐ๋ผ์, ์ ํฌ์ work flow์ ๋ง๋ ๋ธ๋์น ์ ๋ต์ ๊ฐ์ ์ด ํ์ํ๊ณ , QA๋ฅผ ์คํ ๋ฆฌ ๋จ์์์ ๋๋ง์น๊ณ develop ๋ธ๋์น๋ก ํฉ์ณ์ง ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณ ๋ฏผํ์ฌ ์๋์ ๊ฐ์ด ๋ธ๋์น ์ ๋ต์ ๋ณ๊ฒฝํด๋ณด์์ต๋๋ค.
- ๋ณ๊ฒฝ๋ ๋ธ๋์น ์ ๋ต
- develop์ base๋ก ํ story ๋ธ๋์น๋ฅผ ์์ฑ
- story ๋ธ๋์น๋ฅผ base๋ก feature ๋ธ๋์น ์์ฑ
- ์ฝ๋ ์์ฑ ํ feature/a,b,c → story PR ์์ฑ + ์ฝ๋๋ฆฌ๋ทฐ
- story ← feature/a,b,c merge ํ story ์๋ฒ ๋ฐฐํฌ
- story ์๋ฒ์์ qa ์งํ
- (qa ์ข
๋ฃ ํ) story → develop PR ์์ฑ & merge
- develop → master merge
- master ๋ฐฐํฌ
๋ฐ๋ ๋ธ๋์น ์ ๋ต์์ ๊ธฐ์กด ๋ธ๋์น ์ ๋ต์ ๋ฌธ์ ์ ๋ค์ด ํด๊ฒฐ๋ ์ ์๋์ง ์ดํด๋ณด๋ฉด,
๋ธ๋์น ์ ๋ต์ ์ ํฌ์ ์
๋ฌด flow์ ๋ง๊ฒ ๋ณ๊ฒฝ์ ํ์ง๋ง, ์ด์ ์์ ํด๊ฒฐํด์ผ ํ ๊ณผ์ ๊ฐ ํ๋ ๋ ๋จ์์์์ต๋๋ค.
๋ธ๋์น ๋จ์ ๋ฐฐํฌ
๋ฐ๋ git ๋ธ๋์น ์ ๋ต์ ๊ฒฐ๊ตญ story ๋ธ๋์น๋ณ๋ก ์๋ฒ๊ฐ ์์ฑ์ด ๋์ด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ story ๋ธ๋์น ์๋ฒ์์ QA๊ฐ ๋๋๋ฉด, develop์ผ๋ก story ๋ธ๋์น๋ฅผ Mergeํด์ผํฉ๋๋ค.
์ ํฌ๋ Jenkins์ CI/CD ํ์ดํ๋ผ์ธ, AWS ๋ฆฌ์์ค๋ฅผ ํตํด ์๋ฒ์ ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค. ๋ฐ๋ผ์ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ๋ฅผ ์ํด ์ธํ
ํด์ฃผ์ด์ผ ํ ์์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Jenkins
- ์ ํด์ง ๋ธ๋์น ๋ช
์นญ(develop, master, story, ...) ์ธ ๋ค๋ฅธ ๋ธ๋์น๋ค์ followํ์ง ์๋๋ก ๋ณ๊ฒฝ
- story/ ํ์์ ๋ธ๋์น์ธ ๊ฒฝ์ฐ aws ๋ฆฌ์์ค๋ฅผ ์๋ก ๊ตฌ์ฑํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํ๋๋ก ๋ณ๊ฒฝ
- AWS
- story/ ํ์ ๋ธ๋์น์ ๊ฒฝ์ฐ ๋ธ๋์น ์ด๋ฆ์ ์กฐํฉํ์ฌ AWS ๋ฆฌ์์ค๋ค์ ์๋ก ์์ฑํ์ฌ ๋ฐฐํฌํ๋ ์คํฌ๋ฆฝํธ ์์ฑ
์ฐ์ Jenkins์์๋ multi-branch pipeline์ ์ฌ์ฉํ์ฌ develop, master, story ๋ธ๋์น ์ด์ธ์ ๋ธ๋์น๋ ๋น๋ ๋์์์ ์ ์ธํ๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ story ๋ธ๋์น์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์๋ ๊ฐ ์คํ ๋ฆฌ ๋ธ๋์น๋ณ๋ก ๋
์์ ์ธ AWS ๋ฆฌ์์ค ๊ทธ๋ฃน์ ์์ฑํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํ๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
๊ธฐ์กด QA์ฉ ์๋ฒ๋ AWS์์ ๋ค์๊ณผ ๊ฐ์ ๋ฆฌ์์ค๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๊ฐ ๋ฆฌ์์ค ๋ณ๋ก ์๋์ ๊ฐ์ ์ญํ ์ ๋ด๋นํ๊ณ ์์ต๋๋ค.
- CodeDeploy
- DeploymentGroup
- ์ ํด์ง ๋ฐฐํฌ ์ ๋ต์ ๋ง์ถฐ ๊ธฐ์กด ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ ์ด๋ฏธ์ง๋ก ๊ต์ฒดํ๋ ์ด๋ฒคํธ๋ฅผ ECS์ ์ ๋ฌํ๊ณ , ํธ๋ํฝ์ ์ฌ๋ฐฐ์น ์์ผ์ฃผ๋ ์์
๋จ์
- Elastic Container Service
- Service
- ์ปจํ
์ด๋ ๊ด๋ฆฌ ์ ๋ต์ ์ํํ๋ ๋จ์ (Auto Scaling, ๋ฐฐํฌ, ์์คํ
๋ก๊น
)
- TaskDefinition
- ์ปจํ
์ด๋ ์ด๋ฏธ์ง ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ๋จ์
- Elastic Load Balancing
- LoadBalancer
- ์ธ๋ถ(ํด๋ผ์ด์ธํธ)๋ก๋ถํฐ ๋ค์ด์จ ํธ๋ํฝ์ ์ ํด์ง ๊ท์น์ ๋ง๊ฒ ๋ด๋ถ ์ธ์คํด์ค๋ก ๋ถ์ฐ
- TargetGroup
- ๋ก๋๋ฐธ๋ฐ์์์ ํต๊ณผํ ์์ฒญ์ ์ ํด์ง target ip๋ก routing
- Route 53
- RecordSet
- DNS ๋ฐ ๋๋ฉ์ธ ์ด๋ฆ ๊ด๋ฆฌ ์์คํ
๊ฐ ๋ฆฌ์์ค๋ณ๋ก ์๋์ ๊ฐ์ ์ด๋ฆ ๊ท์น์ ํตํด ๋ฆฌ์์ค๋ค์ ์์ฑํ์ฌ ๋ธ๋์น ๋จ์๋ก ๋ฌถ์ ๊ด๋ฆฌ๋ฅผ ํ๋๋ก ๊ตฌํํ์์ต๋๋ค.
< story/ ํ์ ๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Host, TargetGroup์ด ์์ฑ๋๋ค. >
๋
๋ฆฝ๋ ์๋น์ค ๊ฐ์ ์ฐ๊ฒฐ
FE/BE๊ฐ ๋ถ๋ฆฌ๋ ์๋น์ค์ ๊ฒฝ์ฐ ์๋ก ๋คํธ์ํฌ ์์ฒญ๊ณผ ์๋ต์ ์ํ ์ฐ๊ฒฐ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
๋ธ๋์น ๋จ์๋ก ์๋ฒ๊ฐ ์์ฑ๋๊ณ , AWS์ ๋ฆฌ์์ค๋ค์ด ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๊ฐ ์๋ฒ๋ค์ ๋๋ฉ์ธ ๋ํ ๋ธ๋์น ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ๋ฉ์ธํ์ด์ง ๊ฐํธ ์คํ ๋ฆฌ ์งํ ์์
์ ์ํ ๋ธ๋์น ์ด๋ฆ์ feature/improve-main-page๋ก ์์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด, FE/BE ์๋ฒ์ ๋๋ฉ์ธ์ ๋ค์๊ณผ ๊ฐ์ด ์ธํ
์ด ๋ฉ๋๋ค.
ํ๋ก ํธ์๋, ๋ฐฑ์๋ ํ๋ก์ ํธ์ ๊ฐ ๋ธ๋์น ์ด๋ฆ์ ํต์ผํ๊ณ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ๋ฅผ ์งํํ๊ฒ ๋๋ฉด, ์ ํจ์ค์์ ํ๋ก ํธ์๋์ ํ๊ฒฝ๋ณ์์ ๋ฐฑ์๋ ๋๋ฉ์ธ์ ๊ดํ ์ ๋ณด๋ฅผ ๋ธ๋์น ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ์์ฒญ ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.
๋ง์น๋ฉฐ
์ด๋ฒ ๋ธ๋์น ์ ๋ต ๋ณ๊ฒฝ๊ณผ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ๋ฅผ ๋์
ํ๋ฉด์ ๊ฐ๋ฐํ์ ์
๋ฌด ํ๋ก์ธ์ค๊ฐ ๋ ๋งค๋๋ฌ์์ก์ต๋๋ค. ์ฐ์ ์๋ก qa ๋ธ๋์น ํน์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ๊ณต์ ํ ํ์๊ฐ ์์ด์ ธ์, ๋ถํ์ํ ์์
์ ์ค์ผ ์ ์์์ต๋๋ค.
๋ํ QA ๋ด๋น์๋ถ๋ค๊ป์๋ ๋ ํธํด์ง์
จ์ต๋๋ค. ์์ ์ด ๋ด๋นํ QA๊ฐ ๊ณ์ ์ฌ๋ผ๊ฐ๋ค๊ฐ ์ฌ๋ผ์ง๋ ์ผ๋ค์ด ๋ฐ์ํ์ง ์๊ธฐ์, ๊ธฐ๊ฐ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ QA๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด์ฃ .
์ด๋ฒ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ ์
๋ฌด๋ฅผ ์ํํ๋ฉด์ AWS ๋ฆฌ์์ค๋ค์ ์ญํ ๋ฐ ๊ตฌ์ฑ ์์, ๋์ ์๋ฆฌ์ ๋ํด ํ์
ํ ์ ์์๊ณ , Jenkins ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌ์ ๋ํด ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ๋ํ ์
๋ฌด์ ๋ง์ ๋์์ด ๋๋ ํ์ต์ ๊ธฐํ๋ฅผ ์ป์ผ๋ฉฐ ์ํํ ์ ์๊ฒ ๋์ด ๋์ฑ ์ ์ตํ ๊ฒฝํ์ด์์ต๋๋ค.
์ ์ ์ ์ฌํ ๊ณ ๋ฏผ์ ํ์๋ ๋ถ๋ค๊ป ๋์์ด ๋๊ธธ ๋ฐ๋ผ๋ฉฐ, ๋ง์น๊ฒ ์ต๋๋ค :)
์๋ ํ์ธ์, ์์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์์์ค์ ๋๋ค.
๊ฐ๋ฐํ์์ ๋ธ๋์น ์ ๋ต๊ณผ QA ๋ฐฉ์์ ๊ฐ์ ํ๋ฉด์ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ ์์คํ ์ ๋์ ํ์ต๋๋ค.
๊ธฐ์กด์ ๊ฒช๊ณ ์๋ ๋ถํธํจ์ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ๊ฐ์ ํ์๋์ง ์๊ฐํ๊ณ ์ ๊ธ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
์ด๊ธฐ ๋ธ๋์น ์ ๋ต์ ๋ฌธ์ ์
๊ฐ๋ฐํ์ ๊ท๋ชจ๊ฐ ์์ ๋๋
→ ์ฆ, ๋ธ๋์น ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค.
์์ ๊ฐ์ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ด ์์ต๋๋ค.
๊ฐ๋ฐํ์ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์ด๋ฌํ ์ผ์ด ๋์ฑ ๋น๋ฒํด ์ ธ์, ์ ํฌ๋ ์๋ก์ด ๋ธ๋์น ์ ๋ต์ ์ธ์ฐ๊ฒ ๋์์ต๋๋ค.
๋ณ๊ฒฝ๋ ๋ธ๋์น ์ ๋ต์ ๋ฌธ์ ์
์คํฌ๋ผ, ์คํ๋ฆฐํธ ์ ๋ฌด ์ฒ๋ฆฌ ๋ฐฉ์์ ๋์ ํ ์ดํ, ๊ฐ๋ฐํ์ ์คํ ๋ฆฌ ํด๊ฒฐ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ด ์ค QA๋ฅผ ์งํํ๊ธฐ ์ํด์ ๊ธฐ์กด์ develop ๋ธ๋์น์์ ์๋ฒ๋ฅผ ์์ฑํ์์ง๋ง, QA ์๋ฒ ๋ธ๋์น๋ก ์์ ํ ๋ธ๋์น๋ฅผ ๋ฐ๋ก Mergeํ์ฌ ์๋ฒ๋ก ๋ฐฐํฌํ๊ณ QA๊ฐ ๋ง๋ฌด๋ฆฌ๊ฐ ๋๋ฉด ๋ค์ develop ๋ธ๋์น๋ก Mergeํ์ฌ ๋ฐฐํฌ๋๊ธฐ ์ํ๋ก ๋์ด๊ฐ๋๋ก ๋ณ๊ฒฝํ๊ฒ ๋์์ต๋๋ค.
→ ์ฆ, ๋ณ๊ฒฝ๋ ๋ธ๋์น ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค.
๋ณ๊ฒฝ๋ ์ ๋ต๋๋ก ์ ๋ฌด๋ฅผ ์งํํด ์์ผ๋, ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค.
qa ๋ธ๋์น์ feature ๋ธ๋์น๋ค์ ๋ณ๊ฒฝ ์ฌํญ๋ค์ด ํจ๊ป ๋ฐ์๋์ด์์
์ ๊ธฐ์ ์ผ๋ก qa ๋ธ๋์น๋ฅผ ์ ๋ฐ์ดํธ ํด์ฃผ์ด์ผ ํจ (์ญ์ → ์ฌ์์ฑ)
< ๊ฐ๋ฐํ์์ ์๋ก qa ์ฌ์ฉ ํํฉ์ ๊ณต์ ํ๋ ๋ชจ์ต.. ์ฝ.. >
์๋ก์ด ๋ธ๋์น ์ ๋ต
๋ฐ๋ผ์, ์ ํฌ์ work flow์ ๋ง๋ ๋ธ๋์น ์ ๋ต์ ๊ฐ์ ์ด ํ์ํ๊ณ , QA๋ฅผ ์คํ ๋ฆฌ ๋จ์์์ ๋๋ง์น๊ณ develop ๋ธ๋์น๋ก ํฉ์ณ์ง ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณ ๋ฏผํ์ฌ ์๋์ ๊ฐ์ด ๋ธ๋์น ์ ๋ต์ ๋ณ๊ฒฝํด๋ณด์์ต๋๋ค.
๋ฐ๋ ๋ธ๋์น ์ ๋ต์์ ๊ธฐ์กด ๋ธ๋์น ์ ๋ต์ ๋ฌธ์ ์ ๋ค์ด ํด๊ฒฐ๋ ์ ์๋์ง ์ดํด๋ณด๋ฉด,
qa ๋ธ๋์น์ feature ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ๋ค์ด ํจ๊ป ๋ฐ์๋์ด์์
๊ฐ์ ํ์ผ์ ๋ํ ์์ ์ด ์๋ค๋ฉด ์ถฉ๋์ด ์๊ณ , ํด๊ฒฐํด๋ develop์ผ๋ก mergeํ ๋ ๋ ํด์ผํจ
→ develop์ผ๋ก Mergeํ ๋์ ์ถฉ๋๋ง ํด๊ฒฐํ๋ฉด ๋จ
QA๊ฐ ๊ธธ์ด์ง๋ฉด, ์๋ก ๊ธฐ๋ํ๋ base(develop)์ ๋ฒ์ ์ด ๋ค๋ฅผ ์ ์๋๋ฐ ์ด๋ฅผ ๋ฐ์ํ ์ ์์
→ story ๋ธ๋์น๋ฅผ ์์ฑํ๋ ์์ ์ develop ๋ฒ์ ์ ๋ ์์ ์ผ๋ก ๊ฐ์ง ์ ์์
์ ๊ธฐ์ ์ผ๋ก qa ๋ธ๋์น๋ฅผ ์ ๋ฐ์ดํธ ํด์ฃผ์ด์ผ ํจ (์ญ์ → ์ฌ์์ฑ)
์ด์ QA ๋ธ๋์น์ ์ฌ๋ ธ๋ ๋ด์ฉ๋ค์ ์๋ก ์์ฑ๋๋ ๋ธ๋์น์ ๋ ๋ค์ ์ฌ๋ ค์ผ ํจ
→ ๋ด๋น์ ๋ณธ์ธ์ story ๋ธ๋์น์์ QA๊ฐ ์งํ๋๊ธฐ ๋๋ฌธ์ ๋์ด์ ๋ฐ์ํ์ง ์์
๋ธ๋์น ์ ๋ต์ ์ ํฌ์ ์ ๋ฌด flow์ ๋ง๊ฒ ๋ณ๊ฒฝ์ ํ์ง๋ง, ์ด์ ์์ ํด๊ฒฐํด์ผ ํ ๊ณผ์ ๊ฐ ํ๋ ๋ ๋จ์์์์ต๋๋ค.
๋ธ๋์น ๋จ์ ๋ฐฐํฌ
๋ฐ๋ git ๋ธ๋์น ์ ๋ต์ ๊ฒฐ๊ตญ story ๋ธ๋์น๋ณ๋ก ์๋ฒ๊ฐ ์์ฑ์ด ๋์ด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ story ๋ธ๋์น ์๋ฒ์์ QA๊ฐ ๋๋๋ฉด, develop์ผ๋ก story ๋ธ๋์น๋ฅผ Mergeํด์ผํฉ๋๋ค.
์ ํฌ๋ Jenkins์ CI/CD ํ์ดํ๋ผ์ธ, AWS ๋ฆฌ์์ค๋ฅผ ํตํด ์๋ฒ์ ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค. ๋ฐ๋ผ์ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ๋ฅผ ์ํด ์ธํ ํด์ฃผ์ด์ผ ํ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐ์ Jenkins์์๋ multi-branch pipeline์ ์ฌ์ฉํ์ฌ develop, master, story ๋ธ๋์น ์ด์ธ์ ๋ธ๋์น๋ ๋น๋ ๋์์์ ์ ์ธํ๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ story ๋ธ๋์น์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์๋ ๊ฐ ์คํ ๋ฆฌ ๋ธ๋์น๋ณ๋ก ๋ ์์ ์ธ AWS ๋ฆฌ์์ค ๊ทธ๋ฃน์ ์์ฑํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํ๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
๊ธฐ์กด QA์ฉ ์๋ฒ๋ AWS์์ ๋ค์๊ณผ ๊ฐ์ ๋ฆฌ์์ค๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๊ฐ ๋ฆฌ์์ค ๋ณ๋ก ์๋์ ๊ฐ์ ์ญํ ์ ๋ด๋นํ๊ณ ์์ต๋๋ค.
๊ฐ ๋ฆฌ์์ค๋ณ๋ก ์๋์ ๊ฐ์ ์ด๋ฆ ๊ท์น์ ํตํด ๋ฆฌ์์ค๋ค์ ์์ฑํ์ฌ ๋ธ๋์น ๋จ์๋ก ๋ฌถ์ ๊ด๋ฆฌ๋ฅผ ํ๋๋ก ๊ตฌํํ์์ต๋๋ค.
LoadBalancer(HostingRule), TargetGroup
< story/ ํ์ ๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Host, TargetGroup์ด ์์ฑ๋๋ค. >
๋ ๋ฆฝ๋ ์๋น์ค ๊ฐ์ ์ฐ๊ฒฐ
FE/BE๊ฐ ๋ถ๋ฆฌ๋ ์๋น์ค์ ๊ฒฝ์ฐ ์๋ก ๋คํธ์ํฌ ์์ฒญ๊ณผ ์๋ต์ ์ํ ์ฐ๊ฒฐ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
๋ธ๋์น ๋จ์๋ก ์๋ฒ๊ฐ ์์ฑ๋๊ณ , AWS์ ๋ฆฌ์์ค๋ค์ด ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๊ฐ ์๋ฒ๋ค์ ๋๋ฉ์ธ ๋ํ ๋ธ๋์น ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ๋ฉ์ธํ์ด์ง ๊ฐํธ ์คํ ๋ฆฌ ์งํ ์์ ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ feature/improve-main-page๋ก ์์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด, FE/BE ์๋ฒ์ ๋๋ฉ์ธ์ ๋ค์๊ณผ ๊ฐ์ด ์ธํ ์ด ๋ฉ๋๋ค.
ํ๋ก ํธ์๋, ๋ฐฑ์๋ ํ๋ก์ ํธ์ ๊ฐ ๋ธ๋์น ์ด๋ฆ์ ํต์ผํ๊ณ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ๋ฅผ ์งํํ๊ฒ ๋๋ฉด, ์ ํจ์ค์์ ํ๋ก ํธ์๋์ ํ๊ฒฝ๋ณ์์ ๋ฐฑ์๋ ๋๋ฉ์ธ์ ๊ดํ ์ ๋ณด๋ฅผ ๋ธ๋์น ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ์์ฒญ ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.
๋ง์น๋ฉฐ
์ด๋ฒ ๋ธ๋์น ์ ๋ต ๋ณ๊ฒฝ๊ณผ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ๋ฅผ ๋์ ํ๋ฉด์ ๊ฐ๋ฐํ์ ์ ๋ฌด ํ๋ก์ธ์ค๊ฐ ๋ ๋งค๋๋ฌ์์ก์ต๋๋ค. ์ฐ์ ์๋ก qa ๋ธ๋์น ํน์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ๊ณต์ ํ ํ์๊ฐ ์์ด์ ธ์, ๋ถํ์ํ ์์ ์ ์ค์ผ ์ ์์์ต๋๋ค.
๋ํ QA ๋ด๋น์๋ถ๋ค๊ป์๋ ๋ ํธํด์ง์ จ์ต๋๋ค. ์์ ์ด ๋ด๋นํ QA๊ฐ ๊ณ์ ์ฌ๋ผ๊ฐ๋ค๊ฐ ์ฌ๋ผ์ง๋ ์ผ๋ค์ด ๋ฐ์ํ์ง ์๊ธฐ์, ๊ธฐ๊ฐ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ QA๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด์ฃ .
์ด๋ฒ ๋ธ๋์น ๋จ์ ๋ฐฐํฌ ์ ๋ฌด๋ฅผ ์ํํ๋ฉด์ AWS ๋ฆฌ์์ค๋ค์ ์ญํ ๋ฐ ๊ตฌ์ฑ ์์, ๋์ ์๋ฆฌ์ ๋ํด ํ์ ํ ์ ์์๊ณ , Jenkins ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌ์ ๋ํด ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ๋ํ ์ ๋ฌด์ ๋ง์ ๋์์ด ๋๋ ํ์ต์ ๊ธฐํ๋ฅผ ์ป์ผ๋ฉฐ ์ํํ ์ ์๊ฒ ๋์ด ๋์ฑ ์ ์ตํ ๊ฒฝํ์ด์์ต๋๋ค.
์ ์ ์ ์ฌํ ๊ณ ๋ฏผ์ ํ์๋ ๋ถ๋ค๊ป ๋์์ด ๋๊ธธ ๋ฐ๋ผ๋ฉฐ, ๋ง์น๊ฒ ์ต๋๋ค :)