[고가용성 및 스케일링성] Elastic Load Balancer - 고정 세션 (Sticky Sessions)

IMKUNYOUNG·2024년 8월 10일
0

AWS-SAA

목록 보기
33/91

일래스틱 로드 밸런서(Elastic Load Balancer, ELB)는 여러 EC2 인스턴스에 걸쳐 트래픽을 분산하여 애플리케이션의 가용성과 확장성을 보장하는 중요한 AWS 서비스입니다. 이 과정에서 클라이언트의 요청이 특정 인스턴스로 고정되어야 하는 경우가 있는데, 이를 고정 세션 혹은 세션 밀접성(Session Stickiness)이라고 합니다. 이번 포스트에서는 고정 세션의 개념과 이를 구현하는 방법에 대해 살펴보겠습니다.

고정 세션이란

고정 세션은 클라이언트가 ELB를 통해 두 개 이상의 요청을 보낼 때, 첫 번째 요청이 할당된 동일한 백엔드 인스턴스가 후속 요청에도 응답하도록 하는 기능입니다. 예를 들어, 두 개의 EC2 인스턴스와 세 개의 클라이언트가 연결된 애플리케이션 로드 밸런서(ALB)가 있다고 가정해봅시다.

1번 클라이언트가 첫 번째 요청을 보내면, 그 요청은 첫 번째 EC2 인스턴스에 전달됩니다. 고정 세션이 활성화된 경우, 이 클라이언트의 후속 요청은 로드 밸런서가 자동으로 동일한 인스턴스에 연결하게 됩니다. 반면, 2번 클라이언트가 요청을 보내면 이 요청은 두 번째 인스턴스에 할당될 수 있으며, 이후 이 클라이언트의 요청은 계속해서 두 번째 인스턴스에 연결됩니다. 3번 클라이언트도 동일한 방식으로 작동합니다.

이 기능은 모든 요청을 인스턴스 간에 골게 분산시키는 기본 로드 밸런싱 동작과는 다릅니다. 고정 세션은 사용자의 로그인 상태 유지와 같은 중요한 세션 데이터를 보호하는 데 특히 유용합니다.

고정 세션의 원리: 쿠키

고정 세션의 작동 원리는 쿠키(Cookie)에 있습니다. 이 쿠키는 클라이언트가 요청을 보낼 때 로드 밸런서로 전송되며, 특정 인스턴스에 대한 연결을 유지하는 데 사용됩니다.

쿠키에는 두 가지 주요 유형이 있습니다:

  1. 애플리케이션 기반 쿠키(Application-based Cookies)
    애플리케이션이 생성하는 사용자 정의 쿠키로, 애플리케이션의 요구에 맞게 다양한 속성을 포함할 수 있습니다. 이러한 쿠키의 이름은 각 대상 그룹별로 개별적으로 지정되어야 하며, AWSALB, AWSALBAPP, AWSALBTG와 같은 이름은 피해야 합니다. 이 이름들은 ELB에서 예약되어 있기 때문입니다.

  2. 기간 기반 쿠키(Duration-based Cookies)
    로드 밸런서 자체에서 생성되는 쿠키로, ALB에서는 AWSALB, CLB에서는 AWSELB라는 이름을 가집니다. 이 쿠키는 특정 기간이 지나면 만료되며, 만료된 후 클라이언트는 다른 EC2 인스턴스로 리디렉션될 수 있습니다. 반면, 애플리케이션 기반 쿠키의 경우, 애플리케이션이 기간을 직접 지정할 수 있습니다.

고정 세션의 이점과 고려사항

고정 세션을 사용하면 중요한 세션 정보를 보호하고, 사용자 경험을 향상시킬 수 있습니다. 특히 사용자 인증이 필요한 애플리케이션에서 유용합니다. 그러나 고정 세션을 활성화하면 백엔드 EC2 인스턴스 간의 부하가 불균형해질 수 있습니다. 일부 인스턴스에 특정 클라이언트의 요청이 집중될 수 있기 때문입니다. 따라서 고정 세션을 사용할 때는 이러한 부하 분산의 문제를 고려해야 합니다.

마치며

고정 세션은 일래스틱 로드 밸런서를 통해 트래픽을 관리하는 데 있어서 중요한 기능입니다. 이를 활용해 사용자 세션을 보호하고, 애플리케이션의 안정성을 높일 수 있습니다. 로드 밸런서에서 사용하는 쿠키의 유형과 동작 원리를 이해하는 것은 고정 세션을 효율적으로 구현하는 데 필수적입니다. AWS에서 로드 밸런싱을 최적화하려는 경우, 고정 세션과 쿠키에 대한 이해를 통해 더욱 신뢰할 수 있는 서비스를 제공할 수 있을 것입니다.

0개의 댓글