01. Amazon ECS - EC2 Launch Type

EC2 μ‹œμž‘μœ ν˜•μ— λŒ€ν•΄ μ‚΄νŽ΄λ³΄μž.

image-20221020020140062

  • ECS = Elastic Container Service
  • AWS μ—μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λ©΄ ECS ν΄λŸ¬μŠ€ν„°μ—, 이λ₯Έλ°” ECS Task(νƒœμŠ€ν¬) λ₯Ό μ‹€ν–‰ν•˜λŠ” 것
  • EC2 ν΄λŸ¬μŠ€ν„°μ—λŠ” EC2 μ‹œμž‘μœ ν˜•, λ°”λ‘œ EC2 μΈμŠ€ν„΄μŠ€μ΄λ‹€.
  • EC2 μ‹œμž‘μœ ν˜•μœΌλ‘œ EC2 ν΄λŸ¬μŠ€ν„°λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 인프라λ₯Ό 직접 ν”„λ‘œλΉ„μ €λ‹ν•˜κ³  μœ μ§€ν•΄μ•Ό ν•œλ‹€.
  • 즉, ECS 및 ECSν΄λŸ¬μŠ€ν„°κ°€ μ—¬λŸ¬ EC2 μΈμŠ€ν„΄μŠ€λ‘œ κ΅¬μ„±λ˜κ²Œ λœλ‹€.


  • μ΄λ•Œ, ECS μΈμŠ€ν„΄μŠ€λŠ” νŠΉλ³„ν•˜κ²Œ 각각 ECS Agent λ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•œλ‹€.
  • 그럼 ECS Agentκ°€ 각각의 EC2 μΈμŠ€ν„΄μŠ€λ₯Ό Amazon ECS μ„œλΉ„μŠ€μ™€ μ§€μ •λœ ECS ν΄λŸ¬μŠ€ν„°μ— λ“±λ‘ν•œλ‹€.
  • 이후에 ECS Task λ₯Ό μˆ˜ν–‰ν•˜κΈ° μ‹œμž‘ν•˜λ©΄, AWSκ°€ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹œμž‘ν•˜κ±°λ‚˜ 멈좜 것이닀.
  • 즉, μƒˆ 도컀 μ»¨ν…Œμ΄λ„ˆκ°€ 생기면 μ‚¬μ§„μ—μ„œ λ³Ό 수 μžˆλ“― μ‹œκ°„μ— 따라 EC2 μΈμŠ€ν„΄μŠ€κ°€ 지정될것이닀.
  • ECS Task λ₯Ό μ‹œμž‘ν•˜κ±°λ‚˜, λ©ˆμΆ”λ©΄ μžλ™μœΌλ‘œ μœ„μΉ˜κ°€ μ§€μ •λœλ‹€. λ°”λ‘œ 이게 EC2 Launch Type 이닀. (μ‹œμž‘μœ ν˜•)
  • 도컀 μ»¨ν…Œμ΄λ„ˆλŠ” 미리 ν”„λ‘œλΉ„μ €λ‹ν•œ Amazon EC2 μΈμŠ€ν„΄μŠ€μ— μœ„μΉ˜ν•œλ‹€.

02. Amazon ECS - Fargate Launch Type

λ‘λ²ˆμ§Έ μœ ν˜•μœΌλ‘œλŠ” Fargate μ‹œμž‘μœ ν˜•μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž.

