본문 바로가기
금융을 알고싶은 반디 금융을 알고싶은 반디
" 좋은 일만 가득하세요~ "

Ⅱ-3. 공통원인고장(CCF) — 이중화 했는데도 동시에 장애가 발생하는 이유

읽는 시간 약 8분

컴퓨터 시스템에서 이중화는 장애가 발생하더라도 다른 구성요소가 기능을 이어받도록 설계하는 대표적인 가용성 확보 방법이다.

서버를 두 대로 구성하거나 네트워크 장비와 전원 장치를 이중화하면 하나의 구성요소에 장애가 발생했을 때 서비스가 계속 유지될 가능성이 높아진다.

그러나 이중화된 구성요소가 서로 독립되어 있지 않다면 이야기가 달라진다.

두 장비가 물리적으로 분리되어 있어도 동일한 전원, 네트워크, 스토리지, 소프트웨어, 환경 또는 운영 절차에 의존하고 있다면 하나의 원인이 두 시스템에 동시에 영향을 줄 수 있다.

이러한 장애를 공통원인고장(CCF, Common Cause Failure)이라고 한다.

1. 공통원인고장이란 무엇인가

공통원인고장은 서로 다른 두 개 이상의 구성요소가 하나의 공통된 원인으로 동시에 또는 연속적으로 기능을 상실하는 현상이다.

핵심은 장애가 발생한 장비의 개수가 아니다.

중요한 것은 장애의 원인이 서로 독립적인가이다.

예를 들어 서버 A와 서버 B를 이중화했다고 가정해 보자.

서버 A의 전원공급장치가 고장 나더라도 서버 B가 정상적으로 서비스를 이어간다면 이중화의 목적이 제대로 작동한 것이다.

하지만 서버 A와 서버 B가 모두 동일한 전원 계통에 연결되어 있고 해당 전원 계통 자체에 문제가 발생한다면 두 서버가 동시에 영향을 받을 수 있다.

이 경우 서버가 두 대라는 사실만으로는 장애에 대한 독립성이 확보되었다고 볼 수 없다.

2. 장비를 두 대로 늘리는 것과 장애를 독립시키는 것은 다르다

이중화에서 흔히 발생하는 착각은 다음과 같다.

장비가 두 대이면 장애에도 강하다.

하지만 실제 시스템의 장애 가능성은 장비의 개수만으로 결정되지 않는다.

예를 들어 다음과 같은 구조를 생각할 수 있다.

서버 A ─┐
    ├ 동일 스위치 ─ 동일 라우터
서버 B ─┘

서버 A와 서버 B는 서로 다른 서버이지만 네트워크 경로의 일부를 공유하고 있다.

이 상태에서 공통 스위치가 장애를 일으키면 서버 A와 서버 B가 동시에 네트워크 연결을 잃을 수 있다.

서버를 두 대로 구성했지만 장애 경로는 하나인 상태인 것이다.

따라서 이중화의 핵심은 단순한 장비 수가 아니라 장애를 발생시키는 공통 의존성을 얼마나 제거했는가에 있다.

3. 공통원인고장을 발생시키는 대표적인 의존성

공통원인은 특정 장비에만 존재하는 것이 아니다.

시스템 전체의 구조를 따라가면서 확인해야 한다.

구분공통 의존성의 예발생 가능한 영향
전원동일 UPS, 동일 배전반, 동일 전원 계통여러 장비 동시 정지
네트워크동일 스위치, 동일 라우터, 동일 회선통신 동시 단절
스토리지동일 스토리지 장비, 동일 스토리지 경로데이터 접근 동시 장애
소프트웨어동일 OS, 동일 버전, 동일 설정동일한 소프트웨어 장애 발생
설정동일 구성 파일, 동일 정책동일 설정 오류 동시 발생
환경동일 랙, 냉각장치, 화재·침수 위험여러 장비 동시 장애
운영동일 작업 절차, 동일 관리자의 설정 오류동일한 운영 실수 반복
외부 의존성동일 DNS, 인증, API, 통신사업자여러 서비스 동시 영향

여기서 중요한 점은 물리적으로 다른 장비라도 공통된 의존성을 가지고 있다면 완전한 독립이라고 볼 수 없다는 것이다.

4. 공통원인은 하드웨어에만 존재하지 않는다

공통원인고장을 장비 고장 문제로만 생각하면 실제 위험을 놓칠 수 있다.

예를 들어 서버 A와 서버 B가 서로 다른 물리 서버라고 하더라도 동일한 운영체제 버전과 동일한 설정을 사용하고 있다고 하자.

특정 OS 업데이트에 문제가 있거나 특정 설정값에 오류가 있다면 두 서버가 비슷한 시점에 동일한 장애를 일으킬 가능성이 있다.

이 경우 장애를 발생시킨 것은 서버라는 하드웨어가 아니라 공통된 소프트웨어 또는 설정이다.

