확장성과 가용성을 위한 클러스터

Do_It·2023년 11월 13일

확장성이란?

  • 소프트웨어나 서비스의 요구사항 수준이 증가할 때 대응할 수 있는 능력
  • 주로 규모에 대한 확장성을 뜻함(데이터의 크기, 요청 트래픽)
  • 수직 확장(Scale-up) : 성능을 업그레이드
  • 수평 확장(Scale-out) : 서버를 여러대 두거나 하는 것
  • 요구사항이 증가할 때, 비용이 갑자기 커지지 않는게 확장성이 좋음
    요구사항이 증가할 때 확장성의 비용 증가가 완만하게 증가하는 것

수평 확장 (Scale-out)

  • 처리 요소를 여러개 두어서 작업을 분산
  • 문중단 확장이 가능
  • 이론적으로는 무한대로 확장이 가능

분산 시스템에 따라오는 문제

  • 부분 장애
  • 네트워크 실패
  • 데이터 동기화 문제
  • 로드밸런싱 문제

Redis Cluster

  • 여러 노드에 자동적인 데이터 분산
  • 일부 노드의 실패나 통신 단절에도 계속 작동하는 가용성
  • 고성능을 보장하면서 선형 확장성을 제공

Redis Cluster 특징

  • full - mesh 구조 : 모든 노드가 연결 되어 있음
  • cluster bus 라는 추가 채널 (port) 사용
  • gossip protocol 사용
  • hash slot을 사용 : 키 별로 데이터를 어디에 넣을지
  • DB0만 사용 가능

데이터를 분산하는 기준

  • 특정 키의 데이터가 어느 노드에 속할 것인지 결정하는 메커니즘이 있어야 함
  • 보통 분산 시스템에서 해싱이 사용됨
  • 단순 해싱으로는 노드의 개수가 변할 때 모든 매핑이 새로 계산되어야 하는 문제가 있음
profile
오늘의 노력이 내일의 성장으로 이어지고 있음을

0개의 댓글