image-20221020020351777

  • λ§ˆμ°¬κ°€μ§€λ‘œ AWS에 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λŠ”λ°, μ΄λ²ˆμ—λŠ” 인프라λ₯Ό ν”„λ‘œλΉ„μ €λ‹ν•˜μ§€ μ•Šμ•„ 관리할 EC2 μΈμŠ€ν„΄μŠ€κ°€ μ—†λ‹€.
  • 즉 μ„œλ²„λ¦¬μŠ€ 이닀.
  • μ„œλ²„λ₯Ό κ΄€λ¦¬ν•˜μ§€ μ•Šμ•„ μ„œλ²„λ¦¬μŠ€λΌ λΆ€λ₯΄λŠ”데, μ„œλ²„κ°€ μ—†λŠ”κ²ƒμ€ μ•„λ‹ˆλ‹€.
  • Fargate μœ ν˜•μ€ ECS ν΄λŸ¬μŠ€ν„°κ°€ μžˆμ„ λ•Œ ECS Taskλ₯Ό μ •μ˜ν•˜λŠ” Task Definition (νƒœμŠ€ν¬ μ •μ˜)만 μƒμ„±ν•˜λ©΄ AWSκ°€ ν•„μš”ν•œ CPUλ‚˜ RAM에 따라 ECS νƒœμŠ€ν¬λ₯Ό λŒ€μ‹  μ‹€ν–‰ν•©λ‹ˆλ‹€.
  • 즉, μƒˆ 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ–΄λ””μ„œ μ‹€ν–‰λ˜λŠ”μ§€ μ•Œλ¦¬μ§€ μ•Šκ³  κ·Έλƒ₯ μ‹€ν–‰λ©λ‹ˆλ‹€.
  • μž‘μ—…μ„ μœ„ν•΄ λ°±μ—”λ“œμ— EC2 μΈμŠ€ν„΄μŠ€κ°€ 생성될 ν•„μš”λ„ μ—†λ‹€. (μ•„μ£Ό 신기함 γ…Ž)
  • ν™•μž₯ν•˜λ €λ©΄ κ°„λ‹¨ν•˜κ²Œ Task 수만 늘리면 λœλ‹€.
  • EC2 μΈμŠ€ν„΄μŠ€λ₯Ό 관리할 ν•„μš”κ°€ μ—†λ‹€.

  • μ‹œν—˜μ—μ„œλŠ” μ„œλ²„λ¦¬μŠ€μΈ Fargate λ₯Ό μ‚¬μš©ν•˜λΌλŠ”κ²Œ 자주 λ‚˜μ˜¨λ‹€.
  • EC2 μ‹œμž‘μœ ν˜•λ³΄λ‹€ 관리가 쉽기 λ•Œλ¬Έμ΄λ‹€.

03. Amazon ECS - IAM Roles for ECS

Amazon ECS 의 2가지 μ‹œμž‘μœ ν˜•μ„ μ•Œμ•„λ³΄μ•˜μœΌλ‹ˆ, ECS Task에 IAM 역할에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜μž

image-20221020020949349

  • EC2 Instance Profile

    • EC2 μ‹œμž‘μœ ν˜•μ—μ„œλ§Œ μ‚¬μš©λ¨ (Fargate λŠ” μ‚¬μš©μ•ˆν•¨)
    • EC2 μΈμŠ€ν„΄μŠ€κ°€ Docker, ECS Agent 2개λ₯Ό μ‹€ν–‰ν•œλ‹€κ³  ν•˜κ³ , EC2 μ‹œμž‘μœ ν˜•μ„ μ‚¬μš©ν•œλ‹€λ©΄
    • EC2 μΈμŠ€ν„΄μŠ€ ν”„λ‘œνŒŒμΌμ„ μƒμ„±ν•˜κ²Œ λœλ‹€.
    • ECS Agentκ°€ EC2 μΈμŠ€ν„΄μŠ€ ν”„λ‘œνŒŒμΌμ„ μ΄μš©ν•΄ API ν˜ΈμΆœμ„ λ§Œλ“€κ²Œ λœλ‹€.
    • 그럼 μΈμŠ€ν„΄μŠ€κ°€ μ €μž₯된 ECS μ„œλΉ„μŠ€κ°€ CloudWatch λ‘œκ·Έμ— API ν˜ΈμΆœμ„ ν•΄μ„œ μ»¨ν…Œμ΄λ„ˆ 둜그λ₯Ό 보내고,
      ECR λ‘œλΆ€ν„° 도컀 이미지λ₯Ό κ°€μ Έμ˜¨λ‹€.
    • Secret Manager λ˜λŠ” SSM Parameter Store μ—μ„œ ν™˜κ²½λ³€μˆ˜ or 민감데이터λ₯Ό μ°Έκ³ ν•˜κΈ°λ„ ν•œλ‹€.


  • ECS Task Role

    • ECS TaskλŠ” 각각 ECS Task Role λ₯Ό κ°€μ§€κ²Œ λœλ‹€.
    • 이것은 EC2 와 Fargate μ‹œμž‘μœ ν˜• λͺ¨λ‘ ν•΄λ‹Ήλ˜λ©° 두 개의 νƒœμŠ€ν¬κ°€ μžˆλ‹€λ©΄ 각자의 νŠΉμ • 역할을 λ§Œλ“€μˆ˜μžˆλ‹€.
    • μœ„μ˜ 그림에 λͺ¨μžμ²˜λŸΌ νƒœμŠ€ν¬A λŠ” EC2 νƒœμŠ€ν¬ A 역할을 맑고, νƒœμŠ€ν¬BλŠ” EC2 νƒœμŠ€ν¬ B역할을 λ§‘λŠ”λ‹€.
    • 역할을 λ‹€λ₯΄κ²Œ ν•˜λŠ” 이유
      • 역할이 각자 λ‹€λ₯Έ ECS μ„œλΉ„μŠ€μ— μ—°κ²°ν•  수 있게 ν•˜κΈ° λ•Œλ¬Έ
      • 예λ₯Όλ“€μ–΄, EC2 νƒœμŠ€ν¬ A역할은 νƒœμŠ€ν¬ Aκ°€ S3에 API ν˜ΈμΆœμ„ μ‹€ν–‰ν• μˆ˜ 있또둝 ν•œλ‹€λ©΄
      • νƒœμŠ€ν¬ BλŠ”, DynamoDB에 APIλ₯Ό ν˜ΈμΆœμ„ μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•œλ‹€.
    • ECS μ„œλΉ„μŠ€μ˜ Task Definition μ—μ„œ Task Role 을 μ •μ˜ν•  수 μžˆλ‹€.

    EC2 ν”„λ‘œνŒŒμΌ μ—­ν• κ³Ό ECS νƒœμŠ€ν¬ μ—­ν• μ˜ 차이점을 κΈ°μ–΅ν•΄μ•Ό ν•œλ‹€.

    04. Amazon ECS - Load Balancer Integrations

    ECS λ‘œλ“œλ°ΈλŸ°μ„œ 톡합에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

