YesCoding

์„œ๋น„์Šค ๋น„์šฉ ์ ˆ๊ฐ์„ ์œ„ํ•œ Dable์˜ ์ž์ฒด AWS Elastic Beanstalk ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค

์ด ๊ธ€์€ ์ œ๊ฐ€ ํšŒ์‚ฌ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ…ํ•œ ๊ธ€๋กœ ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ๋กœ ์˜ฎ๊ฒจ์˜จ ๊ธ€์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” Dable ๊ด‘๊ณ ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์ž ์˜ค์œค์ง€์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ํšŒ์‚ฌ์—์„œ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ ์„œ๋น„์Šค์ธ Elastic Beanstalk(์ดํ•˜ EB) ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์ด๋ฒˆ ๊ธ€์—์„œ ์†Œ๊ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

Dable์€ 2015๋…„๋ถ€ํ„ฐ AWS Elastic Beanstalk service๋ฅผ ํ†ตํ•ด EC2 ์„œ๋ฒ„๋“ค์„ ๊ด€๋ฆฌํ•ด์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 2021๋…„ 1์›” ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ EB ํ™˜๊ฒฝ๊ณผ ๊ทธ์— ์†ํ•œ ์ธ์Šคํ„ด์Šค ๊ฐœ์ˆ˜๋Š” ๊ฐ๊ฐ 106๊ฐœ์™€ 721๊ฐœ๋กœ, ์†Œ์ˆ˜์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„  ์ง€ ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์–ด์ง€๋Š” ๊ฒƒ๋„ ๋ฌธ์ œ์ง€๋งŒ ๋Š˜์–ด๋‚˜๋Š” ์„œ๋ฒ„๋น„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ์ปธ๋Š”๋ฐ์š”, ์•„๋งˆ ์ด ์ ์€ AWS EC2 ์„œ๋น„์Šค๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋ถ„๋“ค์ด๋ผ๋ฉด ๋‹ค๋“ค ๊ณต๊ฐํ•˜์‹ค ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๋น„๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ํฌ์ธํŠธ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ (์˜ˆ: ๋ถˆํ•„์š”ํ•œ ๋„คํŠธ์›Œํฌ ๋น„์šฉ ๋“ฑ) ์žˆ์ง€๋งŒ ์ด๋ฒˆ์— ์†Œ๊ฐœํ•  Dable EB ๊ด€๋ฆฌ ๋„๊ตฌ๋Š” ์ธ์Šคํ„ด์Šค ๊ตฌ๋งค ํƒ€์ž…์— ์ดˆ์ ์„ ๋‘” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค์˜ ๋ชฉ์ ์€ "๋น„์‹ผ ON DEMAND ํƒ€์ž…๋ณด๋‹ค๋Š” ์ตœ๋Œ€ํ•œ SPOT ํƒ€์ž… ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ๋งคํ•ด ์‚ฌ์šฉํ•˜์ž" ์ž…๋‹ˆ๋‹ค.

SPOT ํƒ€์ž…๊ณผ ON DEMAND ํƒ€์ž…์˜ ๋น„์šฉ ์ฐจ์ด (* linux, ์„œ์šธ region ๊ธฐ์ค€)

c5.4xlarge์˜ ON DEMAND ์š”๊ธˆ 0.7680 USD
c5.4xlarge์˜ SPOT ์š”๊ธˆ 0.2397 USD

๊ฐ™์€ instance type์ด์–ด๋„ ON DEMAND ์š”๊ธˆ์ด 3๋ฐฐ ์ด์ƒ ๋น„์Œ‰๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์•„์ด๋””์–ด

