گرانترین اشکال تاریخ.

ساخت وبلاگ

در سال 2012 ، تیم توسعه نرم افزار در Knight Capital - بزرگترین معامله گر سهام ایالات متحده - از مدیرعامل خود ، توماس جویس تماس گرفت.

بورس اوراق بهادار نیویورک (NYSE) به تازگی تأیید شده بود تا استخر تاریک خود ، برنامه نقدینگی خرده فروشی (RLP) را باز کند. استخر تاریک نوعی از بازار خصوصی مشترک ، خارج از بازار سهام عمومی است. برخی از بزرگترین موسسات مالی به طور فزاینده ای کار خود را از طریق استخرهای تاریک و به دور از چشم عمومی انجام می دادند.

جویس به آنها اطلاع داد که توسعه دهندگان شوالیه 30 روز فرصت داشتند تا با بازار جدید ادغام شوند. این دقیقاً در یک ماه زنده می رود.

جویس منتقد آواز RLP بود ، اما اکنون که به جلو حرکت می کرد ، ضروری بود که نایت با آن حرکت کند - به عنوان یک سازنده بازار (شرکتی که در تفاوت بین قیمت خرید و فروش سهام درآمد کسب می کند) ،اجازه حرکت به جریان سفارشات به خارج از دیدگاه نایت ، توانایی آنها در ایجاد سود را تهدید می کند.

با شمارش ساعت تا ساعت 9:30 صبح EST در تاریخ 1 اوت 2012 (هنگامی که RLP اولین سفارشات خود را می پذیرد) ، توسعه دهندگان به کار خود ادامه دادند.

این ادغام نیاز به ایجاد تغییراتی در سیستم اجرای تجارت نایت ، از جمله SMARS ، روتر با سرعت بالا دارد. Smars در سنین بالا قرار داشته است.

کار با سرعت تبعید انجام شد. 30 روز زمان زیادی برای نوشتن ، آزمایش و استقرار یکپارچه سازی پیچیده با یک بازار جدید نبود. با توجه به مهلت اول اوت ، توسعه دهندگان با عجله به پایان رسیدند که بر روی کد روتر جدید Smars به پایان برسد.

سیستم جدید تمام بررسی های خود را تصویب کرد و مورد آزمایش قرار گرفت تا تأیید کند که آماده است تا هنگام باز شدن برای اولین بار سفارشات را به RLP پردازش کند. این برنامه برای استقرار سیستم جدید در پشت پرچم ویژگی در هفته قبل از مهلت بود. وقتی بازار در تاریخ 1 اوت افتتاح شد ، آنها به سادگی آن را روشن می کنند.

در ساعت 9:30 صبح EST در تاریخ 1 اوت ، توسعه دهندگان شوالیه همین کار را کردند: آنها پرچم ویژگی را فعال کردند ، و Smars شروع به هدایت سفارشات به RLP کردند - آنها زنده بودند!

اما چیزی اشتباه بود. نمودارهای آنها سنبله های غیر عادی را در فعالیت های تجاری در بازارهای باز نشان می دهد. ساعت 9:34 صبح ، NYSE تماس گرفت. نایت معاملات زیادی را انجام می داد - در واقع بسیاری از آنها که حجم معاملات برای کل بازار دو برابر سطح عادی آنها بود.

برای بدتر شدن اوضاع ، معاملات آنها معنا پیدا نکردند. به نظر می رسد Smars در حال خرید بالا و فروش کم است. با نرخ فعلی ، آنها هزاران دلار در ثانیه از دست می دادند.

هشدار به این مشکل ، مدیر ارشد اطلاعات نایت با هم به عنوان مهندسان عملیات برتر در کنار هم تماس گرفت تا علت اصلی را شناسایی کنند. به نظر می رسید سفارشات سرکش از کد روتر جدید RLP سرچشمه گرفته است ، اما هیچ کس نمی تواند این اشکال را مشخص کند.

از زمان افتتاح بازار 20 دقیقه فریاد زده بود و معاملات غیرمجاز که توسط Smars انجام شده بود ، قبلاً به میلیارد ها دلار رسید. وقت آن بود که دوباره به عقب برگردیم و بعداً سؤال کنیم. استفاده مجدد از آخرین نسخه به این معنی است که سفارشات RLP باید منتظر روز باشد ، اما حداقل این امر باعث خونریزی می شود.

با یک حس تسکین لرزان ، تیم عملیات برای بررسی آخرین نسخه پایدار شناخته شده Smars و استقرار آن در 8 سرور تولید خود تلاش کرد.

به وحشت خود ، به محض اینکه روتر دوباره شروع شد ، مجدداً حجم معاملات NYSE را انجام داد: آنها اکنون حتی بیشتر از گذشته معاملات را اجرا می کردند.

