DEV Community

Phuoc Nguyen Dang
Phuoc Nguyen Dang

Posted on • Originally published at youtube.com

Dead Code Phá Hủy Công Ty 1,5 Tỷ Đô Trong 45 Phút — Knight Capital

Dead Code Phá Hủy Công Ty 1,5 Tỷ Đô Trong 45 Phút — Phân Tích Kỹ Thuật Vụ Knight Capital

TL;DR

  • Knight Capital mất $440 triệu trong 45 phút ngày 1/8/2012 từ lỗi deployment
  • Dead code (Power Peg) từ 2003 bị kích hoạt do tái sử dụng flag bit
  • 1/8 server thiếu bản cập nhật, script deploy thất bại âm thầm
  • 97 email cảnh báo không ai đọc, không có kill switch
  • SEC phạt $12 triệu — vụ thực thi đầu tiên theo Market Access Rule

Kiến Trúc Hệ Thống

SMARS — Smart Market Access Routing System

Parent Order → SMARS → 8 Production Servers → Child Orders → Market
Enter fullscreen mode Exit fullscreen mode
  • Nhận lệnh "cha" từ broker-dealer và khách hàng tổ chức
  • Chia thành nhiều lệnh "con" để thực thi
  • Phân phối round-robin qua 8 server production
  • Xử lý hơn 3,3 tỷ giao dịch/ngày
  • Dùng serialized structs (không JSON/protobuf) cho tốc độ

Power Peg — Dead Code

  • Loại lệnh cũ từ đầu 2000s cho market-making thủ công
  • 2003: Deprecated — không ai dùng nữa
  • 2005: Refactoring di chuyển cumulative quantity tracking lên sớm hơn trong code
  • Hậu quả: Power Peg mất khả năng biết khi nào lệnh hoàn thành
  • Nếu chạy lại → vòng lặp vô hạn gửi lệnh
  • Không ai test lại sau refactoring

Chuỗi Sự Kiện

1. Flag Repurposing (Tháng 7/2012)

Bit field: [RLP(old:PowerPeg)] [flag2] [flag3] ... [flag8]
Enter fullscreen mode Exit fullscreen mode
  • NYSE ra mắt Retail Liquidity Program (RLP)
  • Kỹ sư cần flag mới → hết bit trống → tái sử dụng flag Power Peg
  • Code mới: flag = RLP indicator
  • Code cũ (nếu còn): flag = kích hoạt Power Peg

2. Deployment Thất Bại Âm Thầm

# Pseudocode deploy script
for server in servers:
    ssh $server "copy binary"  # Nếu SSH fail → SILENT, tiếp tục
# Báo cáo: SUCCESS (dù 1 server bị skip)
Enter fullscreen mode Exit fullscreen mode
  • 7/8 server: code mới (RLP)
  • 1/8 server: code cũ (Power Peg + flag tái sử dụng)
  • Không peer review deployment
  • Không verification tự động
  • Không diff check giữa servers

3. 97 Email Cảnh Báo (8:01 AM, 1/8/2012)

Enter fullscreen mode Exit fullscreen mode

4. Thảm Họa (9:30 - 10:15 AM)

Metric Con số
Parent orders affected 212
Child orders generated Hàng triệu
Trades executed 4+ triệu
Stocks affected 154
Total shares 397 triệu
Position value $7.65 tỷ
Loss rate ~$10 triệu/phút
Total loss $440 triệu
Duration 45 phút

5. Không Kill Switch

  • Khi cố dừng: kỹ sư gỡ code tốt từ 7 server đúng
  • Thay vì cô lập 1 server sai
  • Tạm thời làm tệ hơn trước khi tắt hết

Hậu Quả

Tài Chính

  • Liquid assets Knight: $365 triệu < Loss: $440 triệu → mất khả năng thanh toán
  • Cổ phiếu: $10.33 → $3.07 (-70%)
  • Cứu hộ: 6 nhà đầu tư, $400 triệu, Knight mất 73% ownership

Pháp Lý

  • SEC phạt $12 triệu (Hồ sơ 3-15570)
  • Vụ đầu tiên theo Rule 15c3-5 (Market Access Rule)
  • Yêu cầu thuê consultant độc lập review toàn bộ controls

Mua Lại

  • 12/2012: Getco mua Knight → KCG Holdings (7/2013)
  • 2017: Virtu Financial mua KCG → tên Knight Capital biến mất

7 Bài Học Kỹ Thuật

  1. Xóa dead code — Power Peg nằm 8 năm. Version control lưu lịch sử.
  2. Fail loud, không fail silent — Script deploy báo success khi thực sự fail.
  3. Không tái sử dụng flag — Semantic collision giữa code cũ và mới.
  4. Automate deployment — 1 người, 8 server, không verify = thảm họa.
  5. Build kill switch — Không có emergency stop → panic response làm tệ hơn.
  6. Alert phải actionable — 97 email giống noise → bị ignore.
  7. Test deployment end-to-end — Code pass review, deployment process không bao giờ test.

Modern Relevance

Mỗi team ship code hôm nay đối mặt cùng áp lực: legacy systems, manual processes, deadline gấp. Knight Capital là lý do CI/CD, kill switches, và infrastructure-as-code không phải best practices — mà là chiến lược sinh tồn.


Video storytelling trên kênh CodeLore

Top comments (0)