SPOT์ด ์ข‹์œผ๋ฉด ๊ทธ๋ƒฅ AWS Auto Scaling Group (์ดํ•˜ ASG)์˜ Launch Configuration (์ดํ•˜ LC)์„ SPOT ํƒ€์ž…์œผ๋กœ ์„ค์ •ํ•ด ํ•ด๋‹น EB์—์„œ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ธ์Šคํ„ด์Šค๋Š” ์ž๋™์œผ๋กœ SPOT ํƒ€์ž…์œผ๋กœ ๋œจ๊ฒŒ ํ•˜๋ฉด ๋˜์ง€ ์•Š๋‚˜? ์™œ ์ด๋ฅผ ์œ„ํ•œ ๊ด€๋ฆฌ ๋„๊ตฌ๊ฐ€ ๋”ฐ๋กœ ํ•„์š”ํ•˜์ง€? ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” AWS์˜ ํƒ์›”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์— ์žˆ์Šต๋‹ˆ๋‹ค. AWS๋Š” ON DEMAND ๋ณด๋‹ค ํ›จ์”ฌ ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์— SPOT์„ ์ œ๊ณตํ•ด ๊ณ ๊ฐ์„ ๋Œ์–ด๋ชจ์œผ๋Š” ๋Œ€์‹ , ํ•ด๋‹น SPOT ํƒ€์ž…์ด ์ธ๊ธฐ๊ฐ€ ๋งŽ์•„ ๋ฌผ๋Ÿ‰์ด ๋ถ€์กฑํ•ด์ง€๋ฉด ์–ธ์ œ๋“  ๊ณ ๊ฐ์˜ ๋™์˜ ์—†์ด SPOT์„ ๋บ์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์€ ์„œ๋น„์Šค์˜ ์•ˆ์ •์„ฑ ์ธก๋ฉด์—์„œ ์น˜๋ช…์ ์ธ ์žฅ์• ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœ์ž๋Š” ํ•ญ์ƒ ์–ธ์ œ SPOT์„ ๋บ๊ธธ์ง€ ๋ถˆ์•ˆํ•ดํ•˜๋Š” ์ƒํ™ฉ์— ์ฒ˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Dable์€ EB ๋‹น LC๋ฅผ SPOT ํƒ€์ž…๊ณผ ON DEMAND ํƒ€์ž…์„ ๋ณต์ˆ˜๋กœ ๋งŒ๋“ค์–ด ๋‘๊ณ , LC๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•ด ํ•ด๋‹น ์ˆœ์œ„ SPOT์ด ๋ฌผ๋Ÿ‰์ด ๋ถ€์กฑํ•ด ์ธ์Šคํ„ด์Šค๋“ค์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „ ASG LC๋ฅผ ๋‹ค์Œ ์ˆœ์œ„๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด SPOT ๋ฌผ๋Ÿ‰์ด ๋ถ€์กฑํ•ด ์ƒ๊ธฐ๋Š” ์žฅ์• ๋ฅผ ์˜ˆ๋ฐฉํ•˜๋ฉด์„œ๋„, ๋‹ค์Œ ์ˆœ์œ„์˜ SPOT์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋„์›Œ ๋น„์šฉ ์ ˆ๊ฐ๋„ ํ•ด๋ณด์ž! ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Architecture

awseb-architecture

awseb-architecture

