캐싱과 세션의 차이점
캐싱과 세션의 차이점
Summary 캐싱은 자주 조회되는 데이터를 빠르게 제공하여 시스템 성능을 개선하고, 세션은 사용자별 상태를 유지하여 일관된 사용자 경험을 제공합니다. Redis는 메모리 기반으로 빠른 읽기/쓰기를 지원하며, 다양한 자료구조와 확장성을 통해 캐싱과 세션을 효과적으로 관리합니다.
아래는 Redis에서의 **캐싱(Cache)**과 **세션(Session)**을 3티어 아키텍처(3-Tier)와 함께 이해하기 쉽게 정리한 간단한 레포트입니다.
1. 3티어(3-Tier) 아키텍처란?
어쩌면 당연하지 않을 1티어와 3티어, 그 본질에 관하여
3티어 아키텍처는 일반적으로 다음 세 개의 계층으로 구성됩니다.
- 프레젠테이션(Presentation) 레이어: 사용자 인터페이스(UI)를 담당하는 웹 브라우저나 앱 화면
- 애플리케이션(Application) 레이어: 실제 비즈니스 로직(코드)이 동작하는 서버
- 데이터(Data) 레이어: 데이터베이스(DB)나 외부 저장소 이 구조에서 Redis는 주로 데이터 레이어와 애플리케이션 레이어 사이에서 빠른 읽기/쓰기를 제공하기 위해 사용됩니다.
2. Redis에서의 캐싱(Cache)
2.1 개념
- 캐싱은 자주 참조되는 데이터를 미리 저장해 두어, 서버(애플리케이션 레이어)에서 빠르게 읽어올 수 있도록 하는 기술입니다.
- 예를 들어, DB에서 자주 호출되는 데이터나 계산 비용이 높은 결과를 캐시에 저장해두면, 동일 요청이 반복될 때 DB나 복잡한 연산을 거치지 않고 Redis에서 곧바로 가져올 수 있어 응답 속도가 빨라집니다.
2.2 3티어 관점에서의 역할
- 데이터 레이어 접근 전, 애플리케이션 레이어가 Redis에서 캐시를 먼저 확인합니다.
- 필요 시에만 DB에 접근하여 전체 시스템 부하(트래픽)를 줄입니다.
- 빈번한 요청 처리 속도가 빨라져, 사용자에게 더 좋은 응답 시간을 제공합니다.
2.3 특징 및 장점
- 성능 향상: DB 질의 또는 연산을 생략해 조회 속도가 빨라집니다.
- 리소스 절약: DB 부하를 줄여 전체 인프라 리소스를 효율적으로 쓸 수 있습니다.
- 단기 저장: 캐시는 일반적으로 TTL(만료 시간)을 짧게 둬서, 빠르게 변할 수 있는 정보나 빈번히 사용되는 정보를 보관합니다.
3. Redis에서의 세션(Session)
3.1 개념
- 세션은 사용자별 상태와 정보를 서버가 기억하도록 하는 개념입니다.
- 예를 들어, 사용자 로그인 정보나 장바구니 상태 같은 것들이 세션에 해당합니다.
- Redis는 세션 스토어로 사용할 수 있는데, 서버가 여러 대로 확장(스케일 아웃)되더라도 Redis에 모아 세션 정보를 저장하면, 어떤 서버로 요청이 가든 동일한 사용자 상태를 유지할 수 있습니다.
3.2 3티어 관점에서의 역할
- 애플리케이션 레이어에서 사용자 요청이 들어오면, Redis에 저장된 세션에서 해당 사용자 정보를 조회합니다.
- 세션 정보를 통해 사용자 권한이나 로그인 상태를 파악하여 적절히 응답합니다.
- 세션 업데이트(예: 로그인 시점, 로그아웃 시점, 장바구니 정보 변경)는 Redis에 기록됩니다.
3.3 특징 및 장점
- 확장성(Scalability): 서버가 여러 대여도 Redis 세션 스토어를 공통으로 사용하면, 어떤 서버에 접속해도 동일한 사용자 상태 유지가 가능합니다.
- 데이터 일관성: Redis를 단일 저장소로 두어, 중복된 세션 관리로 인한 충돌을 줄일 수 있습니다.
- TTL 기반 만료: 필요하다면 세션에도 TTL(만료 시간)을 설정해, 오랫동안 사용되지 않는 세션을 자동 정리할 수 있습니다.
4. 캐싱과 세션의 차이점 요약
| 구분 | 캐싱(Cache) | 세션(Session) | | 목적 | 자주 조회되는 데이터를 빠르게 제공 | 사용자별 상태(로그인 정보, 장바구니 등)를 유지 | | 만료(유지) | 주로 짧은 TTL로 빠른 갱신 | 필요에 따라 TTL 사용, 보통 유저 활동 기간 유지 | | 초점 | 시스템 전체 성능 최적화 (트래픽 감소) | 사용자 경험 (지속적 로그인, 상태 유지) | | 3티어와 연계 | 데이터 레이어로 가기 전 빠른 조회 제공 | 애플리케이션 레이어에서 사용자별 정보 확인 |
5. 왜 Redis를 쓰는가?
- 메모리 기반: 디스크 대신 메모리에 데이터를 저장하므로 매우 빠른 읽기/쓰기가 가능합니다.
- 풍부한 자료구조: 문자열, 해시, 리스트, 세트 등 다양한 자료구조를 지원해 세션, 캐시 등 다양한 시나리오에 적용이 가능합니다.
- 확장성: 클러스터링 기능을 통해 높은 트래픽에도 대응할 수 있습니다.
6. 결론
- *캐싱(Cache)**은 시스템 성능 개선이 핵심 목표이며, 3티어 아키텍처에서 DB 부하를 줄이고 데이터 접근 속도를 높이는 역할을 합니다.
- *세션(Session)**은 사용자별 상태 유지가 목적이며, 여러 서버 환경에서 일관된 사용자 경험을 제공하기 위해 중요한 역할을 합니다. Redis는 이러한 캐싱과 세션을 모두 빠르고 안정적으로 지원하여, 3티어 환경에서 성능과 확장성을 동시에 잡는 주요한 인메모리 데이터 스토어로 자리 잡았습니다.
💬 댓글
GitHub 계정으로 로그인하여 댓글을 남겨보세요. GitHub 로그인
🔧 댓글 시스템 설정이 필요합니다
GitHub Discussions 기반 댓글 시스템을 활성화하려면:
GISCUS_SETUP_GUIDE.md
파일의 안내를 따라 설정 완료Repository 관리자만 설정할 수 있습니다. 설정이 완료되면 모든 방문자가 댓글을 남길 수 있습니다.