๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ› Others.../- infra [linux, aws, docker, k8s]

[AWS-CodeDeploy] AWS์˜ CD ๋„๊ตฌ, CodeDeploy์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

by Wonit 2020. 12. 6.

์˜ค๋Š˜์€ AWS์˜ CodeDeploy์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

 

CodeDeploy๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„ , CD๊ฐ€ ๋ญ”์ง€ ์•Œ์•„์•ผํ•œ๋‹ค.

 

๋ฌผ๋ก  ํ•ด๋‹น ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰์œผ๋กœ ๋“ค์–ด์˜จ ์‚ฌ๋žŒ๋“ค์€ CD๊ฐ€ ๋ฌด์Šจ ๊ฐœ๋…์ธ์ง€ ์•Œ๊ณ  ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ๋ž˜๋„ ๊ทธ๋ ‡์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž ๊น ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ ค ํ•œ๋‹ค.

 

CI CD๋ž€?

CI CD ๋ผ๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•œ ์ฝ”๋“œ์™€ ํ’ˆ์งˆ์„ ์œ„ํ•œ ํ…Œ์ŠคํŒ… ๋ฐ ๋ฐฐํฌ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐœ๋…์„ ๋œปํ•œ๋‹ค.


CI CD๋ฅผ ์ž๋™ํ™”์™€๋„ ์—ฐ์ด ๊นŠ์€๋ฐ, CI CD ์ž์ฒด๋กœ๋งŒ ๋ณด๋ฉด ์ง€์†์ ์ธ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ง€์†์„ฑ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค.

 

์›๋ž˜๋Š” ํ•˜๋‚˜์˜ ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐํฌ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ๊ณผ์ •์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ์ด์•ผ๊ธฐ ํ•œ๋‹ค.

 

์ข€ ๋” ์„ธ๋ถ€์ ์œผ๋กœ ์ด์•ผ๊ธฐ ํ•ด๋ณด์ž.

Continuous Integration CI

์šฐ์„  CI๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ์„ ์ƒ๊ฐํ•ด๋ณด์ž.


์˜ˆ์ „์— ์•„๋งˆ์กด์ด ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ, ๋นŒ๋“œ๋ฅผ ํ•œ ๋ฒˆ ํ•˜๋ฉด ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ์‹œ๊ฐ„์ด 18์‹œ๊ฐ„์ด๋‚˜ ๊ฑธ๋ ธ๋‹ค๊ณ  ํ•œ๋‹ค.


๊ทธ๋ž˜์„œ ์ด๊ฑธ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ•˜๋Š”๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๋„๋ฅผ ํ•˜๋ฉฐ ํ•จ๊ป˜ ์‹œ๋„ํ•œ ๊ฒƒ์ด CI ๊ฐœ๋…์ด๋ผ๊ณ  ํ•œ๋‹ค.


์œ„์—์„œ ๋ง ํ–ˆ๋“ฏ, ๋นŒ๋“œ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ์— ๋‚˜๋ˆ ์„œ ํ•œ๋‹ค๋Š” ์ปจ์…‰์œผ๋กœ ํ•œ ๊ธฐ๋Šฅ ํ˜น์€ ํŠน์ง•์ด ๊ฐœ๋ฐœ๋˜๋ฉด ๋ฐ”๋กœ ๋ฐ”๋กœ ํ†ตํ•ฉ์„ ์ง€์†์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ†ตํ•ฉ์ด ๋˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•จ๊ป˜ ์ˆ˜ํ–‰ํ•ด์„œ ์ฝ”๋“œ์˜ ์ „์ฒด์ ์ธ ํ’ˆ์ผ์„ ์œ ์ง€ ํ˜น์€ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

Continuous Deploy CD

์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํ•ญ์ƒ ์‹ ๋ขฐ๋  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์—์„œ ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ๋„๋ก ์ง€์†์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

 

์•ž์„  CI๋กœ ํ…Œ์ŠคํŠธ์™€ ๋นŒ๋“œ์— ์˜ํ•ด์„œ ํ’ˆ์งˆ์ด ๋ณด์ฆ๋˜์—ˆ๊ณ , ๋ณด์ฆ๋œ ์ œํ’ˆ์„ ์‹ค์ œ ์„œ๋น„์Šค๋กœ Continuousํ•˜๊ฒŒ ๋ฐฐํฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค.

 

CI ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด์„œ ์ง€์†์ ์œผ๋กœ ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ ํ•˜๊ณ , ํ†ต๊ณผํ•œ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌ์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ CI์˜ ์—ฐ์žฅ์„ ์ƒ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

์ด ๋‘˜์„ ์ •๋ฆฌํ•˜์ž๋ฉด

CI = ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
CD = ๋ฐฐํฌ ์ž๋™ํ™”

 

์ฏค์œผ๋กœ ์ดํ•ดํ•˜๋ฉด ๋ ๊ฒƒ ๊ฐ™๋‹ค.

 

์ด์ œ ์˜ค๋Š˜์˜ ํ•ต์‹ฌ์ธ CodeDeploy์— ๋Œ€ํ•ด์„œ ์•Œ์•„ ๋ณด์ž.

CodeDeploy

Amazon EC2, AWS Fargate, AWS Lambda์™€ ๊ฐ™์€ ์„œ๋น„์Šค์—์„œ CD๋ฅผ ์ œ๊ณตํ•˜๋Š” AWS ์„œ๋น„์Šค์ด๋‹ค.

 

