단일 장애 지점(SPOF)이란 무엇인가?

김명수·2025년 10월 31일

매일메일

목록 보기
38/127
post-thumbnail

단일 장애 지점(SPOF)이란 무엇인가?

●단일 장애 지점(SPOF)이란 무엇인가?

  • 단일 장애 지점(Single Point of Failure, SPOF) 이란 전체 시스템에서 제대로 동작하지 않는 경우, 전체 시스템이 중단되는 특정 구성 요소를 의미하며, 서버와 네트워크, 프로그램 등 정보 시스템이 정상적으로 사용할 수 있는 정도를 가용성(Availability) 이라고 하며 가용성은 정상적인 사용 시간(Uptime)을 전체 사용 시간(Uptime+Downtime)으로 나누어 구할 수 있으며 이때, 가용성이 99.999% 처럼 높은 경우에 고가용성(High Availability, HA) 이라 하며 시스템이 고가용성을 만족하기 위해서는 SPOF를 식별하고, 개선하는 작업이 필요함

●다음과 같은 상황에서 SPOF를 식별하고 개선

1. API Server 1대를 운용
2. DB는 Master Replica 구성을 사용
3. Master DB는 1대이며, 3대의 Replica DB를 사용하고 있음 (Failover는 지원)
  • 현재 서버는 단일 서버로 구성되어 있습니다. OOM(Out Of Memory), 네트워크 장애, 자원 고갈, 하드웨어 장애와 같은 문제가 발생할 경우 서버의 고장이 전체 시스템의 고장으로 이어질 수 있움

  • 이 문제를 개선하기 위해서 서버를 이중화하고, 로드 밸런서를 사용할 수 있습니다. 이중화는 동일한 애플리케이션을 여러 서버에 배포하여 한 서버가 다운되더라도 다른 서버가 서비스를 제공할 수 있도록 하며 로드 밸런서는 서버에 들어오는 트래픽을 여러 서버로 분산시켜주는 역할을 하며 만약, 특정 서버가 고장나는 경우에는 로드 밸런서에서 해당 서버로 향하는 요청을 다른 정상 서버로 전달

●서버를 이중화할 때 점검해야 하는 부분

  • 서버를 이중화할 때 점검해야할 지점들은 애플리케이션 특성에 따라 상이하지만, 대표적으로 점검해야할 부분들은 동시성 문제, 세션 불일치 문제, 로그 및 메트릭 수집, 로드 밸런싱 알고리즘, 배포 등이 있음
  1. 애플리케이션 내부에서 동시성 문제를 해결하기 위한 코드가 이중화 환경에서도 안전하게 작동하는지 점검해볼 필요성이 있으며 예를 들면, 단일 서버인 경우에는 자바의 synchronized, ReentrantLock을 사용하여 멀티 스레드 환경에서 동시성 문제를 해결 할 수 있지만, 이중화된 환경에서는 해당 방법들이 제대로 동작하지 않을 가능성이 매우 높으며 이 경우, 분산 잠금이나 DB 잠금을 사용하는 것이 적절할 수 있음
  2. 만약 서버에서 세션 기반 인증을 사용하고 있다면, 세션 불일치 문제를 겪을 수 있습니다. 이 경우, 세션 클러스터링이나 스티키 세션, 토큰 기반 인증, 외부 세션 저장소 등을 고려해야함
  3. 서버에서 생성되는 로그와 메트릭 데이터가 여러 서버에 걸쳐서 쌓이게 되며, 해당 데이터를 시각화하여 한눈에 확인하기 위해서는 각 서버에서 발생되는 데이터를 수집 및 통합하여 관리할 필요성이 생김
  4. 적절한 로드 밸런싱 알고리즘을 선택해야할 필요성이 있으며, 비효율적인 로드 밸런싱 알고리즘을 사용한다면, 한 서버에만 요청이 몰려서 이중화와 로드 밸런싱을 적용한 의미가 퇴색될 수 있음
  5. 서버 배포에 대해서 고민해볼 필요성이 있으며 서버가 늘어날 수록, 동일한 서비스의 다양한 버전이 운영될 수 있으며, 배포 시간이 증가하거나 배포 중 장애에 대한 대응이 복잡해질 수 있음
profile
신입개발자

0개의 댓글