반응형

Redis 3

ElastiCache Redis Read/Write Splitting 적용기 - 장애에서 배운 이중화 전략

실제 프로덕션 Redis 장애를 겪고, 읽기/쓰기 분리를 적용하면서 배운 것들을 정리합니다.배경: Redis 장애가 터졌다어느 날 프로덕션 서비스가 전체적으로 느려졌다. API 응답 시간이 수십 배로 치솟고, Sentry에는 Redis timeout 에러가 쏟아졌다. 원인은 AWS ElastiCache t-type 인스턴스의 CPU Credit 소진이었다.t-type 인스턴스는 CPU Credit 기반으로 동작한다. 평소에는 Credit을 적립하고, 트래픽이 몰리면 Credit을 소모하면서 버스트 성능을 제공한다. 그런데 이날은 트래픽 급증으로 Credit이 바닥나버렸고, CPU 성능이 baseline(5~40%)으로 제한되면서 Redis가 극도로 느려진 것이다.Automatic Failover는 왜 동..

ElastiCache Redis 읽기/쓰기 분리 (Primary / Replica)

배경운영 중인 Django 백엔드의 Redis 캐시가 ElastiCache 클러스터(Primary 1 + Replica 2)로 구성되어 있었지만, 설정이 Primary Endpoint 하나만 가리키고 있어서 모든 읽기/쓰기 트래픽이 Primary 노드에 집중되고 있었다. ElastiCache가 제공하는 Reader Endpoint를 활용해 읽기는 Replica로, 쓰기는 Primary로 분산하는 작업을 했다.1. ElastiCache 엔드포인트 종류ElastiCache Redis 클러스터를 생성하면 세 종류의 엔드포인트가 제공된다.엔드포인트연결 대상용도Primary EndpointPrimary 노드 고정읽기 + 쓰기Reader Endpoint (-ro)Replica 노드들 (라운드로빈)읽기 전용개별 노드..

AWS Lambda 환경에서 S3 Presigned URL이 만료되는 문제 해결기

문제 발견어드민 페이지에서 매니저가 제출한 증빙서류 이미지가 엑박으로 표시되는 버그가 보고되었다. 일부 이미지는 정상적으로 보이는데, 특정 이미지들만 엑박이 뜨는 상황이었다.엑박이 뜨는 이미지의 URL로 직접 접속해보니 S3에서 다음과 같은 에러를 반환하고 있었다. ExpiredToken The provided token has expired.시스템 구조프로젝트는 Django 기반 REST API 서버로, AWS Lambda + API Gateway 환경에서 운영되고 있다. 이미지 파일은 S3에 저장되며, 조회 시 Presigned URL을 생성하여 응답한다.[클라이언트] → [API Gateway] → [Lambda (Django)] → [S3 Presigned URL 생성] ..

반응형