본문 바로가기

Study

[내일배움캠프 TIL] 25일차 - 캐싱 전략

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에 반영되기 전 서버가 꺼지면 데이터가 날아갈 수 있다는 위험이 있습니다.
반응형