Amazon ECS ์ด์ฌ์๊ฐ ์์์ผํ ๊ฒ๋ค
Amazon ECS๋ก ์ปจํ ์ด๋ ์ด์ฉ์ ์ํ ํ๊ฒฝ์ ๊ตฌ์ถํด๋ณด๋ ์๊ฐ๋ณด๋ค ๋ฌ๋์ปค๋ธ๊ฐ ๋์ต๋๋ค. Amazon ECS ๊ฒฝํ์ด ๋ถ์กฑํ ์ด์ฌ์๋ก์จ ์์์ผํ ๊ฒ๋ค์ ๋ํด์ ๊ณต์ ํด๋ณด๊ณ ์ ํ๋ค.
์คํ ์ค์ผ์ผ๋ง ๊ทธ๋ฃน ๊ณผ Amazon ECS ์ต์ ํ Linux AMI
Amazon ECS๋ EC2 ์ธ์คํด์ค ๊ธฐ๋ฐ ๊ตฌ์ฑ์ ์ํด์๋ ์์ ํ ํ๋ฆฟ์ผ๋ก ์ ์๋ ์คํ ์ค์ผ์ผ๋ง ๊ทธ๋ฃน(ASG)์ ์ฉ๋ ๊ณต๊ธ์๋ก ์ถ๊ฐํ๊ณ ์คํ ์ค์ผ์ผ๋ง ์ ์์ ๋ฐ๋ผ ์คํ๋ ECS ์ธ์คํด์ค ๋ด์ ECS ์์ด์ ํธ์ ํต์ ํ์ฌ ํ์คํฌ๋ฅผ ์ปจํ ์ด๋๋ก ์คํํ๋ค. ์คํ ์ค์ผ์ผ๋ง ๊ทธ๋ฃน์ผ๋ก ์คํ๋๋ ์ธ์คํด์ค๋ Amazon ECS ์ต์ ํ Linux AMI๋ก ๊ตฌ์ฑ๋์ด์ผ ํ๋ค.
Amazon ECS ์ต์ ํ Linux AMI๋ฅผ ์ฌ์ฉํด์ผํ๋ ์ด์ ๋ Amazon ECS ์ปจํ ์ด๋ ์์ด์ ํธ(ecs-agent)๊ฐ ํฌํจ๋์ด์๊ธฐ ๋๋ฌธ์ ๋๋ค. ECS ํด๋ฌ์คํฐ๊ฐ ํ์คํฌ๋ก ์คํ๋๋ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ecs-agent ์ปจํ ์ด๋์ ํต์ ํด์ผ ํฉ๋๋ค.
ECS ํด๋ฌ์คํฐ ์์ฑ ์ EC2 ์ฉ๋ ๊ณต๊ธ์๋ฅผ ์์ฑํ์ง ์์ ๊ฒฝ์ฐ ๋ณ๋๋ก ์คํ ์ค์ผ์ผ๋ง ๊ทธ๋ฃน์ ๋ง๋ค๊ณ ์ถ๊ฐํด์ผํ๋ค. ์ด๋ ์คํ ์ค์ผ์ผ๋ง ๊ทธ๋ฃน์ ์์ ํ ํ๋ฆฟ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ ํญ๋ชฉ์ผ๋ก Amazon ECS ์ปจํ ์ด๋ ์์ด์ ํธ ๊ตฌ์ฑ(ECS_CLUSTER)์ ์ง์ ํด์ผํ๋ค.
#!/bin/bash
echo "ECS_CLUSTER=$CLUSTER_NAME" >> /etc/ecs/ecs.config
์ ํ๋ฆฌ์ผ์ด์ ์์ฑ์ ์ํ S3 ํ๊ฒฝ ๋ณ์ ํ์ผ ๊ถํ
ํ์คํฌ ์คํ ์ญํ (Task Execution Role)์๋ ํ๊ฒฝ ๋ณ์ ํ์ผ์ด ์ ์ฅ๋ S3 ๋ฒํท์ ๋ํ ๊ถํ์ ํฌํจํ๊ณ ์์ด์ผํ๋ค. ์ฒ์ ECS ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ AmazonS3ReadOnlyAccess ์ ์ฑ ์ ํฌํจํ์ฌ ํ ์คํธํด๋ ๋๋ค. ๋ ๋์๊ฐ ์ธ๋ถ ์์คํ ์ ๋ํ ํ ํฐ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ค์ ํ๊ฒฝ ๋ณ์ ํ์ผ ๋์ ์ Secrets Manager ๋๋ AWS Systems Manager Parameter Store ์์ ๊ฐ์ ธ์ค๋ ๊ฑธ ๊ถ์ฅํ๋ค.
Amazon ECS ๋ก๊ทธ๋ฅผ CloudWatch๋ก ์ ์ก
Amazon ECS ์ปจํ ์ด๋์์ ๋ฐ์ํ๋ ๋ก๊ทธ๋ฅผ CloudWatch๋ก ์ ์กํ์ฌ ํ์ธํ๊ณ ์ ํ๋ค๋ฉด ํ์คํฌ ์ ์ ์ awslogs ๋ก๊ทธ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์ ํด์ผํ๋ค. ๋ํ, Amazon ECS ์ปจํ ์ด๋ ์ธ์คํด์ค ์ญํ (AmazonEC2ContainerServiceforEC2Role ์ ์ฑ ์ ๊ฐ์ง ecsInstanceRole)์ CloudWatch๋ก ๋ก๊ทธ๋ฅผ ์ ์กํ๊ธฐ ์ํ ๊ถํ์ด ํฌํจ๋์ด์๋์ง ํ์ธํด์ผํ๋ค.
ECS ํ์คํฌ ์ปจํ ์ด๋ ํฌ์ค ์ฒดํฌ
ํ์คํฌ ์ ์ ์ ์ปจํ ์ด๋ ์ํ ํ์ธ ์ต์ ์ ๊ตฌ์ฑํ ์ ์๋๋ฐ ์ด ์ํ ํ์ธ์ __์ปจํ ์ด๋ ๋ด๋ถ__์์ ์คํ๋๋ค. ๊ทธ๋์ ์ผ๋ฐ์ ์ธ ์์๋ ์๋์ ๊ฐ์ด ๋ก์ปฌํธ์คํธ๋ก ์ค๋ช ํ๋๋ฐ ์ง์ ๋ง๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋์ด ์ฌ์ฉํ๋ ํฌํธ๋ฅผ ๋ช ํํ ์ง์ ํ ํ์๊ฐ ์๋ค.
CMD-SHELL, curl -f http://localhost:5000/ || exit 1
Amazon ECS Service Connect ์ปจํ ์ด๋๋ก ์ธํ ๋ฐฐํฌ ์ด์
Amazon ECS ์์ Fargate ๋๋ EC2 ์ธ์คํด์ค์ ํ์คํฌ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ECS ์์ด์ ํธ์ ๋ํ ์ปจํ ์ด๋์ ์๋น์ค ์ต์ ์ ๋ฐ๋ผ ์๋น์ค ์ฐ๊ฒฐ์ ์ํด ์ฌ์ด๋์นด๋ก Envoy ๊ธฐ๋ฐ์ ์ปจํ ์ด๋๊ฐ ํจ๊ป ๊ตฌ๋๋ ์ ์๋ค. ์ด ๋ง์ ํ๋์ ์๋ฒ ๋ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ปจํ ์ด๋ ๋ฟ๋ง ์๋๋ผ ๋๋จธ์ง ์ปจํ ์ด๋๊ฐ ์ฌ์ฉํ๋ CPU์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ ๋ คํ์ฌ ์ธ์คํด์ค ์ฌ์์ ๊ณ ๋ คํด์ผํ๋ค๋ ๊ฒ์ด๋ค.
์ฒ์์๋ ECS ํด๋ฌ์คํฐ์ ์๋ฒ ์ฌ์์ ์ต๋ํ ๋ฎ์ถ์ด ๋ง๋ค๊ฒ ๋ ์ํ์์ ์๋น์ค ์ฐ๊ฒฐ์ ์ํ Instance Connect ์ปจํ ์ด๋๊ฐ ๊ตฌ๋๋๋ฉด์ CPU ์ฌ์ฉ๋์ด 100ํ๋ก๋ฅผ ๋์ด์๋ฉด์ ๋ฐฐํฌ๊ฐ ์ํํ์ง ์์ ์ํฉ์ ๊ฒฝํํ์ต๋๋ค.
Amazon ECS์ ๋ํ Fargate ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ต์ ํ ๊ณ ๋ ค
Fargate ์๋ฒ์์ ์คํ๋๋ ํ์คํฌ ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ์บ์ฑํ์ง ์๋๋ค. ๋ฐ๋ผ์, Fargate ํ์คํฌ๋ฅผ ์์ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋ ์๊ฐ์ด ํฌํจ๋์ด์๋ค. EC2 ์ฉ๋ ๊ณต๊ธ์๊ฐ ์๋ Fargate๋ก ์ด์ฉํ๋ ์๋น์ค์ ๊ฒฝ์ฐ์๋ ์๋์ ํญ๋ชฉ์ ๊ณ ๋ คํด๋ณผ ํ์๊ฐ ์๋ค.
- Amazon ECR ์ธํฐํ์ด์ค VPC ์๋ํฌ์ธํธ(AWS PrivateLink)
- Amazon Linux 2023 ์ต์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง
- zstd ์์ถ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