ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

https://d2908q01vomqb2.cloudfront.net/cb4e5208b4cd87268b208e49452ed6e89a68e0b8/2018/02/20/AWS-Elastic-Beanstalk-Logo.png

์ตœ๊ทผ์— staging ํ™˜๊ฒฝ์—์„œ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‘๋ฉด์„œ๋„ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ,
AWS Elastic Beanstalk์„ ํ™œ์šฉํ•ด์„œ ์ด๋ฅผ ์†์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €์™€ ๊ฐ™์€ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ๊ณ„์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด ๊ธฐ๋ก์ฐจ ์ด ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

AWS Elastic Beanstalk์€ vercel๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ฝ”๋“œ๋งŒ ์˜ฌ๋ฆฌ๋ฉด ์ธํ”„๋ผ ๊ด€๋ จ ์„ธํŒ…์„ ๋งค์šฐ ์†์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” PaaS(Platform as a Service)์ž…๋‹ˆ๋‹ค.

Elastic Beanstalk์„ ์‚ฌ์šฉํ•˜๋ฉด ์ธํ”„๋ผ ๊ด€๋ฆฌ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ณ  ๋น„์šฉ๋„ Elastic Beanstalk ๊ธฐ๋Šฅ ์ž์ฒด๋Š” ๋ฌด๋ฃŒ์ด๋ฉฐ S3, EC2 ๋“ฑ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ €์žฅํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ์ง€๋ถˆํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ตœ๋Œ€ํ•œ ํ”„๋ฆฌํ‹ฐ์–ด๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•˜๊ณ  ์žˆ์–ด์š”!

ํ™˜๊ฒฝ ๊ตฌ์„ฑ

ElasticBeanstalk ๋Œ€์‹œ๋ณด๋“œ์—์„œ ํ™˜๊ฒฝ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•˜๊ณ  ์›ํ•˜๋Š” ์ด๋ฆ„๊ณผ ํ™˜๊ฒฝ ์ •๋ณด, ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•ด์ฃผ์„ธ์š”!
์ €๋Š” test-mokhs๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค

ํ”Œ๋žซํผ ์œ ํ˜• ๊ตฌ์„ฑ

ํ”Œ๋žซํผ ์œ ํ˜•์„ ๋ฐฐํฌํ•  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™˜๊ฒฝ์— ๋งž์ถฐ์„œ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” Java ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(e.g. Spring Boot)์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ์— ๋งž์ถฐ Java๋กœ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์„œ๋น„์Šค ์•ก์„ธ์Šค ๊ตฌ์„ฑ

์„œ๋น„์Šค ์•ก์„ธ์Šค ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ด์ฃผ์„ธ์š”!
์„œ๋น„์Šค ์—ญํ• ์—์„œ๋Š” ๊ธฐ์กด ์„œ๋น„์Šค ์—ญํ•  ์‚ฌ์šฉ์„ ์„ ํƒํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค.
*์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ EC2 ํ‚ค ํŽ˜์–ด์™€ EC2 ์ธ์Šคํ„ด์Šค ํ”„๋กœํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
ํ•ด๋‹น ์„ค์ •์„ ๊ณต๋ฐฑ์œผ๋กœ ๋‘๊ฑฐ๋‚˜ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด Elastic Beanstalk์—์„œ IAM Role์„ ์ฐพ์ง€ ๋ชปํ•ด Elastic Beanstalk ํ™˜๊ฒฝ์ด ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

EC2 ํ‚ค ํŽ˜์–ด์™€ EC2 ์ธ์Šคํ„ด์Šค ํ”„๋กœํŒŒ์ผ ์ƒ์„ฑ ๊ด€๋ จํ•ด์„œ๋Š” ๋ฐ”๋กœ ์•„๋ž˜์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

!


Elastic Beanstalk์—์„œ ์‚ฌ์šฉํ•  IAM Role, EC2 ํ‚ค ํŽ˜์–ด ์ƒ์„ฑ

์ฃผ์˜* ์œ„์—์„œ ๋งํ–ˆ๋‹ค์‹œํ”ผ ๋ฏธ๋ฆฌ ์ธ์Šคํ„ด์Šค ํ”„๋กœํŒŒ์ผ(IAM Role)๊ณผ ํ‚ค ํŽ˜์–ด๋ฅผ ๋งŒ๋“ค์–ด๋‘์ง€ ์•Š์œผ๋ฉด Elastic Beanstalk์—์„œ IAM Role์„ ์ฐพ์ง€ ๋ชปํ•ด Elastic Beanstalk ํ™˜๊ฒฝ์ด ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‚ค ํŽ˜์–ด๋Š” EC2 ๋Œ€์‹œ๋ณด๋“œ์— ๊ฐ€์„œ ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณด์–ธ > ํ‚ค ํŽ˜์–ด ํƒญ์— ๋“ค์–ด๊ฐ€์„œ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”!

