Draining time (deregistration)
•
인스턴스가 등록 혹은 취소, 비정상적인 상태일 때 인스턴스에 어느정도 유예 시간을 두어 현재 활성된 요청을 완료할 수 있도록 하는 기능
Draining time(Deregistration)을 사용하는 이유
Draining time(Deregistration)을 사용하는 이유
Graceful Handling of Deregistration
Draining time은 Load Balancr Group에서 EC2 Instance를 제거할 때, 이를 강제로 처리하지 않고 유연하게 처리하기 위해 사용됩니다. 일반적으로 Load Balancer는 instance에 대한 요청을 중단하기 위해 instance를 제거합니다. 하지만 어떤 경우에는 instance가 요청을 완료하고 정리하는 데에 시간이 필요할 수 있습니다. Draining Time을 설정하면 instance가 Load Balancer로의 요청을 수신하다가 그룹에서 제거되기 전에 일정 시간 동안의 추가 요청을 중단하도록 할 수 있습니다. 이로써 instance는 기존 요청들을 완료한 후 제거되어 서비스의 지연이나 오류를 최소화할 수 있습니다.
Zero Downtime Deployments
Draining Time은 application version update 또는 instance의 scale in, scale out과 같은 서비스 변경 시에도 유용합니다. instance의 수가 변경될 때, 새로운 instance가 준비되고 올바르게 동작하는 것을 확인하는 데에 시간이 필요합니다. Draining Time을 사용하여 이전 버전의 instance가 완료하는 동안 새로운 버전의 instance로 요청을 라우팅하지 않도록 할 수 있습니다. 이렇게 함으로써 서비스 변경 중에도 사용자에게 제공되는 서비스의 지속성을 보장할 수 있습니다
Connection Management
Draining Time은 연결 관리를 돕습니다. Load Balancer가 요청을 처리하는 동안 기존 연결을 유지하거나 새로운 연결을 설정하는 데에도 시간이 필요할 수 있습니다. Draining Time을 설정하면 기존 연결을 유지하거나 새로운 연결이 설정되지 않도록 하여 불완전한 연결이 발생하는 것을 방지할 수 있습니다.
Reduced Error Rates
instance가 즉시 Load Balancer에서 제거되면, 클라이언트 측에서 에러가 발생할 수 있습니다. Draining Time을 설정하면 instance가 제거되기 전에 일정 시간 동안의 요청을 처리할 수 있으므로, Client에 대한 에러가 줄어들 수 있습니다.

