728x90
반응형
세션 관리 방식과 캐싱 전략에 대해 정리해 보았습니다.
1. 세션 관리: Sticky Session vs Session Clustering
서버가 여러 대가 되면 유저의 로그인 상태(세션)를 어떻게 유지할지가 관건입니다.
- Sticky Session (스티키 세션)
- 개념: 클라이언트의 요청이 처음 연결된 특정 서버로만 계속 전달되는 방식입니다.
- 장점: 구현이 매우 쉽고, 각 서버가 본인의 메모리에만 데이터를 담으므로 속도가 빠릅니다.
- 단점: 특정 서버에 사람이 몰리면 부하 불균형이 생기며, 해당 서버가 고장 나면 그 안의 세션 데이터는 모두 사라집니다.
- Session Clustering (세션 클러스터링)
- 개념: 여러 서버가 세션 데이터를 서로 복제하거나 별도의 저장소에서 공유하는 방식입니다.
- 장점: 서버 하나가 죽어도 다른 서버가 세션을 넘겨받을 수 있어 서비스 연속성이 뛰어납니다.
- 핵심: 장비의 대수를 늘리는 Scale-out(수평 확장) 구조에서 데이터 정합성을 맞추기에 가장 적합한 방식입니다.
2. 인프라 확장: Scale-up vs Scale-out
| 구분 | Scale-up (수직 확장) | Scale-out (수평 확장) |
| 방법 | 기존 서버의 CPU, RAM 사양을 높임 | 비슷한 사양의 서버를 여러 대 추가함 |
| 비용 | 고성능 부품일수록 가격이 급격히 상승 | 저렴한 서버를 여러 대 연결해 가성비가 좋음 |
| 장점 | 관리가 단순함 | 무한한 확장이 가능하고 장애 대응에 유리함 |
3. RESTful API의 캐시 가능성 (Cacheability)
REST 아키텍처의 특징 중 하나는 캐시 처리 가능성입니다. HTTP 표준인 Cache-Control 헤더를 활용해 서버 응답을 클라이언트나 중간 프록시 서버에 저장해 두는 것이죠. 이를 통해 서버의 불필요한 연산을 줄이고 사용자에게 빛과 같은 응답 속도를 제공할 수 있습니다.
4. 효율적인 캐싱 전략 (Caching Strategies)
데이터를 어디에 어떻게 쓰고 읽느냐에 따라 서비스의 성격이 달라집니다.
① Cache-Aside (Lazy Loading)
- 방식: 앱이 먼저 캐시를 찔러보고, 데이터가 없으면(Miss) 그때 DB에서 가져와 캐시에 저장합니다.
- 특징: 가장 대중적인 전략입니다. 실제 요청된 데이터만 캐시에 올라가므로 메모리를 효율적으로 쓰지만, 처음 요청할 때는 DB를 거쳐야 하므로 약간 느릴 수 있습니다.
② Write-Through
- 방식: 데이터를 저장할 때 캐시와 DB에 동시에 기록합니다.
- 특징: 캐시가 항상 최신 상태를 유지하므로 데이터 일관성이 강력합니다. 하지만 매번 두 곳에 써야 하므로 쓰기 성능은 다소 희생됩니다.
③ Write-Behind (Write-Back)
- 방식: 일단 캐시에만 먼저 다 써두고, 나중에 일정 시간마다 혹은 특정 개수가 모이면 DB에 일괄(Batch) 반영합니다.
- 특징: 쓰기 작업이 엄청나게 많은 서비스(예: 실시간 로그, 게임 점수 등)에 유리합니다. 단, DB에 반영되기 전 서버가 꺼지면 데이터가 날아갈 수 있다는 위험이 있습니다.
반응형
'Study' 카테고리의 다른 글
| [내일배움캠프 TIL] 27일차 - Saga pattern(사가 패턴) (0) | 2026.05.13 |
|---|---|
| [내일배움캠프 TIL] 26일차 - DB 성능 최적화 전략 (0) | 2026.05.12 |
| [내일배움캠프 TIL] 24일차 - CI, Github Actions로 CI 파이프라인 구축하기 (0) | 2026.05.08 |
| [내일배움캠프 TIL] 23일차 - Docker & Docker Compose (0) | 2026.05.07 |
| [내일배움캠프 TIL] 22일차 - Github Flow vs Git Flow (3) | 2026.05.06 |