사후 분석: 2020년 5월 19일 서버 다운 타임

5월 19일, 비트멕스 거래 엔진은 예기치 않은 서버 다운으로 인하여 12:00 UTC (한국 시간 기준 오후 9:00)와 13:40 UTC (한국시간 기준 오후 10:40) 사이에 다운 타임이 발생했습니다. 본 건에 관한 조사의 세부 사항을 말씀드리기에 앞서 이번 다운 타임으로 인하여 영향을 받으신 모든 고객 여러분들께 거듭 사과의 말씀 드립니다. 이와 같은 사태가 고객님들께 미치는 영향에 대해서 중대하게 인지하고 있습니다. 본 블로그 게시글을 통해 당거래소가 향후에 만에 하나 발생할 수 있는 다운 타임 위험을 최소화하기 위해 가능한 모든 방법을 수행하고 있고 이를 위해  지속적으로 취하고 있는 절차와 단계들을 설명하고자 하며, 또한 고객님들께서 다운 타임 사태와 관련한 위험성을 관리할 수 있는 방법들을 안내드리고자 합니다. 

아울러 다운 타임 발생 기간 동안 고객님들의 자금은 안전하게 보호되었으며, 단 한 건의 청산도 발생하지 않았고, 거래소가 재개된 후 90분 이내에 보류 중인 출금 건과 신규 출금 건이 모두 처리되었다는 점을 거듭 말씀드리고 싶습니다. 

발생 상황과 대응을 아래와 같이 요약하였습니다. 

  1. 12:00 UTC (한국 시간 기준 오후 9:00)에 거래 엔진 서버가 예기치 않게 재시작되어 오프라인 상태가되었습니다.
  2. 12:01 UTC (한국 시간 기준 오후 9:01)에 엔지니어링 및 DevOps 팀이 사태 대응 작업에 착수했습니다.
  3. 12:13 UTC (한국 시간 기준 오후 9:13)에 고객님들께 https://status.bitmex.com 및 공식 BitMEX Telegram 채널을 통해 실시간 상황 보고 진행했습니다. 이후, 지속적으로 상황 업데이트 메시지를 전 플랫폼에서 확인하실 수 있도록 조치하였습니다.
  4. 12:20 UTC (한국 시간 기준 오후 9:13)에 거래 엔진 서비스가 부분적으로 복구되었으며 관련 팀은 거래소를 재개하는 데 필요한 추가 단계를 수행하기 시작했습니다
  5. 12:38 UTC (한국 시간 기준 오후 9:38)에 거래 엔진 서버가 갑자기 다시 한번 재시작되어 관련 팀은 거래 엔진을 대기 서버로 옮기도록 설계된 복구 절차를 시작했습니다. 올해 초에 도입된 새로운 장애 조치 메커니즘을 사용하여 22분 이내에 해당 프로세스를 완료하였습니다.
  6. 12:41 UTC (한국 시간 기준 오후 9:41)에 당거래소의 클라우드 업체는 두 차례의 서버 재시작이 하드웨어 문제와 관련이 있음을 확인했습니다.
  7. 13:04 UTC  (한국 시간 기준 오후 10:04)에 거래 엔진 서비스가 성공적으로 복구되었습니다.
  8. 13:23 UTC (한국 시간 기준 오후 10:23)에 거래 플랫폼은 “취소만 가능 모드(Cancel-Only mode)”로 온라인 상태로 돌아왔고 모든 거래 운영 재개에 관한 안내를 13:40 UTC (한국 시간 기준 오후 10:40)에 고객님들께 발송하였습니다.
  9. 13:40 UTC (한국 시간 기준 오후 10:40)에 거래가 성공적으로 재개되었습니다.
  10. 출금은 14:00 UTC (한국 시간 기준 오후 11:00)와 15:00 UTC (한국 시간 기준 익일 오전 00:00)에 처리되었습니다.

이와 같은 사태가 다시 발생할 수 있습니까?

비트멕스는 연중 무휴 거래소로서 완벽한 가동 시간과 중단없는 서비스를 제공하기 위해 최선의 노력을 다하여 서비스를 제공하고 있으나, 안타깝게도 여타 거래소들과 마찬가지로 이를 보장 할 수는 없습니다. 

내부 프로세스 및 외부 업체 사용 등의 시스템 안정성에 대해서는 다운 타임 위험을 최소화하기 위하여 최선을 다해 조치를 취하고 있습니다. 비트멕스는 고객님들께 현황 페이지를 통해 전년도에 대한 정보와 함께 저희 서비스 가동 시간에 대하여 투명하게 보고드리고 있습니다. 

비트멕스는 거래 플랫폼의 안정성을 보장하기 위해 어떠한 작업을 진행하고 있습니까?

2017년부터 2019년까지 대부분의 엔지니어링 리소스는 거래소 규모를 확장하기 위해 활용되었습니다 [1] [2]. 이는 변동성이 심한 해당 기간 동안 끊임없는 수요 증가를 관리하고, 모든 고객에게 최상의 서비스 품질을 제공하기 위해 필수적인 작업이었습니다. 2019년 말부터 비트멕스의 엔지니어링 리소스를 활용하여 플랫폼의 수용력을 지속적으로 유지하고 증가시키는 동시에 높은 가용성 및 복원력을 보장하는데 주력하고 있습니다.

