ECS의 Health Check Grace Period 설정

숭맹이·2025년 2월 3일
0

1. Health Check Grace Period란?

Health Check Grace Period는 ECS에서 컨테이너가 시작된 직후 일정 시간 동안 Health Check를 면제해주는 유예 기간입니다. 이 설정은 특히 애플리케이션이 초기화하는 데 시간이 걸리는 경우에 유용합니다. 초기화 시간 동안 Health Check에 실패하여 컨테이너가 불필요하게 재시작되는 상황을 방지할 수 있습니다.

왜 필요한가?

  • 애플리케이션 초기화 시간: 데이터베이스 연결, 캐시 로딩 등으로 인해 애플리케이션이 정상적으로 요청을 처리하기까지 시간이 필요할 수 있습니다.
  • 불필요한 재시작 방지: 초기화 시간이 Health Check 주기보다 길다면 컨테이너가 시작되자마자 실패로 간주되어 재시작될 수 있습니다.
  • 서비스 안정성: 유예 기간을 통해 서비스가 안정적으로 구동된 후 Health Check를 시작함으로써 전체 시스템의 안정성을 보장할 수 있습니다.

2. Health Check Grace Period 설정 방법

AWS Management Console을 통한 설정

  1. ECS 클러스터로 이동: AWS Management Console에서 해당 ECS 클러스터를 선택합니다.
  2. 서비스 선택: Health Check Grace Period를 설정하려는 서비스를 선택합니다.
  3. 서비스 수정: ‘Update’ 버튼을 클릭하여 서비스 설정을 수정합니다.
  4. Advanced Health Check 설정: Advanced Settings에서 Health Check Grace Period 항목을 찾습니다.
  5. 유예 시간 입력: 적절한 시간을 초 단위로 입력합니다 (예: 300초).
  6. 저장 및 배포: 설정을 저장하고 서비스를 업데이트합니다.

AWS CLI를 통한 설정

AWS CLI를 사용하여 설정할 수도 있습니다. 아래는 예제 명령어입니다.

aws ecs update-service \
    --cluster <클러스터 이름> \
    --service <서비스 이름> \
    --health-check-grace-period-seconds 300

여기서 <클러스터 이름><서비스 이름>을 자신의 환경에 맞게 변경하세요.

CloudFormation을 통한 설정

인프라를 코드로 관리하는 경우, CloudFormation 템플릿에 아래와 같이 설정할 수 있습니다.

Resources:
  MyService:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !Ref MyCluster
      TaskDefinition: !Ref MyTaskDefinition
      HealthCheckGracePeriodSeconds: 300

3. 실전에서의 고려사항

적절한 유예 시간 설정

  • 애플리케이션 특성 분석: 초기화에 걸리는 시간을 실제로 측정하고, 그에 약간의 여유를 두어 설정합니다.
  • 테스트 환경과의 차이: 개발 및 테스트 환경에서 정상적으로 동작한다고 하더라도, 프로덕션 환경에서는 네트워크 지연, 데이터베이스 부하 등으로 인해 초기화 시간이 달라질 수 있습니다.

Auto Scaling과의 연계

Auto Scaling 정책을 설정할 때 Health Check Grace Period를 충분히 고려하지 않으면, 스케일 아웃된 인스턴스가 정상적으로 기동되기도 전에 비정상으로 간주될 수 있습니다. 이는 불필요한 리소스 낭비와 서비스 불안정을 초래할 수 있습니다.

CloudWatch 모니터링

Health Check Grace Period 설정 후에도 CloudWatch 로그를 통해 서비스의 상태를 지속적으로 모니터링해야 합니다. 이를 통해 유예 시간이 충분한지, 혹은 과도하게 설정되었는지를 판단할 수 있습니다.

profile
👨🏻‍💻 Backend Developer

0개의 댓글