새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.

2 분 소요

📌 2025-02-17 TIL

1. 오늘의 학습 주제

  • 세션은 왜 메모리에 저장할까?

2. 학습 내용 요약

📌 세션 저장소 비교 (메모리 DB vs 디스크 DB)

기준 메모리 DB (Redis 등) 디스크 DB (MySQL, PostgreSQL 등)
속도 (Latency) ⭐⭐⭐⭐⭐ (빠름) ⭐⭐ (느림)
동시 요청 처리 (Concurrency) ⭐⭐⭐⭐⭐ (우수) ⭐⭐ (병목 발생 가능)
I/O 병목 현상 ⭐⭐⭐⭐⭐ (단일 서버 기준 적음) ⭐⭐ (발생 가능)
트랜잭션 필요성 ⭐ (불필요) ⭐⭐⭐⭐⭐ (필수)
데이터 영속성 ⭐ (휘발성) ⭐⭐⭐⭐⭐ (영속적)
비용 ⭐⭐ (RAM 비용 높음) ⭐⭐⭐⭐⭐ (저장 공간 저렴)
데이터 크기 부담 ⭐⭐⭐⭐⭐ (작음) ⭐⭐⭐ (다소 부담)
총합 24점 19점

💡 결론:
세션 저장소로는 메모리 DB가 더 적합함!
빠른 속도 & 높은 동시 처리 능력
✔ I/O 병목이 디스크보다 적음
✔ 세션 데이터는 작고 영속성이 필요 없으므로 RAM 용량 부담 없음

반대로 영속성과 트랜잭션이 중요한 데이터는 디스크 DB가 적절하다.

3. 핵심 트레이드 오프 및 고민

세션 저장소로 메모리를 사용할까?

세션을 관리할 때는 빠른 접근 속도가 중요합니다.
사용자의 요청마다 세션을 조회해야 하니까 지연이 발생하면 UX에 영향을 미칠 수 있습니다.

메모리 접근 속도가 디스크보다 수천배가 빠릅니다.

세션 조회는 로그인한 사용자에게 자주 발생하는 요청이므로, 지연이 있으면 서비스 응답이 느려집니다.

많은 사용자가 동시에 접근하더라도 메모리는 빠르게 처리가 가능합니다.

디스크에 저장하면 안되나?

읽기/쓰기 성능 문제가 발생할 수 있습니다. 자주 조회되고 갱신이 되는데, 디스크 DB에 부하가 심해질 수 있습니다.
트랜잭션 오버헤드가 발생할 수 있습니다. 디스크 DB 트랜잭션을 보장해야하므로, 세션 데이터를 읽고 수정하는 비용이 발생합니다.

지속성이 필요없습니다 세션 데이터는 휘발성이기 때문에 굳이 영구 저장할 필요가 없습니다. 오히려 세션이 오래 유지되면 보안 리스크도 증가할 수 있습니다.

정리

데이터 저장소 결정 기준 정리

1. 데이터 특성에 따른 저장 위치 결정

  • 데이터의 특성에 따라 메모리 또는 디스크 저장소를 선택해야 한다.
  • 주요 기준: 휘발성 여부, 영속성 필요성, 조회 및 갱신 빈도, 데이터 크기

2. 세션 데이터의 특성

  • 휘발성: 세션 데이터는 서비스 종료 시 없어져도 무방하다.
  • 영속성 불필요: 세션 데이터는 영구적으로 보관할 필요가 없다.
  • 용량이 작음: 세션 데이터는 상대적으로 작은 크기(몇 KB 수준)이다.
  • 조회 및 갱신 빈도가 높음: 로그인 세션과 같은 데이터는 자주 조회되거나 갱신된다.

3. 메모리 저장소를 사용하는 이유

  • 빠른 읽기/쓰기 속도: 메모리는 디스크보다 속도가 빠르다.
  • 낮은 지연 시간: 메모리 접근은 디스크 I/O보다 지연이 적다.
  • 동시 요청 처리에 유리: 다수의 동시 요청에도 성능 저하가 덜 발생한다.

4. 디스크 저장소가 적합한 경우

  • 영속성이 필요한 데이터: 예) 주문 정보, 결제 내역
  • 트랜잭션이 중요한 경우: 데이터 정합성이 보장되어야 하는 경우
  • 대용량 데이터: 메모리는 저장 용량이 제한되므로 대용량 데이터는 디스크에 적합하다.

5. 결론

  • 세션 데이터메모리 저장소가 더 적합하다.
  • 조회 및 갱신 빈도가 높고, 영속성이 필요하지 않기 때문에 메모리를 사용하는 것이 성능적으로 유리하다.

댓글남기기