# 단일 장애 지점

# 단일 장애 지점이란?

  • SPOF(Single Point of Failure)
  • 해당 부분이 제대로 동작하지 않는 경우, 전체 시스템이 중단되는 특정 구성 요소
  • 시스템이 고가용성을 만족하기 위해서는 SPOF를 식별하고 개선해야 함

# 가용성

  • Availability
  • 정상적인 가용시간(Uptime) / 전체 사용 시간(Uptime+Downtime)
  • 가용성이 높은 경우를 고가용성(High Availability, HA)

# SPOF 식별하고 개선하기

1. API Server 1대를 운용합니다.
2. DB는 Master Replica 구성을 사용합니다.
3. Master DB는 1대이며, 3대의 Replica DB를 사용하고 있습니다. (Failover는 지원됩니다.)
  • 현재 서버가 단일 서버로 구성되어 있으므로, OOM(Out Of Memory), 네트워크 장애, 자원 고갈, 하드웨어 장애와 같은 문제가 발생할 경우 전체 시스템의 고장으로 이어질 수 있음
  • 이를 개선하기 위해 서버를 이중화하고, 로드 밸런서 사용 가능
  • 이중화와 로드 밸런서로 한 서버가 다운되더라도 다른 서버가 서비스 제공 가능

# 서버 이중화 시 점검해야 하는 부분

  • 애플리케이션의 특성에 따라 다르지만, 동시성 문제, 세션 불일치 문제, 로그 및 메트릭 수집, 로드 밸런싱 알고리즘, 배포 등을 점검해야 함
  • 동시성 문제 : 분산 락이나 DB 잠금 사용
  • 세션 불일치 문제 : 세션 클러스터링, 스티키 세션, 토큰 기반 인증, 외부 세션 저장소 고려 가능
  • 로그 및 메트릭 수집 : 각 서버에서 발생되는 데이터를 수집 및 통합하여 관리해야 함
  • 로드 밸런싱 알고리즘 : 비효율적인 로드 밸런싱 알고리즘 사용 시, 한 서버에만 요청이 몰려서 이중화와 로드 밸런싱을 적용한 의미가 퇴색될 수 있음
  • 배포 : 서버가 늘어날 수록, 배포 시간이 늘어나거나 배포 중 장애에 대한 대응이 복잡해질 수 있음