1P by neo 2023-09-11 | favorite | 댓글 1개
  • 2012년 글로벌 주요 금융 서비스 회사인 Knight Capital Group의 경고적인 이야기를 다룬 기사, 실패한 소프트웨어 배포로 인해 45분 만에 파산한 사례.
  • 2012년 Knight Capital Group는 미국 주식의 최대 거래자로, 평균 일일 거래량이 33억 건 이상이며, 매일 210억 달러 이상을 거래했다.
  • 회사는 NYSE의 새로운 Retail Liquidity Program 출시를 준비하면서 자동화된 고속 알고리즘 라우터인 SMARS를 업데이트했다.
  • 이 업데이트는 Knight가 8년 동안 사용하지 않았던 "Power Peg"라는 오래된 미사용 코드를 대체하려는 것이었다.
  • 새로운 코드는 8개의 서버에 수동으로 배포되었지만, 기술자의 실수로 한 서버에는 새 코드가 복사되지 않아 오래된 Power Peg 코드가 활성화되었다.
  • Power Peg 기능이 부모 주문에 대한 주식 수를 추적하지 않고 자식 주문을 실행하기 위해 라우팅을 시작하면서 주문의 무한 루프가 발생했다.
  • 시장이 열리자 Knight의 시스템이 주문으로 시장을 범람시켜, 일부 주식은 그 가치의 10% 이상 증가하고, 다른 주식은 잘못된 거래에 반응하여 감소했다.
  • Knight의 시스템은 SMARS를 참조하고 오류를 "Power Peg 비활성화"로 식별하는 97개의 자동 이메일 메시지를 보냈지만, 이들은 시스템 알림으로 설계되지 않았고 즉시 확인되지 않았다.
  • 거래 시작 45분 동안, Power Peg 코드는 212개의 부모 주문을 처리하고, 154개의 주식에 대해 4백만 건의 거래를 처리하여 3억 9700만 주식 이상을 처리했다.
  • Knight Capital Group는 45분 만에 4억 6000만 달러의 손실을 보고, 이로 인해 파산했다. 그들은 반 다 dozen 투자자들로부터 4억 달러의 투자를 통해 손실을 보전하는 데 필요한 자본을 모았다.
  • 기사는 이러한 대형 실패를 피하기 위해 배포를 완전히 자동화하고 반복 가능하게 만드는 것의 중요성을 강조하며, 이는 DevOps/Continuous Delivery 계획의 일부이다.
  • 저자는 소프트웨어 출시는 반복 가능하고 신뢰할 수 있는 과정이어야 하며, 가능한 한 자동화되어야 인간의 오류 위험을 줄일 수 있다고 제안한다.
Hacker News 의견
  • 자동화 배포는 문제를 방지하지 못했을 수 있으며, 비호환 코드 때문에 문제를 확대시킬 수도 있었다.
  • 자동 거래 시스템은 내장된 킬 스위치를 가져야 하며, 이는 기능을 보장하기 위해 정기적으로 테스트되어야 한다.
  • 지속적인 배포 시스템은 치명적인 실패로 이어진 논리 오류인 이 버그를 차단하지 못했을 수 있다.
  • "Knight Capital을 끌어내다"라는 용어는 중요 시스템에서 모서리를 자르고 결과를 직면하는 양적 금융에서 알려져 있다.
  • 고주파 거래는 빠르게 잘못될 수 있는 것의 극단적인 예이다.
  • 대규모 판매량을 처리하는 시스템의 경우, 위험을 완화하기 위해 수동 프로세스, 롤백 단계, 그리고 기능 플래그를 갖추는 것이 중요하다.
  • Knight Capital 사건은 모든 거래를 중단하거나 수동 개입으로 경고하는 자동 SCRAM 시스템을 무시한 결과였다.
  • 8년 동안 코드베이스에 죽은 코드가 존재하는 것은 위험을 나타내며, 이는 적극적인 유지 보수 작업이 부족함을 나타낸다.
  • 설정과 바이너리가 동시에 롤아웃되었다면 이런 종류의 문제를 방지할 수 있었을 것이다.
  • 오래된 플래그를 재사용하는 것은 중요한 실수였으며, 배포에서 적절한 관행의 중요성을 강조한다.