이 두 가지를 중심으로 저희 엔지니어들은 여러 아키텍처 개선을 설계하고 구현하고 있습니다. 이러한 개선 사항은 소프트웨어 / 하드웨어 장애가 플랫폼에 미치는 영향과 이와 비슷한 장애를 복구하는데 소요되는 시간을 크게 감소시킵니다. 최종 목표는 단일 가용 (single availability)영역에 영향을 미치는 사태에 대처할 때는 0에 가까운 다운 타임으로,  지역 가용 (regional availability)영역에 대해서는 다운 타임 발생시간을 1시간 미만으로 제한하는 것입니다.

당거래소는 아키텍처 관련 작업과 함께 실운영 환경이 아닌 환경에서 매주 가동 중단을 시뮬레이션하여 절차의 정확성을 검증하고 있으며 이러한 작업 실행에 대한 적응력을 향상시키고 점점 이를 자동화하고 있습니다. 3월 13일 서비스 저하에 대한 직접적인 대응으로 최근 인프라에 대한 눈에 띄는 변화가 5월 14일에 적용되었습니다. 몇 주 동안의 설계 세션, 당거래소의 클라우드 업체와의 협의 및 실운영과 같은 환경상의 로드 테스트 후, 당거래소의 관련 부서는 기본 사용자 데이터베이스의 기반 기술을 교체했습니다. 복구 시간을 4배로 향상시키고 향후 몇 개월 내에 거래 중단 없이 이를 15배로 더욱 향상시킬 수 있는 가능성을 확인했습니다. 또한 당거래소의 엔지니어들은 고객님들의 거래에 전혀 영향을 끼치지 않은 채 매주 거래 엔진 서비스에 대한 업데이트를 다수 진행하여 성능 개선 및 새로운 기능을 제공합니다.

마지막으로, 복원력(resilience)및 재난복구(disaster recovery)에 대한 지속적인 노력을 뒷받침하며 최고의 거래 플랫폼을 제공하려는 노력의 일환으로 관련팀을 적극적으로 확장하고 있습니다. 이와 관련하여 함께 관심이 있으신 분들은 비트멕스내 다양한 부문의 채용 공고를 참고하여 주시기 바랍니다.  

비트멕스는 플랫폼 재개 프로세스를 향상시키기 위해 어떠한 노력을 기울이고 있습니까?

이전의 다운 타임 사태에 대한 검토 및 고객 피드백을 검토 한 후, 당거래소는 서비스 재개시, 취소만 가능 (Cancel-Only)모드 프로토콜 (이전에는 이 모드가 예정된 유지보수 후에 사용됨)을 포함하여 거래 플랫폼 재개하는 방식으로 개선하여 진행했습니다. 5월 19일 사태 이후, 플랫폼의 전체 기능을 재개하기 전 17분 동안 38,437개의 주문 취소가 진행되었습니다. 이는 이전 다운 타임과 비교했을 때, 사용자 환경 관점에서 크게 개선된 점이라고 생각합니다. 당거래소는 이 프로세스에 대한 고객님들의 의견을 계속 검토하여 필요한 경우 효과성를 개선하고, 새로운 절차에 대한 업데이트를 제공할 것입니다.

고객은 다운 타임과 관련한 위험으로부터 어떻게 스스로를 보호할 수 있습니까?

비트멕스 거래 플랫폼은 거래자가 서버 다운 타임으로 인한 위험을 관리할 수있는 여러 정교한 기능 및 설정을 제공합니다.

API를 사용하는 거래자에게는 “데드맨 스위치(Dead Man’s Switch)”기능을 제공합니다. 이를 통해 거래자는 거래소에 접근할 수 없는 경우, 주문 취소에 대한 시간 제한을 설정할 수 있습니다. 구현 세부 사항 및 시간 제한 설정의 예시는 여기를 클릭하시어 자세한 내용을 확인해주시기 바랍니다. 

비트멕스 플랫폼의 또다른 유용한 기능은 중지 주문(stop order)의 발동 가격을 최종 가격(Last Price), 시장 평균 가격(Mark Price) 또는 지수 가격(Index Price) 중 하나로 설정하는 것입니다. 다운 타임 이후 거래소가 재개되면 최종 가격(Last Price)의 급격한 변동이 발생할 수 있습니다. 최종 가격(Last Price)의 급격한 변동으로 인해 중지 주문(stop order)이 발동하지 않도록 거래자는 최종 가격(Last Price)이 아니라 시장 평균 가격(Mark Price) 또는 지수 가격(Index Price)을 기준으로 발동하도록 발동 가격을 설정할 수 있습니다.

비트멕스 플랫폼의 두 가지 기능을 통하여 거래자가 위험을 관리하고 서버 다운이 미치는 영향을 감소 시킬 수 있습니다. 당거래소의 고객 지원 팀은 플랫폼상의 이와 같은 위험 관리 기능에 대한 추가 정보를 제공합니다.

결론

암호화폐 산업은 단 기간에 먼 길을 걸어왔습니다. 당거래소에 대한 기대가 지속해서 높아지고 있다는 것을 인지하고 있으며, 당거래소는 플랫폼의 복원력을 더욱 향상시키기 위해 연중 무휴로 최선을 다해 노력하고 있습니다. 비트멕스의 모든 고객님들께서 본 게시글을 통해 이번에 발생한 다운 타임에 대한 구체적인 내용과 플랫폼 안정성 및 전반적인 거래 경험을 향상시키기 위해 진행하고 있는 여러 조치 내용들을 명확하게 확인하실 수 있으셨기를 바랍니다. 

본 건과 관련하여 추가로 궁금한 점이 있으시거나 해당 다운 타임 당시 영향을 받으신 경우, 언제든지 고객 지원 팀으로 문의하여 주시기 바랍니다.