๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

AWS

[aws] ECS์™€ EKS

 

 

 

์ด ๊ธ€์˜ ์ผ๋ถ€๋Š” aws ๊ณต์‹๋ฌธ์„œ์˜ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•˜์˜€์Œ์„ ๋ฐํž™๋‹ˆ๋‹ค.

 

 

๐Ÿ“Œ ECS(Elastic Container Service)

 

Amazon ECS(Amazon Elastic Container Service)๋Š”  AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค๋กœ EKS์— ๋น„ํ•ด ์„ค์ • ๋ฐ ์šด์˜์ด ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๋ฉฐ, AWS์™€์˜ ํ†ตํ•ฉ์ด ์›ํ™œํ•˜๋‹ค. ECS๋Š”  ๋ฐฐํฌ ์˜ต์…˜์œผ๋กœ Fargate(์„œ๋ฒ„๋ฆฌ์Šค)์™€ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, EC2 ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฐฐํฌํ•œ ๊ฒฝ์šฐ ์ธํ”„๋ผ๋ฅผ ์ง์ ‘ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ  ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ์ด ๋•Œ EC2 ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ธ์Šคํ„ด์Šค๋“ค์€ ๊ฐ๊ฐ ECS ์—์ด์ „ํŠธ ์‹คํ–‰์„ ํ†ตํ•ด ECS ์„œ๋น„์Šค์™€ ์—ฐ๊ฒฐ๋œ๋‹ค. ์ดํ›„ ECS ํƒœ์Šคํฌ(ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ์œ„)๋ฅผ ํ†ตํ•ด์„œ AWS๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋ฉˆ์ถ”๋ฉฐ ์ƒˆ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ์‹œ๊ฐ„์— ๋”ฐ๋ผ EC2 ์ธ์Šคํ„ด์Šค์— ์ง€์ •๋œ๋‹ค.  

 

 

 

 

 

Fargate์‹œ์ž‘ ์œ ํ˜•์˜ ๊ฒฝ์šฐ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ AWS์— ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ์ธํ”„๋ผ๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜์ง€ ์•Š์•„ ๊ด€๋ฆฌํ•  EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ์—†๋‹ค. ์ฆ‰ ์„œ๋ฒ„๋ฆฌ์Šค์ด๋ฉฐ ECS ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ ECS ํƒœ์Šคํฌ๋ฅผ ์ •์˜ํ•˜๋Š” ํƒœ์Šคํฌ๋งŒ ์ƒ์„ฑํ•˜๋ฉด ํ•„์š”ํ•œ CPU ๋‚˜ RAM์— ๋”ฐ๋ผ ECS ํƒœ์Šคํฌ๋ฅผ AWS๊ฐ€ ๋Œ€์‹  ์‹คํ–‰ํ•œ๋‹ค.  ์ฆ‰ ์ƒˆ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋””์„œ ์‹คํ–‰๋˜๋Š”์ง€ ์•Œ๋ฆฌ์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ์‹คํ–‰๋˜๋ฉฐ ํ™•์žฅ์„ ์›ํ•  ๊ฒฝ์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ํƒœ์Šคํฌ ์ˆ˜๋งŒ ๋Š˜๋ ค์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

๐Ÿ“Œ ECR(Elastic Container Registry)

 

ECR์€ AWS์— ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋Š” Docker Hub ๋“ฑ์˜ ์˜จ๋ผ์ธ ์ €์žฅ์†Œ๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๊ณ„์ •์— ํ•œํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋น„๊ณต๊ฐœ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํผ๋ธ”๋ฆญ ์ €์žฅ์†Œ๋กœ ERC public Gallery์— ๊ฒŒ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ECR์€ ECS์™€ ์™„์ „ํžˆ ํ†ตํ•ฉ๋˜์–ด ์žˆ๊ณ  ์ด๋ฏธ์ง€๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ S3์— ์ €์žฅ๋œ๋‹ค. ์•„๋ž˜ ๋„ํ‘œ๋Š” ECR ์ €์žฅ์†Œ์— ์—ฌ๋Ÿฌ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๊ณ  ECS ํด๋Ÿฌ์Šคํ„ฐ์˜ EC2 ์ธ์Šคํ„ด์Šค์— ์ด๋ฏธ์ง€๋ฅผ ๋Œ์–ด์˜ค๊ธฐ ์œ„ํ•ด EC2 ์ธ์Šคํ„ด์Šค์— IAM ์„ ์ง€์ •ํ•ด์„œ IAM ์ด ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋Œ์–ด์˜ค๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•œ๋‹ค. ECR์— ๋Œ€ํ•œ ๋ชจ๋“  ์ ‘๊ทผ์€ IAM์ด ๋ณดํ˜ธํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ECR์— ๊ถŒํ•œ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ •์ฑ…์„ ์‚ดํŽด ๋ณด๋ฉด ๋œ๋‹ค. EC2 ์ธ์Šคํ„ด์Šค์— ์ด๋ฏธ์ง€๋ฅผ ๋Œ์–ด์˜จ ํ›„์—๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜๋Š”๋ฐ ECR์€ ๋‹จ์ˆœํžˆ ์ €์žฅํ•˜๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๊ทธ์น˜์ง€ ์•Š๊ณ  ์ด๋ฏธ์ง€์˜ ์ทจ์•ฝ์  ์Šค์บ๋‹, ๋ฒ„์ €๋‹, ํƒœ๊ทธ ๋ฐ ์ˆ˜๋ช… ์ฃผ๊ธฐ ํ™•์ธ์„ ์ง€์›ํ•ด์ค€๋‹ค.  

 

 

 

 

