요약: 페일오버(Failover)란 서비스 중단 없이 장애가 발생한 구성 요소에서 정상적인 백업으로 자동으로 전환하는 과정을 말합니다. 블록체인 인프라에서 페일오버는 노드, 서버 또는 데이터 센터에 장애가 발생했을 때, 애플리케이션의 RPC 요청이 다른 정상적으로 작동하는 노드( endpoint)로 원활하게 재라우팅되도록 보장합니다.
기본 개념
고속도로를 주행하던 중 주 차로가 갑자기 막혔다고 상상해 보세요. 우회로가 없다면 꼼짝도 못 하게 됩니다. 하지만 운전자가 눈치채기도 전에 고속도로 시스템이 자동으로 평행 차로로 우회시켜 준다면, 바로 이것이 ‘페일오버’가 실제로 작동하는 모습입니다.
인프라 측면에서 페일오버(failover)란 문제가 발생했을 때 이를 감지하고 트래픽을 즉시 백업 시스템으로 전환하는 메커니즘을 말합니다. 그 목표는 중단이 전혀 없거나(또는 near 중단이 전혀 없는) 상태를 유지하는 것입니다. 해당 요청을 처리하던 구성 요소가 백그라운드에서 변경되었더라도, 애플리케이션은 계속해서 요청을 보내고 응답을 수신하며 정상적으로 작동합니다.
블록체인 인프라에서 페일오버가 작동하는 방식
블록체인 인프라에는 장애가 발생할 수 있는 특정 구성 요소들이 있습니다. 가장 흔한 사례로는 개별 노드, 전체 지역 또는 데이터 센터, 그리고 특정 블록체인 클라이언트 구현체가 있습니다. 훌륭한 장애 복구 시스템은 이 세 가지 모두를 처리합니다.
노드 수준에서 장애 조치(failover)는 비교적 간단합니다. 로드 밸런서는 풀에 속한 모든 노드의 상태를 지속적으로 모니터링하며, 응답 시간, 오류율, 블록 높이를 확인합니다. 특정 노드에서 오류가 발생하기 시작하거나 동기화가 뒤처지면, 로드 밸런서는 해당 노드로의 트래픽 전송을 중단하고 나머지 정상 노드들에 요청을 분산합니다.
지역 차원에서는 상황이 더욱 흥미로워집니다. 데이터 센터 전체나 클라우드 가용성 영역에서 장애가 발생하면 DNS 기반 장애 조치 기능이 작동합니다. 일반적으로 해당 지역으로 라우팅되던 요청은 자동으로 그 다음으로 가까운 정상 작동 중인 지역으로 리디렉션됩니다. 이것이 바로 지리적 분산이 중요한 이유입니다. 단 한 지역에만 노드를 운영하는 서비스 제공업체는 해당 지역이 다운될 경우 대체 수단이 없습니다.
클라이언트 수준에서 일부 제공업체는 여러 블록체인 클라이언트 구현체를 동시에 실행하기도 합니다(예: Ethereum 의 경우 Geth와 Erigon을 모두 실행). 특정 클라이언트 구현체에 버그나 성능 문제가 발생하면, 트래픽이 대체 클라이언트를 실행 중인 노드로 전환될 수 있습니다. 이러한 중복 구조는 흔하지는 않지만 그 중요성이 점점 더 커지고 있습니다.
능동적 페일오버 대 수동적 페일오버
페일오버에는 크게 두 가지 접근 방식이 있으며, 이 차이는 성능에 중요한 영향을 미칩니다.
액티브-액티브 구성에서는 모든 백업 구성 요소가 이미 실행 중이며 트래픽을 처리하고 있습니다. 한 구성 요소가 장애를 일으키면 나머지 구성 요소들이 해당 구성 요소가 담당하던 부하를 그대로 흡수합니다. 모든 구성 요소가 이미 가동 상태이므로 ‘콜드 스타트’ 지연이 발생하지 않습니다. 노드는 체인과 지속적으로 동기화 상태를 유지해야 하므로, 이는 블록체인 인프라에 가장 적합한 모델입니다. 블록을 적극적으로 처리하지 않는 노드는 블록 높이가 뒤처지게 되며, 이를 따라잡을 때까지는 제대로 작동하지 않습니다.
능동-수동 구성에서는 백업 구성 요소가 필요할 때까지 대기 상태로 유지됩니다. 주 노드가 장애를 일으키면 수동 백업 노드가 활성화되어 기능을 인수합니다. 이 방식은 운영 비용이 저렴하지만 지연이 발생합니다. 블록체인 노드의 경우, 수동 노드가 정확한 데이터를 제공하기 전에 블록을 동기화해야 할 수 있으므로 이러한 지연이 상당히 클 수 있습니다.
대부분의 생산용 블록체인 인프라는 바로 이러한 이유로 ‘액티브-액티브’ 페일오버 방식을 사용합니다. DeFi 프로토콜에 1초 미만의 데이터 정확도가 요구되는 상황에서, 콜드 노드가 데이터를 따라잡을 때까지 기다릴 여유가 없기 때문입니다.
아래 표는 블록체인 워크로드에 대해 두 가지 장애 조치 모델을 비교한 내용을 요약한 것입니다:
양상
액티브-액티브
능동-수동
백업 상태
모든 노드가 실행 중이며 트래픽을 처리하고 있습니다.
대기 노드는 필요할 때까지 유휴 상태로 유지됩니다.
페일오버 지연
Near 0, 콜드 스타트 없음
주목할 점은, 백업이 예열되고 동기화되어야 한다는 것입니다.
운영 비용
더 높은 용량일수록 전체 용량에 대한 요금을 지불하게 됩니다.
낮게 설정하면 대기 모드에서 리소스 소모가 줄어듭니다
블록 높이 동기화
항상 최신 정보
지연이 발생할 수 있으며, 뒤처진 부분을 따라잡아야 할 수도 있습니다.
다음에 가장 적합합니다
생산 RPC 및 실시간 데이터
비용에 민감하거나 중요도가 낮은 워크로드
블록체인 앱에서 페일오버가 필수적인 이유
기존의 웹 애플리케이션은 대개 짧은 중단 정도는 감내할 수 있습니다. 사용자가 페이지를 새로 고침하면 모든 것이 다시 정상적으로 작동하죠. 하지만 블록체인 애플리케이션은 여러 가지 이유로 그런 여유가 없습니다.
트랜잭션은 시간에 민감합니다. 애플리케이션이 트랜잭션을 제출하는 도중 RPC endpoint 가 요청 도중에 실패하면, 해당 트랜잭션이 손실되거나 두 번 제출될 수 있습니다. 오래된 데이터는 위험합니다. 블록 높이가 뒤처진 노드는 오래된 정보를 반환합니다. 애플리케이션이 오래된 잔액을 읽어 이를 바탕으로 조치를 취할 경우, 금전적 손실을 초래할 수 있습니다. 이벤트는 되돌릴 수 없습니다. 재시도나 롤백이 가능한 기존 시스템과 달리, 온체인 작업은 영구적입니다. 오류가 발생한 노드에서 제공한 잘못된 데이터를 바탕으로 자금을 송금한 경우, 이를 되돌릴 수 없습니다.
이것이 바로 페일오버가 단순히 있으면 좋은 기능이 아닌 이유입니다. 이는 실제 운영 환경에서 블록체인과 연동되는 모든 애플리케이션에 있어 필수적인 요건입니다.
Quicknode 의 장애 조치 처리 방식
Quicknode이 인프라스트럭처는 14개 이상의 리전과 여러 클라우드 제공업체에 걸쳐 ‘액티브-액티브(active-active)’ 페일오버 방식을 사용합니다. 모든 요청은 블록 높이 동기화 상태, 응답 지연 시간, 오류율 등을 포함하여 노드 상태를 지속적으로 평가하는 글로벌 부하 분산 계층을 통해 라우팅됩니다. 특정 노드나 리전의 성능이 저하될 경우, 개발자가 별도로 조치를 취할 필요 없이 트래픽이 자동으로 차선책으로 전환됩니다.
가장 강력한 보장이 필요한 팀을 위해, 전용 clusters 는 맞춤형 장애 조치 구성과 가동 시간 SLA가 보장된 격리된 인프라를 제공합니다.
페일오버와 부하 분산에는 어떤 차이가 있나요?
페일오버와 부하 분산은 밀접한 관련이 있지만, 해결하는 문제는 서로 다릅니다. 부하 분산은 들어오는 요청을 정상 작동 중인 노드 풀에 분산시켜, 어느 한 노드에도 과도한 부하가 걸리지 않도록 합니다. 페일오버는 해당 노드 중 하나가 정상 작동 상태를 잃었을 때 발생하는 현상으로, 장애가 발생한 노드에서 트래픽을 회수하여 나머지 노드들로 재분배합니다. 실제로 이 두 가지는 서로 연동되어 작동하며, 강력한 고가용성 환경을 구축하려면 두 가지가 함께 작동해야 합니다.
역량
부하 분산
페일오버
주 업무
트래픽을 고르게 분산시키다
장애 발생 시 트래픽을 우회시키기
그것이 작용할 때
매번 요청이 있을 때마다 지속적으로
구성 요소가 성능이 저하되거나 고장 날 때만
주요 목표
성능 및 균등한 활용도
가용성 및 가동 시간
트리거
요청 건수
상태 확인 실패
무엇을 ‘단일 고장 지점’으로 간주할 수 있나요?
단일 장애 지점이란, 고장이 발생하면 전체 시스템을 마비시키는 구성 요소를 말합니다. 단일 노드, 단일 클라우드 리전, 또는 하나의 클라이언트 구현체 모두 단일 장애 지점이 될 수 있습니다. 페일오버는 언제든지 정상적으로 작동하는 대체 시스템을 준비해 두어 이러한 취약점을 제거합니다. 일반적인 블록체인 장애 유형을 검토하는 것이 스택 내에 숨어 있는 단일 장애 지점을 찾아내는 가장 빠른 방법입니다.
페일오버가 제대로 작동하는지 어떻게 확인하나요?
페일오버는 몇 가지 구체적인 지표를 통해 측정합니다. 가동 시간은 서비스에 접속할 수 있었던 빈도를 나타내고, 복구 시간은 장애 발생 후 트래픽이 전환되는 데 걸린 시간을, 사고 발생 시 오류율은 전환이 완료되기 전까지 영향을 받은 요청의 수를 보여줍니다. 블록체인 인프라를 지속적으로 모니터링해야만 이러한 수치를 파악할 수 있으며, 이를 통해 페일오버가 제대로 작동하고 있는지 확인할 수 있습니다.
실제 장애가 발생하기 전에 페일오버를 어떻게 테스트할 수 있을까요?
페일오버를 신뢰할 수 있는 유일한 방법은 이를 미리 시뮬레이션해 보는 것입니다. 팀들은 통제된 시간대에 의도적으로 노드나 리전을 오프라인 상태로 전환한 후, 트래픽이 오류 없이 재라우팅되는지 확인하는데, 이러한 접근 방식을 흔히 ‘카오스 테스트’라고 부릅니다. 자체 노드를 운영하는 경우, 프로세스를 중지하고 요청이 어디로 전달되는지 관찰할 수 있습니다. Quicknode Core API와 같은 관리형서비스 제공업체를 이용하는 경우, 페일오버는 자동으로 처리되지만, 리전 간 부하 테스트를 통해 이를 검증할 수는 있습니다.
자주 묻는 질문
페일오버를 쉽게 설명하면 무엇인가요?
페일오버란 서비스가 계속 실행될 수 있도록 고장 난 구성 요소에서 정상적으로 작동하는 백업으로 자동으로 전환하는 것을 말합니다. 대부분의 경우 사용자는 이러한 전환이 일어났다는 사실을 전혀 눈치채지 못합니다.
페일오버는 중복성과 같은 것인가요?
아닙니다. 중복성(Redundancy)이란 예비 부품을 준비해 두는 것을 의미하는 반면, 장애 전환(Failover)은 어떤 구성 요소에 장애가 발생했을 때 트래픽을 해당 예비 부품으로 전환하는 과정을 말합니다. 장애 전환이 제대로 작동하려면 인프라 중복성이 구축되어 있어야 합니다.
페일오버에는 얼마나 걸리나요?
액티브-액티브 시스템의 경우, 백업 시스템이 이미 트래픽을 처리하고 있기 때문에 장애 전환이 종종 near 즉시 이루어집니다. 반면 액티브-패시브 시스템에서는 대기 시스템이 준비되고 동기화되는 데 몇 초에서 몇 분까지 걸릴 수 있습니다.
페일오버가 모든 가동 중단을 방지할 수 있나요?
페일오버는 다운타임을 획기적으로 줄여주지만, 모든 상황에서 중단이 전혀 발생하지 않을 것이라고 보장할 수는 없습니다. 여러 지역에 걸쳐 잘 설계된 액티브-액티브 인프라라면 중단 발생 가능성을 극히 낮출 수 있으며, 이것이 바로 생산 환경의 블록체인 애플리케이션에서 표준으로 채택되는 이유입니다.
블록체인 앱에서 페일오버가 왜 그토록 중요한가요?
블록체인 작업은 시간에 민감하고 종종 되돌릴 수 없기 때문에, endpoint 가 실패할 경우 거래가 누락되거나 오래된 데이터가 반환될 수 있습니다. 자동 장애 조치(failover)는 신뢰성과 사용자 자금을 모두 보호하며, 이는 실시간 데이터를 기반으로 구축된 서비스에 있어 매우 중요합니다 . streams.