가용성과 cross-region 배포
- 넷플릭스는 99.99%의 가용성을 달성하기 위해 인스턴스나 Availability Zone(AZ)만 다양화 하는 것이 아니라 AWS Region도 다양화하였다.
상태/데이터 비동기 지역 간 복제
- 우선 카산드라 클러스터의 데이터 일관성과 속도는 충분하다고 판단함. 100만개의 다른 리전에 있는 레코드를 운영 수준의 부하를 유지하면서 500ms만에 모두 읽을 수 있었음.
- 추가적으로 카산드라 클러스터 앞에 Memcached 레이어를 두기도 하고, Memcached에만 존재하는 계산된 데이터를 사용하기도 하였음.
- multi-regional Active-Active 환경에서 memcached를 사용할 땐 캐시를 데이터가 일관되고 또 정확하게 관리하는 것이 어렵다.
- 이를 해결하기 위해서 memcached에 대해 multi-master replication을 구축하기보다 EvCache client에 원격 캐시 무효화 기능을 추가하였다.
- 한 리전에 쓰기가 일어날때면 SQS를 통해 다른 리전에 해당 항목을 무효화 하는 메시지를 보내는 것이다.
- 이렇게 하면 다른 지역에서 그 항목을 읽을 때 연산을 다시 하거나 Cassandra로 전송되어 업데이트되고, 그에 따라 로컬 캐시도 업데이트된다.
참고 자료
'시스템 디자인' 카테고리의 다른 글
시스템 디자인을 위한 "Back-of-the-envelope calculation" (0) | 2025.02.26 |
---|---|
개발자라면 외워야 하는 지연 시간 14가지 (0) | 2025.02.24 |
CAP 정리란? (0) | 2025.02.15 |
캐시 쓰기 전략과 피크에 강한 캐싱 전략 (2) | 2025.02.13 |
캐시 쓰기 전략 (0) | 2025.02.13 |