주요 콘텐츠로 건너뛰기

정상 종료

Glasswall Halo는 종료 프로세스 중 새 요청은 거부하면서 진행 중인 요청은 완료할 수 있도록 정상 종료를 구현합니다.

이를 통해 미처리 작업이 올바르게 처리되고 데이터 손실이나 부분적으로만 처리된 요청의 위험이 줄어듭니다.

동기식 API 및 비동기식 API

Glasswall Halo API는 ASP.NET Core의 정상 종료(graceful shutdown) 메커니즘을 사용합니다. 자세한 내용은 Kestrel 종료 타임아웃에 대한 Microsoft 설명서에서 확인할 수 있습니다.

기본적으로 종료 타임아웃은 60초로 설정됩니다. 이 값은 종료가 시작된 후 열려 있는 연결이 강제로 닫히기 전에 서버가 얼마나 오래 대기할지를 정의합니다.

이 기간 동안:

  • Kestrel은 진행 중인 요청 처리가 완료되기를 기다립니다.
  • 새 연결이나 요청은 더 이상 허용되지 않습니다.

종료 타임아웃이 경과한 후에도 일부 백그라운드 작업은 계속 실행될 수 있습니다. 이 동작은 호스팅 서비스 중지 처리에 대한 Microsoft 설명서에 설명되어 있습니다.

취소가 요청된 이후에도 작업은 중단되지 않습니다. 호스트는 최종 종료 전에 모든 작업이 완료될 때까지 기다립니다.

Report aggregator 및 Engine 서비스

Report AggregatorEngine 서비스는 호스팅 서비스로 구현되어 있어, 서비스 시작 및 종료 중에 사용자 지정 로직을 실행할 수 있습니다.

자세한 내용은 IHostedService에 대한 Microsoft 설명서에서 확인할 수 있습니다.

종료가 시작되면:

  • 두 서비스 모두 처리 중인 요청이 완료되도록 허용합니다.
  • 기본 종료 타임아웃 5초가 적용됩니다.
  • 타임아웃을 초과하면 서비스가 강제로 종료됩니다.

이 설계는 신뢰성과 종료 속도의 균형을 맞추면서 예측 가능한 종료 동작을 보장합니다.