새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.
TIL) 세션은 왜 메모리에 저장할까?
📌 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. 결론
- 세션 데이터는 메모리 저장소가 더 적합하다.
- 조회 및 갱신 빈도가 높고, 영속성이 필요하지 않기 때문에 메모리를 사용하는 것이 성능적으로 유리하다.
댓글남기기