ABOUT ME

성공할 Cloud/Data Engineer입니다.

Today
Yesterday
Total
  • 세션
    Cloud 2025. 2. 24. 09:18
    728x90

    Sticky Session, 상태 유지 세션

    - 동일한 사용자의 요청을 모두 같은 EC2 인스턴스에 배분하는 기능

    - 요청이 항상 상태 정보가 있는 인스턴스에서 처리되기 때문에 해결 가능

    Auto Scaling을 병용하는 경우에는 인스턴스를 늘려도 원래 액세스하던 인스턴스에 처리되므로,

    효과를 보기가 어렵다.

     

    Session Clustering 세션 클러스터링

    - Session의 저장소끼리 Session 객체를 공유

    - WAS 간의 Session을 공유

    - 별도의 Session Server를 구성

    Session Clustering은 사용자 별로 세션을 유지해야 할 때 필요하다.

    • 세션 유지
      • HTTP는 Stateless이므로, 사용자의 로그인 정보, 장바구니 정보 등을 유지하려면 세션 관리 필요
      • 세션은 일반적으로 특정 WAS 인스턴스(WAS-1, WAS-2)에 저장되지만, 서버 장애 시 세션이 사라지는 문제 발생
    • Failover 지원
      • 사용자 세션이 특정 WAS에 유지된다면, 해당 WAS가 다운될 경우 사용자는 로그아웃되거나 세션이 초기화되는 문제가 발생
      • 세션 클러스터링을 통해 여러 WAS가 세션을 공유하면, WAS가 다운되어도 다른 WAS에서 세션 유지 가능
    • 로드 밸런싱과 병렬 처리
      • 단일 서버에서 모든 세션을 관리하면 부하가 증가하여 성능 저하
      • 여러 WAS에서 세션을 분산 처리하면 부하를 줄이고 성능을 향상시킬 수 있음

     

    구현 방법

    1) In-Memory Replication

    - 각 WAS가 자신의 메모리에 세션을 저장하면서, 다른 WAS 인스턴스와 세션 정보를 동기화

    이 방식은 메모리에서 직접 접근이 가능하므로 속도가 빠르지만, WAS 인스턴스 간 네트워크 트래픽이 증가한다.

    어느 한 WAS가 다운되어도 다른 WAS에서 세션 유지가 가능하다는 장점이 있다.

    - 소규모 트래픽일 때 적용한다

    - Tomcat, JBoss, WebLogic 등의 기본 클러스터링 기능

     

    2) Database Persistance

    - 세션 데이터를 DB에 저장하고, 모든 WAS가 해당 DB에서 세션을 공유

    이 방식은 WAS 간 네트워크 트래픽이 적어 부하가 적게 들지만, DB를 거쳐야 하기 때문에 세션 동기화 속도가 느려질 수 있다.

    또한 DB가 단일 장애 지점(SPoF)이 될 수 있다는 점도 존재한다.

    - 장기 세션 저장이 필요할 때 사용한다

    -  WebLogic JDBC Session Persistence

     

    3) External Session Storage

    - 별도의 분산 캐시 시스템 등에 세션을 저장하고, 여러 WAS가 공유

    이 방식은 빠른 읽기/쓰기 속도로 메모리 기반 저장이 가능하며, 확장성이 뛰어나다.

    DB 저장 방식보다 성능이 좋으며, 세션 유지성도 확보할 수 있다.

    - 대규모 트래픽과 고가용성 필요시에 사용

    - Spring Session + Redis, Nginx + Memcached, WebSphere + Hazelcast

     

    728x90

    'Cloud' 카테고리의 다른 글

    Session Clustering 방식  (0) 2025.02.26
    [tomcat] Database 연동  (0) 2025.02.25
    [Server] Mount  (0) 2025.02.11
    grep vs awk  (0) 2025.02.11
    [HAE Cloud] [DAY 1-2] Database  (0) 2024.08.27
Designed by Tistory.