Redis 사용량 타노스하기
(engineering.ab180.co)Redis에 수많은 데이터들이 JSON 형태로 압축 없이 저장되고, Redis 서비스 간 모델 공유가 되지 않아 발생하는 비용을 절감하기 위한 엔지니어링 작업기
- 동일한 원본 데이터의 저장 방식을 바꿔서 Elasticache의 메모리 사용량을 52%, 비용을 66% 절약
- JSON 대신 Protobuf를 사용해서 데이터 스펙을 명시함과 동시에 서비스간 데이터 읽기/쓰기 방식을 통일
- brotli를 비교했을 때 brotli가 가장 높은 압축률을 보임. window 크기와 압축 레벨에 따른 소요시간과 압축률을 비교해서 최적값을 찾아 적용함
- UUID를 Redis의 key로 사용할 때 ascii85를 사용해서 메모리 사용량을 조금이나마 절약할 수 있었음
- 도메인 관련 기술 부채가 인프라에 대한 비용 절감 작업의 장애물이 될 수 있음을 인지하고, 명시적인 schema로 이를 청산함
서버 스펙이 날로 높아지면서 최적화에 대한 고민 보다는 빨리 제품을 만드는데만 몰두 해있었는데 오랜만에 최적화에 대해 고민할 수 있게 해주는 좋은 내용이네요!!
그렇죠, 사실 가독성과 유동적인 구조화가 편하다는 장점 때문에 JSON이 주로 쓰이지만, 용량 측면에선 protobuf 같이 바이너리 프로토콜을 쓰는게 편하고, 극단적으로 나아가면 전통적인 PE구조나 TCP 프로토콜 같이 극도로 최적화된 바이너리 프로토콜 같은게 좋죠.
도메인 관련 기술 부채라는 말씀이 딱 맞는 말 같습니다.