Tavallisella ihmisellä voisi olla melkoinen haaste saada otsikossa mainittu rahamäärä tuhlattua tunnissa, mutta se onnistui helposti pörssin robottimyynnin ja sen tietokoneohjelmistojen virheiden avulla. Knight Capital Group suoriutui tästä tehtävästä erinomaisesti New Yorkin pörssissä 1.8.2012
Mistä tämä sitten johtui?
Yhden kuukauden aikana kehitetystä uuden ohjelmistoversion ja sen koodin sisältämästä vanhasta testikäyttöön tarkoitetusta koodinpätkästä, joka oli ns. kuollutta koodia. Sen koodinpätkän ei pitäisi vaikuttaa mihinkään toiminnallisuuteen, mutta sitä ei poistettu, koska sitä ei ehkä muistettu tehdä. Lisäksi koko ohjelmiston testaus, erityisesti regressiotestaus, oli laiminlyöty totaalisesti tai hoidettu todella huonosti. Kaiken kukkuraksi uuden ohjelmistoversion päivityksessä yksi tuotantoympäristön kahdeksasta palvelimesta jäi vahingossa päivittämättä.
Tämä ns. kuollut testikoodinpätkä sattui aktivoitumaan samalla tavalla, mitä uusi ohjelmistoversio käytti haluttujen osto- ja myyntitapahtumien välittämiseen. Kun kaupankäynti pörssissä käynnistyi, niin tällä yhdellä päivittämättömällä palvelimella alkoi generoimaan sekunnissa tuhansia tapahtumia, jossa ostettiin kalliilla ja myytiin halvalla. Tätä testipätkää oli aiemmin käytetty ohjelmiston algoritmien testaamiseen. Virhe kyllä huomattiin kohtuullisen nopeasti, mutta kiireessä tehtiin väärä johtopäätös palata edelliseen ohjelmistoversioon, jonka seurauksena kaikki palvelimet alkoivat syytää virheellisiä osto- ja myyntitapahtumia.
Knight Capital lähetti kaiken kaikkiaan yli 4 miljoonaa osto- ja myyntitapahtumaa, jotka koskivat 154 eri osakeyhtiötä ja 397 miljoonaa osaketta noin 45 minuutin aikana pörssipäivän alettua. Tämän seurauksena esim. erään ohjelmistoyhtiön osakkeen hinta nousi 3,5 dollarista melkein 15 dollariin. Knight Capital kärsi tappioita 10 miljoonaa dollaria minuutissa.
Tapahtumapäivänä Knight Capitalin osake laski 33 %. ja seuraavan pörssipäivän loppuun mennessä yrityksen arvosta oli kadonnut 75%. Tämän kaiken lopputuloksena vuonna 1995 perustettu yhtiö myytiin joulukuussa 2012 ja sulautuminen uuteen yhtiöön tapahtui heinäkuussa 2013.
Aina pitää olla selvillä, mitä koodi tekee, mitä ohjelmistoja ja niiden versioita tuotantoympäristössä pyörii, mitkä ovat niiden versiot ja mitä ne tekevät. Kaikki aikanaan Windows-maailman dll-helvetissä pyörineet tietävät tämän. Onneksi DevOpsin aikakaudella tämä on hallussa ja koko uuden version tuotantoympäristöön vieminen on automatisoitu, vai onko?