์ธ์Šคํ„ด์Šค ํ”„๋กœํŒŒ์ผ(IAM Role) ์ƒ์„ฑ์€ IAM ๋Œ€์‹œ๋ณด๋“œ์— ๋“ค์–ด๊ฐ€์„œ ์—ญํ•  ์ƒ์„ฑ์„ ์„ ํƒ ํ›„ ์•„๋ž˜ ๊ณผ์ •์„ ๋”ฐ๋ผ๊ฐ€์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!
fyi. ์ธ์Šคํ„ด์Šค ํ”„๋กœํŒŒ์ผ์„ ๋น„๋กฏํ•œ IAM ๊ด€๋ จ ์„ค์ •์€ ๊ณต์‹ ๋ฌธ์„œ์—์„œ ๋” ์ž์„ธํ•˜๊ฒŒ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-instanceprofile.html

 

์„œ๋น„์Šค ๋˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ EC2๋กœ ์„ ํƒํ•˜๊ณ  ์•„๋ž˜ 3๊ฐœ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”

  • AWSElasticBeanstalkMulticontainerDocker
  • AWSElasticBeanstalkWebTier
  • AWSElasticBeanstalkWorkerTier

๊ฒ€ํ†  ๋‹จ๊ณ„์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉด ์™„๋ฃŒ! ์—ญํ•  ์ด๋ฆ„๋„ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.

๋„คํŠธ์›Œํฌ ๊ด€๋ จ ์„ค์ •

VPC ์„ค์ •์€ ๊ฐ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์„ค์ •ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!  ์ €๋Š” ๊ฐ€์šฉ ์˜์—ญ์œผ๋กœ ap-northeast-2c๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ–ˆ์–ด์š”.

 

RDS๋„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ๊ฒŒ ์žˆ๋‹ค๋ฉด ์„œ๋ธŒ๋„ท์„ ์„ ํƒํ•ด์„œ ์†์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ทธ๋ฃน ์„ค์ •

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ ๋ฐธ๋Ÿฐ์‹ฑ๋œ ๋กœ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ธ์Šคํ„ด์Šค ์ตœ๋Œ“๊ฐ’์„ 1๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. 
์ด๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์„ค์ •์„ ํ•˜๊ธฐ ์œ„ํ•œ "์ถ”๊ฐ€ ๋ฐฐ์น˜๋ฅผ ํ†ตํ•œ ๋กค๋ง ๋ฐฐํฌ" ์˜ต์…˜์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์œ ํ˜•

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋กœ๋Š” Application Load Balancer๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค์™€ ๋ฆฌ์Šค๋„ˆ๋Š” ๋ณธ์ธ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์— ๋งž๊ฒŒ ๋งž์ถฐ์ฃผ์„ธ์š”!

e.g. ์ €๋Š” 8080 port์— ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋„์šฐ๊ณ  health check path๋Š” /health๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
fyi. health check path์— ๋งž๋Š” api๋„ ๊ฐœ๋ฐœ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๊ด€๋ จํ•ด์„œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Application Load Balancer์— ๋Œ€ํ•ด์„œ ์ฐพ์•„๋ณด๋Š” ๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋จผ์ € ๋ฐฐํฌ๊ฐ€ ์ž˜ ๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๋Š” ๊ธฐ๋ณธ ์„ค์ • ๊ทธ๋Œ€๋กœ ๋ฐฐํฌํ•ด์„œ ํ…Œ์ŠคํŠธ ํ›„ ์ฝ”๋“œ๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฑธ ์ถ”์ฒœ๋“œ๋ ค์š”!
fyi. Elastic Beanstalk์€ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋œ ์ดํ›„์—๋„ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๋น„๋กฏํ•œ ์ผ๋ถ€ ๊ตฌ์„ฑ์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๋กค๋ง ์—…๋ฐ์ดํŠธ ๋ฐ ๋ฐฐํฌ ์„ค์ •

*์ดํ›„ ๋กค๋ง ์—…๋ฐ์ดํŠธ ๋ฐ ๋ฐฐํฌ ์„น์…˜์—์„œ ๋ฐฐํฌ ์ •์ฑ…์„ '์ถ”๊ฐ€ ๋ฐฐ์น˜๋ฅผ ์‚ฌ์šฉํ•œ ๋กค๋ง'์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
fyi. ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋กœ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ์ถ”๊ฐ€ ๋ฐฐ์น˜๋ฅผ ์‚ฌ์šฉํ•œ ๋กค๋ง ๋ฐฐํฌ ์ •์ฑ…์„ ํ™œ์šฉํ•ด์•ผ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์š”!

 

์ดํ›„ ๊ฒ€ํ†  ๊ณผ์ •์„ ๊ฑฐ์ณ ElasticBeanstalk์ด ์ •์ƒ์ ์œผ๋กœ ๋ฐฐํฌ๋˜๋Š” ๊ฑธ ํ™•์ธํ•œ ํ›„
์ฝ”๋“œ ์—…๋กœ๋“œ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ ๋ฒ„์ „์„ ๋ฐฐํฌํ•ด๋ณด๋ฉฐ ๋ฌด์ค‘๋‹จ์œผ๋กœ ๋ฐฐํฌ๋˜๋Š” ๊ฑธ ํ™•์ธํ•ด๋ณด์„ธ์š”!

๋ฐ˜์‘ํ˜•