Satu Server & Ribuan Order: Kisah Knight Capital, Bug Deployment yang Nyaris Menghabisi Sebuah Perusahaan
Kasus Knight Capital menunjukkan bahwa kegagalan deployment, kode lama, dan lemahnya kontrol SQA dapat menyebabkan kerugian besar.
Bayangkan sebuah perusahaan keuangan besar yang kehilangan hampir setengah miliar dolar hanya dalam waktu kurang dari satu jam. Penyebabnya bukan serangan siber, bukan penipuan, dan bukan krisis pasar, melainkan satu langkah pemasangan perangkat lunak yang terlewat. Itulah yang dialami Knight Capital pada 1 Agustus 2012. Kasus ini menjadi contoh klasik bahwa kualitas perangkat lunak tidak berhenti pada kode yang benar, tetapi mencakup cara kode itu dirilis, dipantau, dan dikendalikan saat sesuatu berjalan salah.
Latar Belakang dan Kronologi
Knight Capital merupakan perusahaan pialang dan market maker di Amerika Serikat yang menggunakan sistem perdagangan otomatis berkecepatan tinggi. Salah satu komponennya adalah router order SMARS yang memecah order besar menjadi order-order kecil untuk dikirim ke berbagai bursa. Di dalam sistem tersebut masih terdapat fungsi lama bernama Power Peg, yang sudah tidak digunakan sejak 2003 tetapi tidak pernah dihapus.
Pada Juli 2012, Knight menyiapkan pembaruan untuk mengikuti Retail Liquidity Program (RLP) dari NYSE. Deployment dilakukan secara bertahap ke delapan server. Namun, satu server tidak menerima pembaruan dan tidak ada pemeriksaan kedua yang mendeteksi kesalahan tersebut. Server itu masih menggunakan kode lama, sementara flag pada versi baru bertabrakan dengan flag lama yang mengaktifkan Power Peg.
Ketika pasar dibuka pada 1 Agustus 2012, server yang tertinggal mulai mengirim order secara tidak terkendali. Dalam 45 menit pertama, sistem mengirim lebih dari 4 juta order untuk memenuhi hanya 212 order pelanggan, dengan volume lebih dari 397 juta saham. Upaya rollback justru memperluas masalah karena kode lama menjadi aktif pada lebih banyak server.
Analisis Penyebab dari Perspektif SQA
Ada beberapa faktor utama yang menyebabkan insiden tersebut. Pertama, kode lama Power Peg yang sudah tidak digunakan tetap berada dalam sistem produksi sehingga dapat aktif kembali. Kedua, penggunaan ulang flag lama untuk fitur baru menyebabkan fungsi berbeda menggunakan penanda yang sama. Ketiga, deployment dilakukan secara manual tanpa verifikasi atau tinjauan kedua.
Selain itu, Knight memiliki kontrol teknologi dan tata kelola yang lemah. Tidak terdapat prosedur yang memadai untuk memastikan pemasangan kode berlangsung tertib maupun mencegah aktifnya kode yang sudah tidak digunakan. Perusahaan juga tidak memiliki prosedur respons insiden yang cukup untuk memandu karyawan menghadapi kegagalan teknologi besar.
Dari sudut pandang SQA, seharusnya seluruh server menggunakan versi yang sama, deployment dilakukan secara otomatis dan terverifikasi, serta kode yang tidak digunakan dihapus. Pengujian juga perlu mencakup kondisi deployment parsial dan regresi. Sistem seharusnya memiliki kill switch, batas otomatis, serta prosedur rollback dan respons insiden yang telah diuji.
Dampak
Angka kerugian sering dikutip sekitar 440 juta dolar AS, yaitu kerugian sebelum pajak yang dilaporkan perusahaan. Namun SEC menyebut kerugian akhir Knight melebihi 460 juta dolar AS setelah memperoleh posisi tak diinginkan senilai beberapa miliar dolar. Perbedaan angka ini perlu diperhatikan saat mengutip, dan sebaiknya disebutkan sumbernya.
Setelah kejadian, Knight mengumpulkan sekitar 400 juta dolar AS dari sekelompok investor yang dipimpin Jefferies untuk menyelamatkan perusahaan. Perusahaan kemudian kehilangan kemandiriannya: pada Desember 2012 Knight sepakat diakuisisi oleh Getco, dan penggabungan itu rampung pada Juli 2013 dan membentuk KCG Holdings.
Dari sisi regulasi, SEC mengenakan denda 12 juta dolar AS dan mewajibkan Knight menyewa konsultan independen untuk meninjau kontrol perusahaan. Ini merupakan penindakan pertama SEC berdasarkan aturan akses pasar (Rule 15c3-5) yang diadopsi pada 2010.
Penutup
Kasus Knight Capital membuktikan bahwa satu kesalahan kecil dalam deployment dapat berdampak sangat besar ketika tidak terdapat pengamanan yang memadai. Karena itu, SQA harus diterapkan pada seluruh siklus perangkat lunak, bukan hanya pada tahap pengembangan dan pengujian. Kesalahan satu teknisi bukanlah satu-satunya akar masalah. Sistem yang baik seharusnya tidak bergantung pada ketelitian satu orang, tetapi memiliki otomatisasi, pemeriksaan berlapis, dan pengaman untuk mencegah kesalahan berkembang menjadi bencana. Kasus ini juga membuktikan bahwa kualitas perangkat lunak tidak cukup dinilai dari pengujian kode, tetapi mencakup seluruh proses hingga deployment, pemantauan, dan respons insiden.
Referensi
- Securities and Exchange Commission. (2013). In the Matter of Knight Capital Americas LLC: Order Instituting Administrative and Cease-and-Desist Proceedings, Exchange Act Release No. 70694.
- Securities and Exchange Commission. (2013). SEC Charges Knight Capital With Violations of Market Access Rule, Press Release 2013-222.
- Varma, J. R. (2013). SEC order explains Knight Capital systems failure.
- WilmerHale. (2013). Knight Capital Settles Rule 15c3-5 Violations with SEC, Agrees to Pay $12 Million.
- PRMIA. The Knight Capital Algorithmic Trading Incident.