image-20221025000629403

  • EC2 μ‹œμž‘μœ ν˜•μœΌλ‘œ μ˜ˆμ‹œλ₯Ό λ“€μ–΄ μ„€λͺ…ν•˜μ§€λ§Œ, Fargate μ‹œμž‘μœ ν˜•λ„ λ§ˆμ°¬κ°€μ§€μ΄λ‹€.
  • μ—¬κΈ° μ—¬λŸ¬ ECS νƒœμŠ€ν¬λ“€μ΄ μ‹€ν–‰λ˜λ©°, ECS ν΄λŸ¬μŠ€ν„° μ•ˆμ— μžˆμŠ΅λ‹ˆλ‹€.
  • HTTPλ‚˜ HTTPS μ—”λ“œ 포인트둜 νƒœμŠ€ν¬λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ ALB λ₯Ό μ•žμ—μ„œ μ‹€ν–‰ν•˜λ©΄ λͺ¨λ“  μ‚¬μš©μžλ“€μ΄ ALB 및 λ°±μ—”λ“œμ˜ ECS νƒœμŠ€ν¬μ— λ°”λ‘œ λ„λ‹¬ν•œλ‹€.
  • ALB λŠ” 이런 경우λ₯Ό 포함해 λŒ€λΆ€λΆ„μ˜ μ‚¬μš©μ‚¬λ‘€λ₯Ό μ§€μ›ν•œλ‹€.

  • λ„€νŠΈμ›Œν¬ λ‘œλ“œ λ°ΈλŸ°μ„œ(NBL) λŠ” μ²˜λ¦¬λŸ‰μ΄ 맀우 λ§Žκ±°λ‚˜ 높은 μ„±λŠ₯이 μš”κ΅¬λ  λ•Œλ§Œ ꢌμž₯ν•œλ‹€.
  • AWS Private Link와 μ‚¬μš©ν•  떄도 ꢌμž₯ν•œλ‹€.
  • 였래된 μ„ΈλŒ€μΈ ELBλŠ” μ‚¬μš©ν• μˆ˜ μžˆμ§€λ§Œ ꢌμž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • κ³ κΈ‰ κΈ°λŠ₯이 μ—†μ„λΏλ”λŸ¬ Fargate μ™€λŠ” μ—°κ²°ν•  μˆ˜κ°€ μ—†λ‹€.
    • 반면 ALB λŠ” Fargate 와도 μ‚¬μš©ν•  수 μžˆλ‹€.

