Go + DynamoDB: TLS Handshake 문제 해결기
by DD
4년 전
조회수 6
DynamoDB 응답 시간 증가 원인으로 TLS Handshake 문제점을 파악함
TLS Session Resumption 미지원으로 인해 커넥션 재사용에 어려움 겪음
적절한 타임아웃 설정 및 커넥션 풀 관리로 응답 시간 개선 시도
TLS Handshake 과정 심층 분석
TLS Handshake는 보안 연결을 위한 초기 과정으로, Client Hello와 Server Hello 메시지 교환을 통해 이루어진다. 구체적으로, 세션 재개(Session Resumption)를 통해 핸드셰이크 과정을 생략하여 응답 시간 단축을 시도할 수 있다. 하지만, DynamoDB는 세션 재개를 지원하지 않아 어려움이 있었다.
타임아웃 설정과 커넥션 풀 관리의 중요성
짧은 타임아웃 설정은 재시도를 유발하여 오히려 TLS Handshake 빈도를 증가시킬 수 있다. 따라서, 적절한 타임아웃 값을 설정하여 재시도 횟수를 줄이고, 커넥션 풀을 통해 유휴 커넥션을 관리하는 것이 중요하다. 반면, IdleConnTimeout 증가는 DynamoDB 서버에 의해 커넥션이 끊길 수 있다.
DynamoDB 아키텍처와 최적화 전략
DynamoDB는 여러 Request Router 인스턴스를 통해 요청을 처리하며, 클라이언트의 커넥션 관리가 서버 가용성에 영향을 미칠 수 있다. 따라서, 더미 트래픽을 이용한 커넥션 유지는 코드 복잡도를 증가시키므로, 타임아웃 조정과 커넥션 풀 관리를 통해 응답 시간 최적화를 시도하는 것이 효과적이다.