ECS
(Elastic Container Service)๋ ์ปจํ
์ด๋๋ค์ ํฌ์ค๋ฅผ ์ฒดํฌํ๊ณ ์ผ์ ์์ค ์ด์์ ์ปจํ
์ด๋๋ค์ด ๋์ํ๋๋ก ๋์์ฃผ๋ ์๋น์คECS
๋ ์์ ๊ด๋ฆฌํ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
์๋น์คECS
์ ์ฅ์ ์ ๋ค์ํ AWS ๊ธฐ๋ฅ๊ณผ ํตํฉ์ด ์ฝ๊ณ ๋ค๋ฅธ ์๋น์ค์ ๋นํด์ ์ฝ๊ฒ ์ ์ฉ์ด ๊ฐ๋ฅTip!
- ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ์๋ Docker์์ ๋ง๋
Docker Swarm
, ๊ตฌ๊ธ์Kubernetes
, ํ์์ฝํ์Nomad
๋ฑ ๋ค์ํ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ๊ฐ ์์
ECS
๋ฐ EKS
์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์๋ฒ๋ฅผ ๊ด๋ฆฌ ํ ํ์ ์์ด ์ดํ๋ฆฌ์ผ์ด์
๋ณ๋ก ๋ฆฌ์์ค๋ฅผ ์ง์ ํ์ฌ ๊ด๋ฆฌ ๋น์ฉ์ ์ง๋ถํ๋ ๋ฐฉ์์ผ๋ก ์ฑ์ ์ง์คํ์ฌ ์ธํ๋ผ๊ฐ ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ฐฐํฌ ๊ด๋ฆฌ ํ ์ ์์Lambda
์ ๋งค์ฐ ์ ์ฌํ๋ฐ AWS์ ๊ฐ์ง๊ณ ์๋ Fargate Pool
์์ ํ๋๋ฅผ ๊ฐ์ง๊ณ ์์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์คํLambda
์ฒ๋ผ ์ด๋น ๊ณผ๊ธ์ด์ง๋ง ์๋์ ์ผ๋ก ๋ง์ด ๋น์ธ๋ฉฐ ํ๋ฆฌํฐ์ด ๋์๋ ์๋FARGATE
๊ฐ ์ ํฉํ ๊ฒฝ์ฐLambda
์์๋ ์คํ์ด ๋ถ๊ฐ๋ฅํ ์ํฉEC2
์ปจํ
์ด๋ ์ธ์คํด์ค๋ฅผ ์ฐ๊ฒฐํ์ฌ ECS
์๋น์ค ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์ ์์ FARGATE
๋ณด๋ค ๋น์ฉ์ด ์ ๋ ดํ๋ ์ค์ ์ด ๋ณต์กํ๊ณ ์ธํ๋ผ ํ์ฅ์ด FARGATE
์ ๋นํด์ ์ ์EC2
๊ฐ ์ ํฉํ ๊ฒฝ์ฐEC2
๊ธฐ๋ฅ์ ์ก์ธ์คํ ์ ์์Task
(์์
)Task Definition
(์์
์ ์)Service
(์๋น์ค)Continer Instacne
(์ปจํ
์ด๋ ์ธ์คํด์ค)Cluster
(ํด๋ฌ์คํฐ)ECS
์ ์ต์ ๋จ์๋ task
task
์ ๊ตฌ์ฑ๋จtask
์ ๊ตฌ์ฑ ์์๋ task definition
์ JSON ํ์์ผ๋ก ์์ฑ๋์ด ์์task
๊ฐ ๊ตฌ์ฑ๋จtask definition
์์ ์์
๋ฐ ์ปจํ
์ด๋๊ฐ ์ฐธ๊ณ ํ ์ด๋ฏธ์ง, ์ฌ์ฉํ ๋ฆฌ์์ค ์, ์์ ์ ํ, ๋ก๊น
๊ตฌ์ฑ ๋ฑ ๋ค์ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํ ์ ์์task definition
์ ์ฐธ๊ณ ํ์ฌ task
๋ฅผ ์คํtask
๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ์ค์ผ์ค๋ฌ ์ญํ ์ ํจECS
์ปจํ
์ด๋ ์์ด์ ํธ๋ฅผ ์คํํ๊ณ cluster
์ ๋ฑ๋ก๋ EC2 ์ธ์คํด์คFargate
์์ ์ ํ์ ์ฌ์ฉํ๋ task
๋ ์๋ฒ๋ฆฌ์ค๋ก ๋ฐฐํฌ๋๋ฏ๋ก container instance
๋ ์ ์ฉ๋์ง ์์container instance
(Fargate
๋ผ๋ฉด task
)์ ๋
ผ๋ฆฌ์ ๊ทธ๋ฃนECR
)์ ์ปค๋ฐtask definition
์์ ์ฌ์ฉํ ์ด๋ฏธ์ง ๋ฐ ์์ ์ ํ, ๋ฆฌ์์ค ์ ์cluster
์์ฑservice
๊ฐ task definition
์ ์ฐธ๊ณ ํ์ฌ task
์์ฑELB
์ ๋ค์ด์จ ์์ฒญ์ ๋ฐ๋ผ ์คํ ์ค์ผ์ผ๋ง ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑTip! ์ถ๊ฐ ๋ด์ฉ
task definition
task definition
์ ๋ง๋ค๋ฉด ์ด task definition
์ ๊ธฐ๋ฐ์ผ๋ก ํน์ ์ค์ ์ ๋ณ๊ฒฝํ ์ ์์task definition
์๋ ํ ๊ฐ ์ด์์ ์ปจํ
์ด๋์ ๋ํด ์ ์๊ฐ ๊ฐ๋ฅํ๋ฉฐ task definition
๋ด๋ถ์ ์ ์๋ ์ปจํ
์ด๋ ์ฌ์ด๋ link
์ค์ ์ผ๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅtask definition
์์ ์ ์๋ ๋๋ก ์ค์ ์์ฑ๋ container set
๋ค์ task
๋ผ๊ณ ๋ถ๋ฆtask definition
์์ ์ ์๋ ๋๋ก ๋ฐฐํฌ๋ container set
์ task
๋ผ๊ณ ๋ถ๋ฆtask
์์๋ ํ ๊ฐ ์ด์์ ์ปจํ
์ด๋๋ค์ด ํฌํจ๋์ด ์์ผ๋ฉฐ ECS์์ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ์ต์ ๋จ์๋ task
task
๋ cluster
์ ์ํ container instance
(EC2 instance
)์ ๋ฐฐํฌ๋๊ฒ ๋จtask
๋ ์ฌ๋ฌ container instance
(EC2 instace
)์ ๋ฐฐํฌ ๊ฐ๋ฅtask
๋ค์ life cycle
์ ๊ด๋ฆฌํ๋ ๋ถ๋ถ์ service
๋ผ๊ณ ํจtask
๋ค์ ๊ฐ์ ๋ค๋ฅธ ์๋น์คtask
๋ฅผ cluster
์ ๋ช ๊ฐ๋ ๋ฐฐํฌํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๊ณ ์ค์ task
๋ค์ ์ธ๋ถ์ ์๋น์ค ํ๊ธฐ ์ํด ELB
์ ์ฐ๋ ๋๋ ๋ถ๋ถ์ ๊ด๋ฆฌํ๊ฒ ๋จtask
๊ฐ ์ด๋ค ์ด์ ๋ก ์๋์ด ์ค์ง ๋๋ฉด ์ด๊ฒ์ ์๋์ผ๋ก ๊ฐ์งํด ์๋ก์ด task
๋ฅผ cluster
์ ๋ฐฐํฌ ํ๋ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ํ ์ ์ฑ
๋ service
์์ ๊ด๋ฆฌECS
๋ container
๋ฐฐํฌ(task
๋ฐฐํฌ)๋ฅผ EC2 instance
๊ธฐ๋ฐ์ ์ฌ๋ฆฌ๋๋ก ์ค๊ณ ๋์ด ์์task
๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ํด ๋ฑ๋ก๋ EC2 instance
๋ฅผ container instance
๋ผ๊ณ ๋ถ๋ฅธ๋ค.ECS
๋ฅผ ์ฒ์ ์์ํ๋ฉด ์์ฑ๋๋ default cluster
์๋ container instance
๋ฅผ ์๋์ผ๋ก ํ ๋น ์์ผ ์ฃผ๊ธฐ๋ ํ์ง๋งcluster
๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ์ง์ container instance
๋ฅผ ๋ง๋ค์ด์ผ ํจcontainer instance
์ฉ AMI ์ด๋ฏธ์ง๋ AWS ์ธก์์ ์ ๊ณตํด ์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ ต์ง ์๊ฒ ์์ฑ์ด ๊ฐ๋ฅcontainer instace
๋ด๋ถ์๋ ๊ฐ๊ฐ์ ๋ค๋ฅธ task
๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ์ ์์task
๊ฐ ๋ฐฐํฌ๋๋ container instance
๋ค์ ๋
ผ๋ฆฌ์ ์ธ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด๊ฒ ๋๋๋ฐ ์ด ๋จ์๋ฅผ cluster
๋ผ๊ณ ๋ถ๋ฆtask
๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํ instance
๋ ๋ฐ๋์ cluster
์ ๋ฑ๋ก๋์ด์ผ ํจECS
๋ฅผ ์ํ Container ์ ์ฉ ์๋ฒํ์ ๋ฐ๋ก ๊ตฌ์ฑํ์ง ์๊ณ , VM ํํ์ EC2 instance
์์ Container ๋ฅผ ๋์์ํค๋ ๋ฐฉ๋ฒ์ ํํ์EC2 instance
๋ฅผ ์ค์ฌ์ผ๋ก ๋ค์ํ ์๋น์ค๋ค์ด ์ฐ๊ณ๋๋ ๋ชจ์์๋ฅผ ๊ฐ์ถ๊ณ ์๋๋ฐ, ์ด๋ AWS์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ด๊ธฐ๋ ํจECS
์๋น์ค๋ฅผ ์ํด ์๋ก์ด Container ์๋ฒํ ํ๊ฒฝ์ ๊ตฌ์ฑํ๊ณ ์ค๊ณํ๋ค๋ฉด, ๊ธฐ์กด EC2 ๋ฅผ ์ค์ฌ์ผ๋ก ํ ๋ค์ํ ์๋น์ค๋ค๊ณผ์ ์ฐ๊ณ์ ๋ํ์ฌ ๊ต์ฅํ ๋ง์ ๊ณ ๋ฏผ์ ํ ์ ๋ฐ์ ์์ ๊ฒEC2 instance
์ ์ฌ๋ฆผ์ผ๋ก์, EC2 ์ค์ฌ์ผ๋ก ์ฎ์ฌ ์๋ ๊ธฐ์กด์ ์๋น์ค๋ฅผ ์ด์ฉํ๋ ์ฅ์ ์ ํก์ํ๋๊ฒ ํจ์ฌ ์ด๋์ด ๋ง์์ ๊ฒ์ด๋ผ ์ถ์ธกTip! ์๋ฒํ์ด๋?
- ์๋ฒํ์ ํ๊ณณ์ ์ง๋จ์ผ๋ก ์์ฉ๋์ด ๋์๋๋ ์ผ๋ จ์ ์ปดํจํฐ๊ตฐ์ ๋งํจ
- ์๋ฒํ์ ๋๋ก ์๋ฒ ํด๋ฌ์คํฐ๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํจ
- ์น์๋ฒํ์ ํ๋ ์ด์์ ์๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์น์ฌ์ดํธ ๋๋ ๋ค์ค ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์นํธ์คํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ISP๋ฅผ ์ง์นญ
Overlay Network
๊ตฌ์กฐ๋ฅผ ์ถ๊ฐํด ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์์Overlay Network
๋ ์ปจํ
์ด๋ Orchestration์ ์ํ ์ค์ ๊ตฌ์ฑ ์์๋ก ๊ณ ๋ ค๋๊ณ ์๋ ์ถ์ธECS
์ Host Clustering์ ์ํ Network ๊ตฌ์กฐ๋ ์ด๋ ํ ๊น?ECS
์ cluster
๋ ๋งค์ฐ ๋จ์cluster
๋ Docker Host์ ๋
ผ๋ฆฌ์ ๋ฌถ์์ผ ๋ฟ์ด์ง, ์ด๋ฅผ ์ํด ์ถ๊ฐ์ ์ธ Network ์ค๊ณ ๊ตฌ์กฐ๊ฐ ๋ค์ด๊ฐ์ง ์์ ๊ฒ์ผ๋ก ๋ณด์Overlay Network
๊ฐ ์๋ค๋ฉด ๋ค๋ฅธ Host์ ์์ฃผํ ์ปจํ
์ด๋ ์ฌ์ด์๋ ์ปจํ
์ด๋์ ํ ๋น๋ Private IP๋ฅผ ์ด์ฉํด Nativeํ๊ฒ ํต์ ํ๊ฒ ์ด๋ ค์ฐ๋ฉฐ, ๋์ ์ธ๋ถ ํต์ ๊ณผ ๋์ผํ๊ฒ ๊ฐ Host IP๋ก ์ปจํ
์ด๋์ ๋งตํ๋ Port๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ ๋ฐ์ ์์ECS
๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๊ธฐ์กด ์๋น์ค ์ค ํ๋๋ก ์ด๋์ ๋ ํด์ํ๋๋ฐ ๋ฐ๋ก ELB
ECS
๋ service
๋ด๋ถ์ ์ฌ๋ฌ ๊ฐ์ task
๊ฐ ๋ฐฐํฌ๋ ๋ ELB
์ ๋ฐธ๋ฐ์ฑ ๊ทธ๋ฃน์ task
๋ค์ด ์๋์ผ๋ก ๋ค์ด๊ฐ๋๋ก ์ค๊ณ๋์ด ์์service
์ฌ์ด์ ํต์ ์ ELB
๋ฅผ ํตํด ํต์ ์ ํจ์ผ๋ก์ task
์ life cycle
์ ์ ์ฐํ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ๋ง๋ ๊ตฌ์กฐservice
์ ์ํ task
๋ค์ด ๋ค๋ฅธ Host์ ์๊ฒ ๋๋ค๋ฉด ์ด๋ค ์ฌ์ด์ ํต์ ์ ์ฌ์ ํ ์ด๋ ต๋ค๋ ํ๊ณ๋ ์์ง๋ง, ๊ตณ์ด ๋์ผํ service
์์ ๋์ผํ task
๋ผ๋ฆฌ ํต์ ํ ์ผ์ ๋ง์ง ์์ ๊ฒ์ด๊ธฐ์ ํฐ ๋ฌธ์ ๋ ์์ ๊ฒ์ผ๋ก ๋ณด์ECS
๊ตฌ์กฐ์ ์ธก๋ฉด์์ ๋ณด๋ฉด service
์์ task
๋ฅผ ์ฌ๋ฆด ์ ์๋ ์ต๋ ์ซ์๋ cluster
์ ๋ฑ๋ก๋ container instance
๊ฐ์ ์ด์์ด ๋ ์ ์๋ค๋ ๊ฒservice
์์ Apache ์ปจํ
์ด๋๊ฐ ์ ์๋ task
๋ฅผ 2๊ฐ ์ฌ๋ฆฌ๊ณ ์ถ๋ค๋ฉด ๋ฐ๋์ Host๋ ๋๋ ์ด์์ด ํ์ํ๋ค๋ ๋ปOverlay Network
๊ณผ Pods - Service ๋ผ๋ ๋
ผ๋ฆฌ์ ๊ฐ๋
์ผ๋ก ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ๊ณผ ๋น๊ตํ๋ฉด ์์ฌ์ด ๋ถ๋ถtask
๋ค์ด ๊ณต์กดํ๋๋ก ๋ง๋ค์ด ์ง์ ๋๋ฅผ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ด ๋จ์ ์ ์์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ณด์container instance
๋ ๋ ๋์ด์ง๋ง, ๊ฐ๊ฐ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ service
๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ๋ ค ์ปจํ
์ด๋ ์ง์ ๋๋ฅผ ๋์ผ ์ ์์ECS
๊ธฐ๋ฐ์ผ๋ก Application์ ์ ์ด์ํ๋ ค๋ฉด task
์ service
๊ฐ๋
์ ๊ตฌ์กฐ์ ํน์ง์ ์ดํดํ๊ณ Application์ ์ค๊ณ ํด์ผ ํจtask
์๋ ์ฌ๋ฌ ์ปจํ
์ด๋๋ฅผ ์ ์ํ ์ ์์task
๋จ์ ์ด๋ฏ๋ก ๋จ์ผํ ์์ฑ์ ์ปจํ
์ด๋ ํ๋๋ง ์ ์ํ๋ ๊ฒ ์ข์ ์ค๊ณ ๋ฐฉํฅ์ผ ๊ฒtask definition
์ Web - WAS - DB ์ปจํ
์ด๋๋ฅผ ํ๊บผ๋ฒ์ ์ ์ํ๋ค๊ณ ๊ฐ์ task
๊ฐ ํ๋์ธ ์ํฉ์์๋ ํฐ ๋ฌธ์ ๊ฐ ์์ ๊ฒtask
๋ฅผ ์ถ๊ฐ๋ก ๋๋ฆฌ๋ ค๊ณ ํ๋ค๋ฉด, task
์ ์ํ Web - WAS - DB ์
์ด ํ๊บผ๋ฒ์ ๋์ด๋๊ฒ ๋จScale-Out
)task
์ ๋ชจ๋ Tier ๋ฅผ ํผํฉ์์ผ ๊ตฌ์ฑํ๋ฉด Scale-Out
ํํ์ ์ฆ์ค์ ๋ถ๊ฐ๋ฅํ ๊ฒtask
์ Scale-Out
๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ์ฌ task
๋ฅผ Tier ๋จ์๋ก ๋ถ๋ฆฌํด์ ์ ์ํ๋๊ฒ ์ข์cluster A
๋ ์ธ๋ถ๋ก ๋
ธ์ถํ Web ์ปจํ
์ด๋๋ค์ ๋ฐฐํฌํ๊ณ cluster B
์๋ ์ธ๋ถ ๋
ธ์ถ์ ํ์ง ์๋ WAS ์ปจํ
์ด๋๋ฅผ ๋ฐฐํฌํ๋ค๊ณ ๊ฐ์ cluster A
์ ์ํ๋ EC2 instance
๋ค์ VPC์ Public Subnet ์ ์ํ๋๋ก ํ๊ณ , cluster B
์ ์ํ๋ EC2 instance
๋ค์ VPC์ Private Subnet์ ์ํ๋๋ก ๊ตฌ์ฑํ ์ ์์EC2 instance
๋ค์ ์ธ๋ถ ํต์ ๊ณผ ๋จ์ ๋๊ฒ ๋๋ฏ๋ก, ECS
๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด NAT Gateway
์ ๊ฐ์ ์๋น์ค๋ฅผ ์ด์ฉํด ์์๋ฐ์ด๋ ํธ๋ํฝ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํด ์ฃผ์ด์ผ ํจECS
๋ง๊ณ ๋ ์ปจํ
์ด๋ ์ด๋ฏธ์ง Repository ์๋น์ค์ธ ECR
๋ ์๋น์ค ํ๊ณ ์์ECS
์ ์ฎ์ด์ ์ฌ์ฉํ๋ค๋ฉด ๋์ฑ ์ข์ ๊ฒ