๐Ÿ“Œ EKS(Elastic Kubernetes Service)

 

EKS๋Š” Elastic Kubernetes Service์˜ ์•ฝ์ž๋กœ AWS์— ๋˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค์ด๋‹ค. ํ•˜์ง€๋งŒ Kubernetes๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ž€ ์ ๊ณผ ์‚ฌ์šฉํ•˜๋Š” API ๋“ฑ์ด  ECS์™€์˜ ์ฐจ์ด๋ฅผ ๋ณด์ด๋ฉฐ ECS์™€ ๋™์ผํ•˜๊ฒŒ Docker๋กœ ์ปจํ…Œ์ด๋„ˆํ™”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž๋™ ๋ฐฐํฌ, ํ™•์žฅ, ๊ด€๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋ฉฐ EKS ์—ญ์‹œ ์‹œ์ž‘ EC2 ์ธ์Šคํ„ด์Šค์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“œ์™€ Fargae ๋ชจ๋“œ 2 ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. ๋„ํ‘œ์— EKS Pods๋Š” ECS์˜ ํƒœ์Šคํฌ(ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ์œ„)์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋…์ด๋ฉฐ Pods๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋…ธ๋“œ๋Š” ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ทธ๋ฃน์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ECS์™€ ์œ ์‚ฌํ•˜๊ฒŒ EKS ์„œ๋น„์Šค๋‚˜ Kubernetes ์„œ๋น„์Šค๋ฅผ ์œ ์ €๋“ค์ด ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋…ธ์ถœํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ํ”„๋ผ์ด๋น— ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋‚˜ ํผ๋ธ”๋ฆญ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์„ค์ •ํ•ด ์›น์— ์—ฐ๊ฒฐํ•ด์•ผํ•œ๋‹ค.

 

 

 

 

 

 

EKS์˜ ์—ฌ๋Ÿฌ ๋…ธ๋“œ ์œ ํ˜• ์ •๋ฆฌ

 

  • ๊ด€๋ฆฌํ˜• ๋…ธ๋“œ ๊ทธ๋ฃน - EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌ, ๋…ธ๋“œ๋Š” EKS ์„œ๋น„์Šค๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ทธ๋ฃน์˜ ์ผ๋ถ€์ด๋ฉฐ ์˜จ๋””๋งจ๋“œ ์ธ์Šคํ„ด์Šค์™€ ์ŠคํŒŸ ์ธ์Šคํ„ด์Šค ์ง€์›
  • ์ž์ฒด ๊ด€๋ฆฌํ˜• ๋…ธ๋“œ - ์‚ฌ์šฉ์ž ์ง€์ • ์‚ฌํ•ญ์ด ๋งŽ๊ณ  ์ œ์–ด ๋Œ€์ƒ์ด ๋งŽ์€ ๊ฒฝ์šฐ ์ง์ ‘ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  EKS ํด๋Ÿฌ์Šคํ„ฐ์— ๋“ฑ๋กํ•œ ๋‹ค์Œ ASG์˜ ์ผ๋ถ€๋กœ ๊ด€๋ฆฌ ์‚ฌ์ „ ๋นŒ๋“œ๋œ AMI ์ธ Amazon EKS ์ตœ์ ํ™” AMI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์˜จ๋””๋งจ๋“œ ์ธ์Šคํ„ด์Šค์™€ ์ŠคํŒŸ ์ธ์Šคํ„ด์Šค ์ง€์›
  • AWS Fargate - ๋…ธ๋“œ๋ฅผ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ EKS๊ฐ€ ์ง€์›ํ•˜๋Š” Fargate ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•˜๋ฉด ์œ ์ง€ ๊ด€๋ฆฌ๋„ ํ•„์š” ์—†๊ณ  ๋…ธ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ EKS์—์„œ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.  

 

 

๐Ÿ“Œ APP Runner

 

์™„์ „ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค๋กœ ๊ทœ๋ชจ์— ๋”ฐ๋ผ ์ธํ”„๋ผ๋‚˜ ์ปจํ…Œ์ด๋„ˆ, ์ฝ”๋“œ๋ฅผ ์•Œํ•„์š” ์—†์ด ์›น, API ๋ฐฐํฌ๋ฅผ ๋•๋Š”๋‹ค. ๋จผ์ € ์†Œ์Šค ์ฝ”๋“œ๋‚˜ Docker ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์›ํ•˜๋Š” ๊ตฌ์„ฑ์„ ์„ค์ •ํ•œ๋‹ค. cpu์˜ ๊ฐœ์ˆ˜ ์˜คํ†  ์Šค์ผ€์ผ๋ง ๋“ฑ์˜ ์›ํ•˜๋Š” ๊ตฌ์„ฑ์„ ์„ค์ •ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋‹ค์Œ ์ž‘์—…์€ ์ž๋™์œผ๋กœ ์ด๋ค„์ง„๋‹ค. ๋ฐฐํฌ๋˜๋ฉด API๋‚˜ ์›น ์•ฑ์ด ๋ฐฐํฌ๋œ ๋‹ค์Œ์— URL์„ ํ†ตํ•ด ๋ฐ”๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‹ ์†ํ•œ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์“ฐ์ธ๋‹ค.