따라서 공통원인고장을 분석할 때는 다음과 같이 범위를 넓혀서 살펴볼 필요가 있다.

하드웨어 → 전원 → 네트워크 → 스토리지 → 소프트웨어 → 설정 → 운영 → 외부 의존성

이 과정을 통해 두 시스템이 실제로 어느 부분에서 연결되어 있는지를 확인해야 한다.

5. 이중화 구조에서 공통원인을 찾는 방법

공통원인고장은 장비 목록만 확인해서는 쉽게 발견되지 않는다.

각 시스템이 장애가 발생했을 때 어떤 경로를 통해 영향을 받는지를 따라가야 한다.

예를 들어 서버 A와 서버 B의 이중화 구조라면 다음과 같이 확인할 수 있다.

① 전원 경로가 분리되어 있는가?

두 서버가 서로 다른 전원 계통을 사용하는지 확인한다.

UPS를 두 대 사용하더라도 두 UPS가 동일한 배전 계통에 의존한다면 상위 전원 장애에 동시에 영향을 받을 수 있다.

② 네트워크 경로가 분리되어 있는가?

서버의 NIC만 두 개라고 해서 네트워크가 완전히 이중화된 것은 아니다.

두 NIC가 결국 동일한 스위치나 동일한 네트워크 경로에 연결되어 있다면 공통 장애점이 남아 있을 수 있다.

③ 스토리지 의존성이 분리되어 있는가?

서버는 서로 다르지만 동일한 스토리지 시스템에 의존한다면 해당 스토리지의 장애가 두 서버에 동시에 영향을 줄 수 있다.

④ 소프트웨어와 설정이 동일한가?

동일한 소프트웨어를 사용하는 것 자체가 문제라는 의미는 아니다.

다만 동일한 버그나 동일한 설정 오류가 두 시스템에 동시에 적용될 수 있다는 점을 고려해야 한다.

⑤ 외부 서비스에 동일하게 의존하는가?

DNS, 인증 시스템, 외부 API, 회선, 클라우드 서비스 등 시스템 외부의 의존성도 확인해야 한다.

이러한 요소가 하나의 장애점으로 남아 있다면 내부 장비를 아무리 이중화해도 전체 서비스의 독립성은 제한된다.

6. 공통원인고장 분석에서 중요한 것은 ‘장비 수’가 아니다

이중화 구조를 평가할 때 다음과 같은 질문은 충분하지 않다.

서버가 몇 대인가?
스위치가 몇 대인가?
전원공급장치가 몇 개인가?

더 중요한 질문은 다음과 같다.

하나의 원인이 몇 개의 시스템에 동시에 영향을 줄 수 있는가?

이 질문으로 관점을 바꾸면 이중화 구조를 훨씬 정확하게 볼 수 있다.

서버가 두 대라도 동일한 전원과 네트워크에 의존한다면 공통원인은 남아 있다.

반대로 단순히 장비를 추가하는 것이 아니라 전원·네트워크·스토리지·운영 경로까지 장애가 분리되도록 설계했다면 실제 장애 독립성은 더 높아진다.

7. 공통원인고장 분석의 최종 판단

공통원인고장을 분석할 때 가장 먼저 확인해야 할 것은 이중화된 구성요소가 실제로 독립되어 있는가이다.

장비가 서로 다른 위치에 있거나 동일한 모델이 아니라고 해서 자동으로 독립되는 것은 아니다.

두 시스템 사이에 공통된 전원, 네트워크, 스토리지, 소프트웨어, 설정, 환경, 운영 절차 또는 외부 서비스가 존재한다면 하나의 원인이 여러 시스템에 동시에 영향을 줄 수 있다.

따라서 이중화의 수준을 판단할 때는 ‘몇 개를 준비했는가’보다 ‘하나의 장애 원인이 어디까지 영향을 줄 수 있는가’를 확인해야 한다.

결국 중요한 질문은 두 가지로 정리할 수 있다.

내 시스템에서 실제로 독립되어 있는 것은 무엇인가?

장비만 이중화하고 공통 의존성은 그대로 둔 것은 아닌가?

이 두 질문에 명확하게 답할 수 있다면, 단순히 장비를 이중화한 것과 실제로 장애 독립성을 확보한 것의 차이를 판단할 수 있다.

핵심정리

  • 공통원인고장(CCF)은 하나의 원인이 여러 이중화 구성요소에 동시에 영향을 주는 장애이다.
  • 이중화의 효과는 장비의 개수보다 장애 원인의 독립성에 의해 좌우된다.
  • 전원·네트워크·스토리지뿐 아니라 소프트웨어·설정·운영·외부 서비스까지 공통 의존성을 확인해야 한다.
  • 장비가 분리되어 있어도 장애 경로가 공유된다면 완전한 이중화라고 보기 어렵다.

bandion
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!