티스토리 뷰

기초지식

세션 친화성(Session Affinity)

집사킴 2024. 9. 29. 00:48
728x90

세션 친화성(Session Affinity)이란, 특정 클라이언트의 요청이 항상 동일한 서버(또는 포드)로 전달되도록 하는 기술입니다. 이는 클라이언트가 세션 동안 동일한 서버에 연결된 상태를 유지하도록 보장하여, 예를 들어 세션 데이터를 서버 측에 저장하는 애플리케이션에서 일관성을 유지할 수 있도록 도와줍니다. 쿠버네티스에서는 서비스의 SessionAffinity 설정을 통해 클라이언트 요청을 동일한 포드로 전달할 수 있습니다.

1.  쿠키 기반 세션 (Cookie-based Session)

  • 세션 ID가 클라이언트의 브라우저 쿠키에 저장되고, 클라이언트가 서버에 요청할 때마다 해당 세션 ID를 함께 전송합니다.
  • 서버 측에서 세션 데이터를 저장하고 관리합니다.
  • 장점: 클라이언트 측에 많은 데이터를 저장할 필요가 없으며, 서버에서 데이터 일관성을 쉽게 유지할 수 있음.
  • 단점: 서버 부하가 증가할 수 있으며, 서버가 다운되면 세션 데이터가 손실될 수 있음.

2. JWT (JSON Web Token) 기반 세션

  • 세션 정보를 클라이언트 측에서 관리하며, 서버에 대한 요청 시 JWT를 포함해 인증을 수행합니다.
  • 서버는 요청을 받을 때마다 JWT의 유효성을 확인하고, 세션 상태를 확인하지 않으므로 서버에 세션 상태를 유지할 필요가 없습니다.
  • 장점: 서버의 상태를 저장하지 않아도 되므로 스케일링이 쉬움.
  • 단점: JWT는 클라이언트에 민감한 정보를 담기 때문에 보안이 중요한 이슈.

3. 데이터베이스 기반 세션 (Database-backed Session)

  • 세션 정보를 데이터베이스에 저장하여, 여러 서버에서 세션 데이터를 공유할 수 있도록 함.
  • 장점: 여러 서버 간에 일관된 세션 데이터를 사용할 수 있으며, 서버 재시작 시에도 세션이 유지됨.
  • 단점: 데이터베이스 부하가 증가할 수 있으며, 데이터베이스 연결이 끊기면 세션 정보가 손실될 수 있음.

4. 인메모리 세션 (In-Memory Session)

  • 서버의 메모리(예: Redis, Memcached)를 사용해 세션 정보를 저장하는 방식.
  • 장점: 매우 빠른 세션 조회 및 업데이트가 가능함.
  • 단점: 메모리에 저장된 세션은 서버가 재시작되면 손실될 수 있으므로, 영구적인 저장 방식이 아님.

5. IP 기반 세션 (IP-based Session Affinity)

  • 클라이언트의 IP 주소를 기준으로 동일한 서버에 요청을 계속 보내는 방식.
  • 장점: 설정이 간단하고 별도의 세션 데이터 관리가 필요 없음.
  • 단점: IP 주소가 변경될 경우 세션이 끊기고, 여러 사용자가 동일한 IP를 사용하는 경우 문제가 발생할 수 있음.

이러한 방식들은 각기 다른 상황에 맞게 선택할 수 있으며, 세션 유지와 성능, 확장성, 보안 요구사항에 따라 결정됩니다.

728x90
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함