์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋œ ๋ฐ์ด๋ธ” ๋‚ด๋ถ€ ๊ด€๋ฆฌ ๋„๊ตฌ์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. AWS EventBridge AWS EventBridge๋Š” ๊ณ ๊ฐ์ด ์•Œ๋ฆผ ๋ฐ›๊ณ ์ž ํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ EventBridge์—์„œ ๊ณ ๋ฅด๋ฉด ํ•ด๋‹น ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์›ํ•˜๋Š” ์•ก์…˜์„ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์œ„ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณด์‹œ๋ฉด Spot instance Interruption warning, EB Managed Updates event ๋‘ ๊ฐœ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  2. AWS lambda job EventBridge์— ๋“ฑ๋กํ•œ ์ด๋ฒคํŠธ ์•Œ๋žŒ์„ ๋ฐ›์„ ์‹œ ์‹คํ–‰๋˜๊ธธ ์›ํ•˜๋Š” lambda job์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Spot instance Interruption warning์ด ๋ฐœ์ƒํ•˜๋ฉด SpotInstanceMonitor job์ด ์‹คํ–‰๋˜๊ณ , EB Managed Updates event๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด EBManagedUpdatesMonitor job์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น job์ด ํ•˜๋Š” ์ผ์€ 1) ๊ฐ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ธ์Šคํ„ด์Šค์™€ EB ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  2) ๊ทธ ์ •๋ณด๋“ค์„ Dable EB ๊ด€๋ฆฌ ์„œ๋ฒ„์— API ํ˜ธ์ถœ์„ ํ†ตํ•ด ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. lambda job๊ณผ EventBridge ๊ฐ„ ๊ด€๊ณ„ ์„ค์ •์€ lambda job ์„ค์ •์—์„œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. State Machine Dable EB ๊ด€๋ฆฌ ์„œ๋ฒ„๋Š” 15์ดˆ์— ํ•œ ๋ฒˆ์”ฉ ๋Œ์•„๊ฐ€๋Š” worker๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด main worker๊ฐ€ ๋Œ ๋•Œ๋งˆ๋‹ค DB์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์ƒ EB ๋“ค์„ ๊ฐ€์ ธ์˜จ ํ›„, ๊ฐ EB๋“ค์˜ ํ˜„์žฌ state๋ฅผ ํŒŒ์•…ํ•˜์—ฌ state ๋ณ„ worker๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ•œ ๊ฐœ์˜ main worker ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ state worker ๋“ค์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ชจ์–‘์ƒˆ์ž…๋‹ˆ๋‹ค. State Machine ์ž‘๋™์— ๊ด€ํ•ด์„œ๋Š” ์•„๋ž˜์—์„œ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ธฐ๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  4. AWS SDK ๊ฐ State worker์—์„œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋“ค์—์„œ๋Š” AWS API๋“ค์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. instance์™€ EB์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” API, instance๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค๋Š” API, EB ASG (Auto Scaling Group)์˜ LC๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” API ๋“ฑ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ API๋“ค์„ AWS SDK๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ๊ด€๋ จ DB ๋‘ ๊ฐ€์ง€ DB ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    1. AWSEB_STATE_LOG ๊ฐ EB์˜ state ๋“ค์ด ์–ธ์ œ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋Š” ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. EB์˜ ์•„์ด๋””, state, message, create_time์„ ํ•„๋“œ๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
    2. AWSEB_ENVIRONMENT ๊ฐ EB์˜ ์ด๋ฆ„, ๋ชจ๋‹ˆํ„ฐ๋ง ์—ฌ๋ถ€, LC ์šฐ์„ ์ˆœ์œ„ ๋“ฑ์„ ํ•„๋“œ๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

UI์™€ State Machine

EB๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๊ด€๋ฆฌ ๋„๊ตฌ client์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์‹œ์ž‘ํ•œ ํ›„ ์•„๋ž˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€ LC๋ฅผ ๋“ฑ๋กํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค.

awseb-ux

awseb-ux

1์ˆœ์œ„์™€ 2์ˆœ์œ„๋Š” SPOT ํƒ€์ž…์œผ๋กœ, 3์ˆœ์œ„๋Š” ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ON DEMAND ํƒ€์ž…์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. 2์ˆœ์œ„์˜ SPOT ์ธ์Šคํ„ด์Šค ํƒ€์ž…์€ 1์ˆœ์œ„๋ณด๋‹ค 1์„ธ๋Œ€ ๋‚ฎ์€ ๊ฒƒ์„ ์„ ํƒํ•ด, ์ƒ๋Œ€์ ์œผ๋กœ ์ˆ˜์š”๊ฐ€ ๋งŽ์€ 1์ˆœ์œ„ SPOT์˜ ๋ฌผ๋Ÿ‰์ด ์—†์„ ์‹œ ๋Œ€์ฒด์žฌ๋กœ ์“ฐ์ด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. 2์ˆœ์œ„๋กœ ๋„˜์–ด๊ฐ„ ํ›„์—๋Š” ์ฟจํƒ€์ž„์„ 2์‹œ๊ฐ„ ์ฃผ๋Š”๋ฐ, 2์‹œ๊ฐ„ ์ด๋‚ด์— 2์ˆœ์œ„ SPOT์กฐ์ฐจ ๋ฌผ๋Ÿ‰์ด ๋ถ€์กฑํ•ด์ง„๋‹ค๋ฉด 3์ˆœ์œ„ ON DEMAND LC๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด๋Ÿฌํ•œ ์ƒํƒœ๋ณ€ํ™”๋ฅผ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

