본문 바로가기

Website

프로그래머가 실수로 회사가 42 분만에 4 억 2 천만 달러를 잃은 방법

반응형

누군가 주요 조직이 단기간 내에 소멸 될 수 있음을 밝힌 경우, 그 조직이 터무니없는 것이라고 생각할 수 있습니다. 엔지니어 Doug Seven은 실제로 이와 같은 경험을했습니다. 8 년 전 폭격으로 인해 Knight Capital Group은 단 45 분 만에 4 억 6 천만 달러의 손실을 입었습니다. Doug Seven은이 행사에 회원이 아니 었음에도 불구하고 DevOps의 주제, 코드 디자인 및 결과 수집에서 일관된 전달을 참조하여 엔지니어가 배열의 중요성을 염두에두고 자했습니다. 무슨 일이야? Doug Seven은 블로그에서이 이야기를 공유했습니다.

이 이야기의 주인공은 광고, 제작, 전자 거래, 기관 거래 및 교환을 담당하는 Knight Capital Group이라는 미국의 전 세계 돈 관련 행정 기관입니다. 2012 년 Knight는 뉴욕 증권 거래소와 나스닥에서 전체 산업의 약 17 %를 차지하는 미국 최대의 주식 딜러였습니다. Knight Electronic Trading Group (ETG)의 일일 거래량은 33 억 회 이상이고 일일 거래량은 210 억 달러를 넘습니다. 다른 정보는 그 시점에서 조직의 활동과 돈 관련 조건이 훌륭하다는 것을 보여줍니다. 2012 년 7 월 31 일 Knight는 대략 3 억 6 천만 달러의 자원을 보유했습니다. 그 당시 뉴욕 증권 거래소는 2012 년 8 월 1 일에 또 다른 소매 유동성 계획을 파견 할 계획이었습니다. 이러한 상황을 예상하여 Knight는 스위치 SMARS를 새롭게했습니다. 이 스위치는 실행 요청을 시장에 보내는 데 적합합니다. SMARS의 핵심 요소 중 하나는 Knight 교환 단계의 여러 세그먼트에 대한 주문 (부모 주문)을 확보 한 후 실행을 위해 최소 하나의 젊은이 주문을 보내는 것입니다. 하루가 끝날 무렵, SMARS는 교환 단계에서 수많은 요청을 받고이를 조정하여 재고 금액이있는 구매자 또는 딜러를 발견합니다. 상위 요청이 많을수록 더 많은 주문이 생성됩니다. SMARS에는 오랫동안 사용되지 않은 "Force Peg"라는 오래된 코드가 있으며이 업데이트의 이유는이 코드를 대체하기위한 것입니다. 새로 워진 코드는 Power Peg 작업을 시작하는 데 사용 된 기존 로고의 용량을 똑 바르게합니다. 코드는 모두 시도되었으며 점검 진행을 경험했습니다. 모든 것이 멋지게 보이며 심하게 드러날 동기는 없습니다.

부활 한 옛 코드

2012 년 7 월 27 일부터 2012 년 7 월 31 일까지 Knight의 엔지니어는 물리적으로 조직의 8 대의 서버에 새로운 프로그래밍을 일관되게 보냅니다. 이것이 SEC 조직이 수동 조직 프로세스에 대해 말하는 것입니다. SEC 문서에 조직에 대한 데이터가 포함 된 경우, 그 시점에서 심각한 실수가 발생했을 수 있습니다. 새 코드를 준비하는 동안 Knight 전문가는 새 코드를 8 대의 SMARS PC 서버 각각에 복제하는 것을 소홀히했습니다. 이 발신을 조사 할 후속 전문가는 없습니다. Knight의 모든 사람들은 Power Peg 코드가 8 번째 서버에서 추방되지 않았으며 새로운 RLP 코드가 포함되지 않았다는 것을 이해하지 못했습니다. Knight는 그러한 감사를 요구하는 작성된 절차가 없습니다. 2012 년 8 월 1 일 오전 9시 30 분 (동부 표준시)에 시장이 열렸습니다. Knight는 고객을 위해 주문을 처리하기 시작했습니다. 올바른 SMARS 전송을 가진 7 대의 서버가 이러한 요청을 정확하게 처리하기 시작했습니다. 여덟 번째 서버로 보낸 명령은 합법적 인 재사용 배너를 설정하고 기존 Power Peg 코드를 다시 설정했습니다. 처형 자 코드는 좀비처럼 공격합니다. Power Peg 코드는 키드 요청을 실행할 때 상위 요청에 따라 구매 또는 판매 된 오퍼를 계산하는 데 사용됩니다. Force Peg는 부모 요청을 완료 한 후 젊은이들에게 전송을 종료하도록 프레임 워크를 교육합니다.

즉, Power Peg는 어린이 요청을 추적하고 부모 요청이 완료된 후 중지합니다. 2005 년에 Knight는 용량에 따라이 집계를 코드 실행의 초기 기간으로 옮겼으며, 그 결과 Power Peg에서 다음과 같은 계산이 진행되었습니다. 여덟 번째 서버의 Power Peg 로고가 제정 된 시점에서 Power Peg 작업은 하위 순서 조정을 시작합니다. 부모의 요청에 따라 공유 척도를 따를 수 없다는 점에서 영원한 사이클이 만들어졌다. 저주 45 분. 충분한 요청이 실행되었는지 확인하기위한 다음과 같은 전략없이 기계화되고 빠른 요청을 시장에 보낼 수있는 프레임 워크가 있다고 가정 해 봅시다. 이것보다 더 끔찍한 것은 없습니다.

 

