2025-10-31
1일 1아티클
요즘IT
캐싱 전략
X의 기능 요구 사항
- 사용자 등록 및 인증
- 필수 정보 입력 시에만 새 계정 생성
- 로그인 시 입력하는 자격 증명은 안전하게 저장, 인증 절차의 정확한 처리
- 트윗 생성
- 최대 글자 수(280자) 이내로 메시지 작성
- 텍스트, 해시태그, 이미지, 동영상 등 미디어 첨부 가능
- 팔로우 / 언팔로우
- 다른 사용자 팔로우 시 해당 사용자의 트윗을 타임라인에서 확인
- 타임라인
- 사용자의 트윗 생성 시간 및 선호도 반영하여, 적합한 내용을 타임라인에 효율적으로 표시
- 검색
- 키워드, 해시태그, 사용자 이름 기반 검색
- 리트윗, 좋아요
- 다른 사용자의 트윗을 자신의 팔로워에게 공유하기
- 다이렉트 메시지
- 공개 트윗 피드와는 별개의 다이렉트 메시지 송수신
서비스 아키텍처
- 로드 밸런서 → API 게이트웨이 → 트윗 서비스 → 객체 저장소, 트윗 DB, 메시지 큐
- 메시지 큐 → 타임라인 서비스, 검색 서비스
데이터 모델 및 저장소 구조
- DB (아파치 카산드라, 아마존 DynamoDB 등)
- RDBMS 활용
- 데이터가 각 노드에 골고루 분산되도록 파티션 키를 트윗ID로 설정
- 시간 순서대로 트윗의 효율적 조회를 위해 클러스터링 키로 타임스탬프 사용
- 객체 저장소 (아마존 S3 등)
- 미디어 파일은 객체 저장소에 개별 파일로 저장
- DB 트윗 정보에는 해당 파일의 고유 식별자를 참조로 포함
캐싱 전략
- 시간 기반 슬라이딩 윈도우 캐싱
- 최근 N시간 이내에 게시된 트윗은 캐시에 유지
- 새로운 트윗 추가 시 캐시에 저장, 조건 시간 초과된 트윗은 삭제
- 인기도 기반 캐싱
- 좋아요, 리트윗, 댓글 등의 사용자 반응 데이터 활용한 트윗 점수 계산
- 점수가 일정 기준을 넘는 트윗만 캐시에 저장
- 점수는 주기적으로 재계산하여 캐시 업데이트
- 하이브리드 캐싱
- 시간 기반과 인기도 기반을 혼합 활용
- 최근 N시간 이내 작성 트윗은 인기도와 관계 없이 캐시에 저장
- 일정 시간이 지난 뒤에는, 인기도 기준 충족 시에만 캐시에 유지