์•—? ์šฐ๋ฆฐ ์œ„์—์„œ CI์™€ CD๋ฅผ ํ•จ๊ป˜ ๋ดค๋Š”๋ฐ, ์–˜๋Š” CD๋งŒ ์ œ๊ณตํ•œ๋‹ค๊ณ ?

 

๋งž๋‹ค.

 

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” CI ๋„๊ตฌ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ํˆด๋“ค๊ณผ ํ•จ๊ป˜ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ๋งค๋‰ด์–ผ์ด AWS ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ๋‚˜์™€์žˆ๋‹ค.

๊ฒฐ๊ตญ CodeDeploy๋„ ๋ฐฐํฌํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต ์ž‘์—…๊ณผ ์ธ๊ฐ„์˜ ์‹ค์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์žฅ์ 

CodeDeploy ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ˜น์€ CD ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ช‡ ๊ฐ€์ง€์˜ ์žฅ์ ์ด ์žˆ๋Š”๋ฐ, ์•„๋ž˜์— ๋‚˜์˜จ ๊ฒƒ๋“ค์€ ๊ณต์‹์ ์œผ๋กœ AWS์—์„œ ๋ฐ€๊ณ  ์žˆ๋Š” ์žฅ์ ์ด๋‹ค.

 

  1. ๋ฐฐํฌ ์ž๋™ํ™”
  2. ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„ ์ตœ์†Œํ™”
  3. ์ค‘์•™ ์ง‘์ค‘์‹ ์ œ์–ด
  4. ์‰ฌ์šด ๋„์ž…

๋ฐฐํฌ ์ž๋™ํ™”

CodeDeploy๋Š” CD ๋„๊ตฌ์ด๋ฉฐ CD๋Š” ์œ„์—์„œ ๋ง ํ–ˆ๋“ฏ ๋ฐฐํฌ ์ž๋™ํ™”๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค๊ณ  ํ–ˆ๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ Travis๋‚˜ Jenkins, AWS CodePipeline ํ˜น์€ Github Action์„ ์ด์šฉํ•ด์„œ CI ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ๋‹ค๋ฉด, CI์—์„œ ๋„˜์–ด์˜จ ์ฝ”๋“œ๋Š” ํ’ˆ์งˆ ๊ฒ€์ฆ ๋๋‚œ ์ฝ”๋“œ๋งŒ ๋„˜์–ด์˜ฌ ๊ฒƒ์ด๋‹ค.


๊ทธ๋Ÿผ ๋ฐฐํฌ๋ฅผ ์™„์ „ ์ž๋™ํ™” ํ•ด์„œ ํ•œ ๋ฒˆ ์„ฑ๊ณตํ•œ๋‹ค๋ฉด ๊ทธ ๋‹ค์Œ์˜ ์„ฑ๊ณต์€ ๋ณด์žฅํ•œ๋‹ค๋Š” ๋ง์ด๊ณ  ์ด๋Š” ๊ณง ์žฅ์ ์ด ๋œ๋‹ค.

๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„ ์ตœ์†Œํ™”

AWS ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ์‹œ๊ฐ„๋™์•ˆ App์˜ ๊ฐ€์šฉ์„ฑ์„ ์ตœ๋Œ€ํ™” ํ•˜๋„๋ก ์ง€์›ํ•˜๊ณ  App ์ƒํƒœ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐฐํฌ์˜ ๋ฐฉ๋ฒ•์ค‘์—๋Š” Rolling, Blue-Green, Canary, In-Place Upate ์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜๋Š”๋ฐ, AWS CodeDeploy๋ฅผ ์ด์šฉํ•œ๋‹ค

 

๋ฉด ์ด๋Ÿฐ ๋ฐฐํฌ ๊ธฐ๋ฒ•๋“ค์„ ๋” ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์ค‘์•™ ์ง‘์ค‘์‹ ์ œ์–ด

AWS Management Console์ด๋‚˜ AWS CLI๋กœ ์‰ฝ๊ฒŒ ๋ฐฐํฌ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ๋ฆฌ๋ˆ…์Šค์— ์„ค์น˜ํ•œ๋‹ค๋ฉด /var/aws/codedeploy/ ์— ๋กœ๊ทธ๊ฐ€ ์ €์žฅ๋˜์–ด์„œ error tracing์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Ÿฐ ์žฅ์ ๋“ค ๋•๋ถ„์— ์ œ์–ด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง•์ด๋‹ค.

์‰ฌ์šด ๋„์ž…

์‚ฌ์‹ค ์ด๊ฑด ๋ฐฐ์šฐ๋Š” ์ž…์žฅ์—์„œ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค..

 

CodeDeploy๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์€ CI CD ๊ฐœ๋…์ด ํ™•๋ฆฝ๋˜์ง€ ์•Š์•˜๋˜ ๋•Œ๋ผ, ์–ด๋ ค์› ๋‹ค. ํ•˜์ง€๋งŒ AWS ์—์„œ ๋ง ํ•˜๋Š”๊ฒŒ CodeDeploy๋Š” ํ”Œ๋žซํผ์ด๋‚˜ ์–ธ์–ด์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ๋‹ค ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•ด์„œ ์‰ฝ๊ณ  ๋™์ผํ•œ ๋ฐฐํฌํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ ํ•œ๋‹ค.

 

๋Œ“๊ธ€