awseb-ux

awseb-ux

Dable ๊ด€๋ฆฌ ๋„๊ตฌ์—์„œ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์žˆ๋Š” EB๋“ค์€ ์œ„ cycle์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์–ด๋–ค EB์˜ ์ƒํƒœ๊ฐ€ SPOT_STABLE์ด๋ผ๋Š” ๊ฒƒ์€ ํ•ด๋‹น EB์— ์†ํ•œ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…์ด SPOT์ด๋ผ๋Š” ์˜๋ฏธ์ด๋ฉฐ, ์•ˆ์ •์ ์œผ๋กœ ์šด์˜๋˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์„ธ ๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ SPOT_STABLE์€ ๋‹ค๋ฅธ state๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ฒซ์งธ, ASG LC๋กœ ๋“ฑ๋ก๋œ SPOT ํƒ€์ž…์˜ ๋ฌผ๋Ÿ‰์ด ๋ถ€์กฑํ•  ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. 1์ˆœ์œ„๊ฑด 2์ˆœ์œ„๊ฑด ์ƒ๊ด€์—†์ด, ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๊ฒฝ๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ์˜จ ์ธ์Šคํ„ด์Šค๋“ค์˜ ํƒ€์ž…์„ ํ˜„์žฌ ASG LC์™€ ๋น„๊ตํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„์—์„œ ๋ช‡ ๋ฒˆ์งธ์ธ์ง€ ์ฒดํฌํ•œ ํ›„ ๋‹ค์Œ ํ›„๋ณด LC ํƒ€์ž…์„ ํŒŒ์•…ํ•˜์—ฌ ๊ทธ๊ฒƒ์ด SPOT ํƒ€์ž…์ด๋ฉด SPOT_REQUEST๋กœ, ON DEMAND ์ด๋ฉด ONDEMAND state๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. SPOT_REQUEST์—์„œ๋Š” ์ƒˆ๋กœ์šด SPOT ์š”์ฒญ๋“ค์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ์ฒดํฌํ•˜๊ณ , ์‹คํŒจ ์‹œ SPOT_UNAVAILABLE๋กœ ๋„˜์–ด๊ฐ€ LC๋ฅผ ๋ฐ”๊พธ๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ONDEMAND ์ƒํƒœ์—์„œ๋Š” ASG LC๋ฅผ 1์ˆœ์œ„๋กœ ๋ฐ”๊พธ๊ณ  ์ฟจํƒ€์ž„ 2์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด 5๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ON DEMAND ํƒ€์ž… ์ธ์Šคํ„ด์Šค๋“ค์„ EB๋กœ๋ถ€ํ„ฐ 1๋Œ€์”ฉ ๋ถ„๋ฆฌ ๋ฐ ์ข…๋ฃŒ์‹œ์ผœ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

