피드로 돌아가기
Dev.toBackend
원문 읽기
Redis를 데이터베이스로 사용하면 안 되는 이유를 DynamoDB와의 비용 비교 및 메모리 제약으로 입증
If cache is faster than database, why not store everything in cache?
AI 요약
Context
Cache와 Database의 성능 차이에서 비용 측면을 고려하지 않은 엔지니어들이 모든 데이터를 Cache에 저장하려는 유혹을 받고 있다. 단순히 성능이 빠르다는 이유로 Redis를 Primary Database로 사용하는 것의 실제 비용과 기술적 한계를 정량화할 필요가 있다.
Technical Solution
- 일일 2,000만 건의 읽기와 200만 건의 쓰기를 처리하는 은행 시스템을 기준으로 DynamoDB(읽기: $0.125/백만, 쓰기: $0.625/백만, 저장: $0.25/GB/월) 비용 계산
- Redis 클러스터를 동일한 데이터량으로 구성(2 Shards, Shard당 1 Replica, 총 4 Nodes)했을 때 시간당 비용 산출($1.729/시간)
- Redis의 Eviction 정책(LRU: Least Recently Used) 작동 메커니즘 분석으로 메모리 부족 시 최근 사용하지 않은 데이터 자동 삭제 확인
- 메모리가 가득 찼을 때 무제한 확장으로 해결하는 경우의 비용 증가 추이 제시
Impact
- DynamoDB 일일 운영 비용: 약 $2.92
- Redis 클러스터 일일 운영 비용: $41.50
- Redis가 DynamoDB 대비 약 15배의 운영 비용 발생
- Redis 연간 비용: $15,147
Key Takeaway
Cache 기술이 읽기 성능에서는 우수하지만, Primary Data Store로 사용할 때는 지속적인 메모리 비용과 Eviction으로 인한 데이터 손실 위험이 발생하므로, 각 도구의 목적에 맞는 올바른 선택이 중요하다.
실천 포인트
높은 읽기 빈도의 온라인 뱅킹 시스템 구축 시 Redis를 모든 데이터의 Primary Database로 사용하기보다, DynamoDB를 Primary로 유지하고 Hot Data용 Cache로만 Redis를 활용하면 연간 약 $13,000의 불필요한 비용을 절감할 수 있다.