05. Amazon ECS - Data Volumes (EFS)

ECS 의 데이터 지속성에 λŒ€ν•΄ μ•Œμ•„λ³΄μž

image-20221025001025211

  • 데이터 λ³Όλ₯¨μ΄ ν•„μš”ν•˜λ©° μ—¬λŸ¬ μ’…λ₯˜κ°€ μžˆλŠ”λ° κ·Έ 쀑 ν•˜λ‚˜κ°€ EFSμ—μ„œ 자주 μ‚¬μš©λœλ‹€.
  • ECS ν΄λŸ¬μŠ€ν„°μ— EC2 μΈμŠ€ν„΄μŠ€μ™€ Fargate μ‹œμž‘μœ ν˜• λ‘˜λ‹€ κ΅¬ν˜„ν–ˆλ‹€κ³  κ°€μ •ν•œλ‹€.
  • EC2 νƒœμŠ€ν¬μ— 파일 μ‹œμŠ€ν…œμ„ λ§ˆμš΄νŠΈν•΄μ„œ 데이터λ₯Ό κ³΅μœ ν•˜λ €κ³  ν•œλ‹€.
    • EFS 파일 μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜λŠ”κ²Œ μ’‹λ‹€
    • λ„€νŠΈμ›Œν¬ 파일 μ‹œμŠ€ν…œμ΄λΌ EC2 와 Fargate λͺ¨λ‘ ν˜Έν™˜μ΄ 되고,
    • EC2 νƒœμŠ€ν¬μ— 파일 μ‹œμŠ€ν…œμ„ 직접 λ§ˆμš΄νŠΈν•  수 μžˆλ‹€.
  • μ–΄λŠ AZ에 μ‹€ν–‰λ˜λŠ” νƒœμŠ€ν¬λ“  Amazon EFS 에 μ—°κ²°λ˜μ–΄ μžˆλ‹€λ©΄ 데이터λ₯Ό κ³΅μœ ν• κ±°κ³  μ›ν•œλ‹€λ©΄ νŒŒμΌμ‹œμŠ€ν…œμ„ 톡해 λ‹€λ₯Έ νƒœμŠ€ν¬μ™€ μ—°κ²°ν•  수 있기 λ•Œλ¬Έμ΄λ‹€.
  • λ”°λΌμ„œ Fargate 둜 μ„œλ²„λ¦¬μŠ€λ°©μ‹μœΌλ‘œ ECS νƒœμŠ€ν¬λ₯Ό μ‹€ν–‰ν•˜κ³  파일 μ‹œμŠ€ν…œ 지속성을 μœ„ν•΄ Amazon EFS λ₯Ό μ‚¬μš©ν•˜λŠ”κ²Œ κ°€μž₯ μ’‹λ‹€.

  • EFS μ—­μ‹œ μ„œλ²„λ¦¬μŠ€μ΄κΈ° λ•Œλ¬Έμ— μ„œλ²„λ₯Ό 관리할 ν•„μš”κ°€ μ—†κ³  미리 λΉ„μš©μ„ μ§€λΆˆν•œλ‹€.
  • 미리 ν”„λ‘œλΉ„μ €λ‹ν•˜λ©΄ λ¬Έμ œκ°€ μ—†λ‹€.
  • μ‚¬μš©μ‚¬λ‘€λ‘œλŠ” EFS 와 ECSλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•΄μ„œ 닀쀑 AZκ°€ κ³΅μœ ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆμ˜ 영ꡬ μŠ€ν† λ¦¬μ§€κ°€ μžˆλ‹€.
  • μ‹œν—˜μ—μ„œ μ£Όμ˜ν• μ μ€ ν˜„μž¬ ECS κ°€ Lustre용 FSxλŠ” μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • 또 ECS νƒœμŠ€ν¬μ˜ 파일 μ‹œμŠ€ν…œμœΌλ‘œ Amazon S3 버킷을 λ§ˆμš΄νŠΈν• μˆ˜ μ—†λ‹€.

λŒ“κΈ€λ‚¨κΈ°κΈ°