๋‘˜์งธ, ASG LC์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ 2์ˆœ์œ„์ด๊ณ , 2์‹œ๊ฐ„์˜ ์ฟจํƒ€์ž„์ด ์ง€๋‚˜๋ฉด SPOT_ONREADY_FROM_2ND_SPOT ์ƒํƒœ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ๋ฐ”๋€ ์ƒํƒœ์—์„œ ASG LC๋ฅผ 1์ˆœ์œ„๋กœ ๋‹ค์‹œ ๋ฐ”๊ฟ”์ฃผ๊ณ , 2์ˆœ์œ„์ธ ์ธ์Šคํ„ด์Šค๋“ค์„ 5๋ถ„์— ํ•œ ๋Œ€์”ฉ ๋ถ„๋ฆฌ ๋ฐ ์ข…๋ฃŒ๋ฅผ ์‹œ์ผœ 1์ˆœ์œ„ LC๋กœ ์ƒˆ๋กœ ์ธ์Šคํ„ด์Šค๋“ค์„ ์ฑ„์›๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋–  ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ชจ๋‘ 1์ˆœ์œ„๋กœ ๊ต์ฒด๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋˜๋ฉฐ ๋ชจ๋‘ ๊ต์ฒดํ•˜๋ฉด ๋‹ค์‹œ SPOT_STABLE๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์…‹์งธ, EB์˜ Managed Update๊ฐ€ ์‹คํ–‰๋œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ฃผ๊ธฐ์ ์œผ๋กœ maintenance๊ฐ€ ํ•„์š”ํ•œ EB์˜ ๊ฒฝ์šฐ EB Managed Update ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์‹ค ํ…๋ฐ์š”, ๋ฌธ์ œ๋Š” ์ด ์ž‘์—…์ด ๋๋‚˜๋ฉด ASG LC๊ฐ€ ON DEMAND ํƒ€์ž…์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ AWS EventBridge ์—์„œ Managed Update๊ฐ€ ๋๋‚˜๋ฉด ์˜ค๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋žŒ๋‹ค์žก์œผ๋กœ ๋ฐ›์•„ ์ด๋ฅผ ์•Œ๋ฆฌ๋Š” API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ EB_UPDATE_FINISHED ์ƒํƒœ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์–ด ์ฒซ ๋ฒˆ์งธ LC๋กœ ๋ฐ”๊พธ๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด Dable์€ EB์˜ ์ธ์Šคํ„ด์Šค ๊ตฌ๋งค ํƒ€์ž… ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. AWS EB๋ฅผ ๋Œ€๋Ÿ‰์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์— ์ด์ฒ˜๋Ÿผ AWS API๋ฅผ ํ™œ์šฉํ•œ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„๋น„ ์ ˆ๊ฐ๊ณผ ๊ด€๋ฆฌ ํŽธ์˜์„ฑ์ด๋ผ๋Š” ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ํ•จ๊ป˜ ์žก์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Dable์˜ Devops

AWS heavy user์ธ Dable ๊ฐœ๋ฐœ์ž๋กœ ์ด๋ฒˆ์— ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ๋งก์œผ๋ฉด์„œ, ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์˜ ์ข…๋ฅ˜๋„ ๋‹ค์–‘ํ•˜๊ณ  ์„œ๋ฒ„ ๊ฐœ์ˆ˜๋„ ์›Œ๋‚™ ๋งŽ์•˜๊ธฐ์— ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ํ•ด๋ณด๋ฉฐ ์ตœ์ ์˜ ์šด์˜๋ฐฉ์•ˆ์„ ๊ณ ๋ฏผํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ  ์‹ค์ œ๋กœ ๊ตฌํ˜„๊นŒ์ง€ ํ•ด๋ณผ ๊ธฐํšŒ๊ฐ€ ์ฃผ์–ด์ ธ ํฐ ๋ฐฐ์›€์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Dable ๊ฐœ๋ฐœํŒ€์€ EB ์‚ฌ์šฉ์ด ์ต์ˆ™ํ•ด์กŒ์Œ์—๋„ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋” ํšจ์œจ์ ์ธ ์„œ๋ฒ„ ์šด์˜์„ ์œ„ํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๋„์ž… ์ค‘์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์ด์šฉํ•œ ์ƒˆ๋กœ์šด ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋‹ค๋ฃฐ Dable์˜ ๋‹ค์Œ ํฌ์ŠคํŒ…์„ ๊ธฐ๋Œ€ํ•˜๋ฉฐ ๊ธ€์„ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Recommend Post
ยฉ Copyright 2022, yesCoding