세션의 차이점

YJS·2022년 7월 11일
0

세션이란?

서버에 정보를 잠시 저장할 수 있는 공간

💡쿠키 vs 세션

쿠키는 클라이언트에 정보를 잠시 저장할 수 있는 특별한 저장공간

-> 브라우저가 서버로 요청을 할때 쿠키를 요청서에 포함시킴. 클라이언트를 구분하기 위해 쿠키를 활용.(서버가 클라이언트를 어떤 방법으로 추적할 것인지를 정의한 세션 트래킹 모드 중에서 대부분 서버에서 쿠키 사용 모드를 기본 값으로 사용 및 권장.)

세션은 서버에 정보를 잠시 저장할 수 있는 특별한 저장공간


출처: https://thecodinglog.github.io/web/2020/08/11/what-is-session.html

-> 🤓흐름
1. 세션 정보를 저장하고 있는 서버가 클라이언트 구분을 위해 세션ID를 발급
2. 클라이언트는 발급받은 ID를 쿠키에 저장
3. 클라이언트의 요청이 오면 쿠키에 담긴 ID를 같이 보내줘어서 서버가 각 클라이언트를 구분

😵‍💫세션 공유

여러대의 서버를 동시에 운용할 경우 클라이언트의 요청이 다른 서버로 전달되면 세션 정보를 찾을 수 없어 새로운 세션ID가 발행되는 문제가 발생.
-> 여러대의 서버를 동시에 운영하기 위해 세션을 동기화시킬 수 있는 방안을 마련해야함

  1. Sticky Session
    클라이언트별로 담당 처리 서버를 지정하는 방법.
    최초 요청을 받은 서버가 해당 클라이언트에 대한 요청을 모두 책임지는 형태. 구현이 간단하고 응답 속도가 빠르지만 한 서버에 부하가 집중될 위험이 존재. 서버가 다운되면 모든 세션 정보가 손실됨.
  2. Session Clustering
    서버끼리 자기 서버에 보관하고 있는 세션의 변경사항을 실시간으로 주고받는 방법.
    TCP Socket으로 세션 정보를 서버끼리 공유.
    사용자에게 빠른 응답 가능. 서버 하나가 다운되도 세션이 손실되지 않는다는 장점. 소규모 시스템에 적용 용이.
  3. Session Server
    세션 정보를 서버가 아닌 다른 외부 저장소에 저장하는 방법.
    최초 요청을 받은 서버가 세션 정보를 외부 저장소에 저장. 응답 속도가 느리고 세션 서버가 죽으면 모든 서비스가 중단되는 위험 존재.

Disk Based Database vs In Memory Database

  1. 디스크 기반 데이터베이스

    데이터를 디스크에 저장, 관리하는 데이터 베이스.
    e.g. Oracle, MySQL, MS-SQL등

-> 지속성 및 안정성 보장
-> 가격이 저렴하여 쉽게 확장 가능 = 대용량 데이터 저리 용이
-> 속도의 한계
(메모리에 임시 저장소인 버퍼를 마련하여 데이터를 관리. 버퍼를 경유하여 필요한 데이터만 메모리로 로딩.디스크에서 데이터 찾는 대기시간, 디스크에서 버퍼로의 데이터 전송시간 등 병목 현상 발생.)

  1. 인메모리 데이터베이스

    데이터를 디스크가 아닌 메모리에 저장하고 관리
    e.g. Redis, H2, memcached 등

->데이터 접근 속도가 빠름
(모든 작업을 메모리에서 수행하여 디스크I/O 발생하지 않음. 불필요한 임시 데이터 발생하지 않음.)
-> 디스크에 비해 상대적으로 높은 가격
-> 주 저장소인 메모리가 휘발성
(서버 장애 발생 시 데이터 소실 위험 존재)


출처: https://chagokx2.tistory.com/94

profile
우당탕탕 개발 일기

0개의 댓글