در ساعت 9:58 صبح ، توسعه دهندگان شوالیه کاملاً Smars را خاموش کردند. 8 دقیقه از بازگشت کد RLP و 28 دقیقه از باز شدن بازار گذشته بود.

آنها فقط 460 میلیون دلار شرکت خود را از دست می دادند.

موج شوک اولیه باعث شد تا سهام شرکت بلافاصله 33 ٪ کاهش یابد. تا روز بعد ، 75 درصد از ارزش سهام نایت پاک شده بود. چندی نگذشت ، آنها برای بخشی از ارزش اصلی خود به دست آمدند و Knight Capital دیگر نبود.

اما واقعاً چه اتفاقی افتاد؟

هنگامی که توسعه دهندگان الگوریتم تجارت فرکانس بالا نایت جایگزین برخی از میراث های استفاده نشده میراث شدند ، آنها یک پرچم ویژگی را که برای غیرفعال کردن آن استفاده شده بود ، مجدداً بازسازی کردند.

استقرار برای 7 از 8 سرور آنها موفقیت آمیز بود ، اما استقرار به سرور هشتم در سکوت انجام نشد ، به این معنی که یک سرور هنوز کد میراث را اجرا می کرد. هنگامی که آنها پرچم ویژگی را فعال کردند ، 7 سرور مطابق انتظار عمل می کردند. هشتم کد Legacy را اجرا کرد ، که هرگز نباید تولید می کرد.

آنها به جای اینکه دوباره کد جدید را به سرور هشتم تبدیل کنند ، تصمیم گرفتند به آخرین وضعیت خوب شناخته شده برگردند. متأسفانه ، آنها نمی دانستند که مشکل پرچم ویژگی است ، و برای خاموش کردن آن از ذهن آنها عبور نکرد. هنگامی که سیستم قدیمی دوباره مستقر شد ، هر سرور شروع به اجرای کد میراث کرد و ضررهای آنها را به طرز چشمگیری ترکیب کرد.

آنها کجا اشتباه کردند؟

منظور من این است که توسعه دهندگان پایتخت نایت احمقانه نبودند - آنها برای یکی از بزرگترین بازرگانان در بورس نیویورک کار کردند ، بر روی سیستمی که هر روز صدها میلیون دلار تجارت را پردازش می کرد. تا آن روز سرنوشت ساز ، آنها از سال 1995 این کار را با موفقیت انجام دادند.

بیشتر ما روی سیستمهایی کار نمی کنیم که اگر اشتباه کنیم می توانند سیستم مالی ایالات متحده را از بین ببرند. و با این حال ، ما چندان متفاوت نیستیم. همه اینها به نرم افزار کاهش می یابد ، و توسعه نرم افزار بدون توجه به اینکه در AWS یا یک بورس بزرگ اجرا می شود ، یکسان است.

توسعه دهندگان شوالیه هرگز نباید اجازه می دادند که کد مرده برای مدت طولانی در برنامه خود باقی بماند. اگر آنها فعال تر بودند ، می توانستند به راحتی از فاجعه خودداری کنند. استفاده مجدد از پرچم ویژگی یک اشتباه گنگ بود که فقط نباید انجام می شد. توسعه دهندگان کاملاً مقصر نبودند ، هرچند اگر یک اطمینان در زندگی وجود داشته باشد ، این است که ما اشتباه خواهیم کرد.

در پایان ، آن را به پردازش رساند. نایت فرایند بررسی کد خوبی نداشت ، که می توانست قبل از تصویب ، مشکلات طراحی را با تغییرات RLP جلب کند. هنگامی که آنها Smars را مستقر کردند ، آنها خط لوله استقرار خودکار نداشتند ، در عوض به مهندسان خود تکیه می کردند تا کد جدید را به صورت دستی مستقر کنند. در نتیجه ، آنها یک قدم مهم را در سرور 8 سرنوشت از دست دادند. هنگامی که اولین اشتباه منجر به وضعیت بحران شد ، نظارت آنها ناکافی بود ، و آنها مراحل پاسخ به حادثه را مستند نکرده اند که می تواند مانع از ایجاد یک اشتباه حتی بدتر تحت فشار شود.

به عنوان توسعه دهندگان کامل پشته ، وظیفه ما این است که از ابتدا تا انتها به تحویل نرم افزار اهمیت دهیم و این شامل استقرار ، نظارت و رفع آن در تولید هنگام شکستن (و شکسته خواهد شد). این چیزی است که DevOps همه چیز در مورد آن است.

کتاب آموزش بورس...
ما را در سایت کتاب آموزش بورس دنبال می کنید

برچسب : نویسنده : محمود استادمحمد بازدید : 25 تاريخ : پنجشنبه 19 مرداد 1402 ساعت: 15:17