시장이 오전 9시 30 분에 개장 한 시점에서 개인들은 무언가 잘못되었다는 것을 즉시 깨달았습니다. 오전 9시 31 분까지 월스트리트의 수많은 사람들이 진짜 무언가가 일어났다는 것을 깨달았습니다. 시장은 불규칙한 거래량을 가진 재고 요청으로 가득 차 있습니다. 오전 9시 32 분까지 월스트리트의 개인들은이 점에서 어떤 이유로 요청이 중단되지 않았으며 어떤 이유로 프레임 워크의 종료 스위치를 누르지 않았습니까? 결과적으로 그들은 스위치가 죽지 않았다는 것을 알았습니다. 교환의 초기 45 분 동안 Knight의 교환 량은 전체 교환 량의 절반 이상을 나타 냈으며, 이로 인해 특정 주식의 시장 추정치가 10 % 이상 상승했습니다. 이러한 방식으로, 잘못된 주식 교환으로 인해 다른 주식의 가치가 떨어졌습니다. 상황을 악화시키기 위해 Knight의 프레임 워크는 하루 전에 자연스럽게 메시지를 보내기 시작했습니다. 오전 8:01로 예정보다 앞서 SMART는 사전 광고 교환 조건을 충족하는 요청을 준비했습니다. 이메일 메시지는 SMARS를 암시하며 실수를 "강제 페그 장애"로 인식합니다. 오전 8시 1 분에서 오전 9시 30 분 사이에 기사 직원들도 97 개의 메시지를 받았습니다. 놀랍게도 이러한 메시지는 프레임 워크주의 사항으로 계획되지 않았으므로 아무도 그 메시지를 즉시 보지 못했습니다.

Knight가 경험 한 45 분 동안, 그들은 부적절한 교환을 막기 위해 몇 가지 대책을 시도했습니다. 종료 스위치가 없기 때문에 지속적인 교환 조건에서 문제를 분석하려고 시도 할 수 있습니다. 일관되게 약 8 백만 개의 오퍼가 프레임 워크에서 교환됩니다. 부적절한 주문의 원인을 알지 못했기 때문에 적절히 전달 된 서버에서 새 코드를 제거했습니다. 따라서 작업 코드를 지우고 손상된 코드를 남겼습니다.

이것은 문제를 훨씬 더 증폭시킵니다. 처음에는 잘못 전송 된 서버에서 추가 상위 주문이 Power Peg 코드를 작동 시켰습니다. 현재 모든 서버로의 어려움이 확산되었습니다. 마침내 그들은 결국 프레임 워크를 중단했지만 지금은 45 분 동안 교환을 해왔습니다. 처음 45 분 동안 시장은 212 개의 부모 주문을 받아 처리했습니다. 따라서 SMARS는 많은 수의 하위 요청을 시장에 보냈으며 4 백만 건의 거래소를 만들었으며이 중 154 개 주가는 3 억 9 천 9 백만 건의 제안을 초과했습니다. 이것은 Knight Capital Group이 45 분 동안 4 억 6 천만 달러의 손실을 일으킨다는 것을 의미합니다. 예상대로 Knight는 3 억 6 천만 달러의 자원을 보유하고 있습니다. 45 분이 지났을 때, 미국 증권 거래소에서 가장 큰 딜러 인 뉴욕 증권 거래소와 나스닥 인 Knight는 실패하고 4 개월 만에 Getco LLC에 의해 조달되었습니다. 프로그래밍 방전은 반복 가능하고 신뢰할 수 있어야합니다

모든 이벤트 및 작업 그룹은이 상황에서 가져와야합니다. 훌륭한 프로그래밍을 구성하고 테스트하기에는 충분하지 않습니다. 또한 고객이 전달할 가치를 얻을 수 있다는 목표로 시장에 정확하게 전달되도록 보장해야합니다. SMARS를 전달한 디자이너는이 문제에 대해 유일하게 대답 할 수있는 것은 아니며 Knight가 설정 한 절차는 그들이 직면 한 위험을 조정하지 않습니다. 게다가, 그들의 절차는 특징적으로 실수를합니다. 조직 절차가 가이드 라인을 효과적으로 숙지하고 준수하는 개인에게 의존 할 때마다 위험에 처하게됩니다. 개인은 오류를 저지 릅니다. 실수는 안내, 안내의 번역 또는 안내의 실행에 나타날 수 있습니다. 조직은 컴퓨터 화되고 반복 가능해야하지만 예상되는 사람의 실수로부터 예상되는 거리를 전략적으로 유지해야합니다. Knight가 설계, 전송 및 테스트를 전산화하는 기계화 된 배치 프레임 워크를 실행했을 때,이 시점에서 실수를 피할 수있었습니다. 총체적인 중단없는 운송 프로세스를 수행하지 않더라도 모든 것이 몇 가지 논스톱 운송 표준을 준수해야합니다.
1. 프로그래밍 배출은 반복 가능하고 견고한 절차 여야합니다.
2. 예상대로 많이 기계화하십시오.

반응형