
1066 ، مرت أكثر من 200 عام منذ بداية الغزو فايكنغ في إنجلترا. سار الملك هارولد ، الذي كان يجمع مفرزة من الفرسان ، إلى نهر ديروينت لخوض معركة حاسمة مع قوات تحمل الاسم نفسه - الملك النرويجي هارالد. عمل صانعو السلاح لمدة شهر لتكوين عدد كاف من دروع الجيل الجديد يمكن أن يحمي الفارس من التعرض للفأس الاسكندنافية. وكم عدد التجارب والتجارب في البطولات كانت من قبل! ولكن كان من المفترض أن تبرر هذه التوقعات - معدات خفيفة الوزن ولكن موثوقة سمحت حتى سيرا على الأقدام ، دون خسائر كبيرة ، لاكتساح Viking hird. وأخيرا ، التقيا في ستامفورد بريدج. اصطدمت الفصيلة الرئيسية للفرسان بقيادة قائد في دروع لامعة وسط جسر مع أعداء. نعم ، الصلب من سادة podgorny يحمل ضربة!
ببطء ولكن بثبات ، ينتقل الفايكنج إلى دفاع دائري. النصر يبدو أنه قريب. وأخيراً ، في ساحة المعركة ، يجد قائد الفارس والشجار النرويجي بعضهما البعض.
إن فأس Jarl الثنائي اليد مكسور بالفعل وهو مضطر للدفاع عن نفسه بسكسوني عادي ، والذي لا يمكن مقارنته بسيف ونصف. موجة مع خنجر - بالنسبة لدروع القائد ، فهي تشبه قناطر ، لكنها تمر عبر الدروع و ... يبدو أن السحر قد لعب - درع الفرسان المجاورين منتشرون! موجة أخرى ، مرة أخرى على الهدف ، والآن عند الفرسان على الجهة اليسرى ، يضيء الدرع فجأة باللون الأحمر. الضربة الثالثة - الفرسان يسبحون أمام أعينهم ، ويتعثرون ويسقطون ولا يرتفعون أبدًا.
"*** ** **** ****!" بكى بتروفيتش ، استيقظ في الخامسة صباحًا يوم الاثنين في عرق بارد. كان كل شيء خاطئًا تمامًا: في الساعة 11 مساءً ، صعد إلى ويكيبيديا بحثًا عن مواد لتقرير الطفل عن طبيعة التندرا ، لكن بحلول وقت الليل وجد نفسه بطريقة أو بأخرى عند وصفه لغزو الفايكنج بإنجلترا. وأيضًا ، في نهاية الأسبوع ، أطلقوا المعركة في الإصدار التالي ، الذي يجب أن يبدأ اليوم. كما هو الحال دائمًا ، لقد اختبرناها لفترة طويلة وشاملة ، قادناها عبر أنظمة تكامل مستمرة مليون مرة ، سواء كان كل شيء يسير بسلاسة ...
لحسن الحظ بالنسبة للبعض ، ولكن للأسف بالنسبة للضحايا ، هناك دائمًا فرصة للتعلم من أخطاء الآخرين ، لتحسين شيء ما في المنزل والحصول على جزء إضافي من الثقة. من خلال هذا المقال المترجم نريد مرة أخرى ، بمزيد من التفصيل ، تذكر إحدى الحالات في صناعتنا ".
تحدثت في العام الماضي في المؤتمر عن DevOps ، والتكوين كرمز ، والتسليم المستمر. باستخدام القصة أدناه ، أوضحت أهمية إنشاء عمليات نشر مؤتمتة بالكامل وقابلة للتكرار كجزء من مبادرة DevOps / Continuous Delivery. بعد المؤتمر ، طلب مني العديد من الأشخاص مشاركة قصة على مدونة. هذه هي قصة حقيقية تماما. هذا هو سرد لما قرأته ، وأنا شخصيا لم أشارك في هذا.
لذلك ، قصة كيف أفلست شركة بأصول تبلغ حوالي 400 مليون دولار في 45 دقيقة بسبب نشر غير ناجح.
خلفية صغيرة
Knight Capital Group ("Knight" باللغة الإنجليزية تعني "knight") هي شركة مالية عالمية أمريكية تعمل في صنع السوق والتنفيذ الإلكتروني والمبيعات المؤسسية والتداول. في عام 2012 ، كان Knight أكبر متداول في الأسهم الأمريكية حيث بلغت حصته في السوق حوالي 17 ٪ في بورصة نيويورك وناسداك. تمكنت مجموعة Knight's Electronic Trading Group (ETG) من متوسط حجم التداول اليومي لأكثر من 3.3 مليار معاملة في اليوم ، حيث تم تداول ما يزيد عن 21 مليار دولار في اليوم. هذه ليست مزحة!
اعتبارًا من 31 يوليو 2012 ، كان لدى Knight ما يقرب من 365 مليون دولار نقدًا وما يعادله.
في 1 أغسطس 2012 ، خططت بورصة نيويورك لإطلاق برنامج سيولة جديد للبيع بالتجزئة ، وهو برنامج سيولة التجزئة (برنامج مصمم لتحسين أسعار مستثمري التجزئة من خلال وسطاء التجزئة مثل نايت). استعدادًا لهذا الحدث ، قام Knight بتحديث SMARS لجهاز التوجيه الآلي عالي السرعة ، والذي يرسل التطبيقات إلى السوق للتنفيذ. تتمثل إحدى الوظائف الرئيسية لـ SMARS في تلقي الطلبات من المكونات الأخرى في منصة تداول Knights (تطبيقات "الوالدين") ، متبوعة بإرسال طلب أو أكثر من التطبيقات "الفرعية" للتنفيذ. بمعنى آخر ، ستتلقى SMARS طلبيات كبيرة من منصة التداول وتقسيمها إلى عدة طلبات صغيرة للعثور على مشتري / بائع للأسهم. كلما زاد تطبيق الوالد ، سيتم إنشاء المزيد من التطبيقات الفرعية.
كان من المفترض أن يحل تحديث SMARS محل الكود القديم غير المستخدم المسمى "Power Peg" - هذه الوظيفة لم تستخدمها Knight لمدة 8 سنوات (السبب في أن الشفرة التي ماتت لفترة طويلة كانت لا تزال في قاعدة الشفرة هي لغز ، ولكن هذا ليس الشيء الرئيسي). أعاد الكود المحدّث تعيين العلامة القديمة التي تم استخدامها لتنشيط وظيفة Power Peg. تم اختبار الرمز بدقة وعملت بشكل صحيح وكان موثوقًا به. ما يمكن أن يكون الخطأ؟
ما يمكن أن يكون الخطأ؟ و حقا!
بين 27 يوليو 2012 و 31 يوليو 2012 ، قامت Knight بنشر برامج جديدة يدويًا على عدد محدود من الخوادم يوميًا - أي ما مجموعه ثمانية (8) خوادم. إليك ما تقوله
وثيقة SEC حول النشر اليدوي (SEC هي هيئة الأوراق المالية والبورصات ، الجهة المنظمة لسوق الأوراق المالية الأمريكية).
"أثناء نشر الرمز الجديد ، لم يقم أحد موظفي Knight بنسخ الرمز الجديد إلى أحد خوادم SMARS الثمانية. لم تقم Knight بإجراء مراجعة تقنية ثانية لهذا النشر ، لذلك لم يتم حذف رمز Power Peg من الخادم الثامن ، ولم تتم إضافة رمز RLP الجديد. لم يكن لدى الشركة إجراءات معمول بها تتطلب إعادة الفحص. " الإصدار رقم 70694 ، 16 أكتوبر 2013
في 1 أغسطس 2012 ، الساعة 9:30 صباحًا بتوقيت شرق الولايات المتحدة ، افتتحت الأسواق ، وبدأت Knight بمعالجة الطلبات من التجار الوسطاء نيابة عن عملائها في برنامج سيولة التجزئة الجديد. بدأت سبعة (7) خوادم تم نشرها بشكل صحيح في معالجة التطبيقات بشكل صحيح. وربما كانت تلك التطبيقات التي ذهبت إلى الخادم الثامن قد قامت بتنشيط العلم الذي تم تغييره وإحياء Power Peg.
هجوم الزومبي: كود القاتل
هنا تحتاج إلى توضيح سبب الحاجة إلى رمز Power Peg "الموتى". كانت هذه الوظيفة مخصصة لحساب الأسهم المشتراة / المباعة بناءً على طلب أحد الوالدين عند اكتمال أوامر الطفل. بعد تنفيذ الطلب الأصلي ، تحظر Power Peg تقديم الطلبات الفرعية. من حيث المبدأ ، ستقوم Power Peg بتتبع الطلبات الفرعية وإيقاف تنفيذها بعد معالجة الطلب الأصلي. في عام 2005 ، استعاد Knight وظيفة التتبع التراكمية هذه إلى مرحلة سابقة من تنفيذ التعليمات البرمجية (وبالتالي إزالة تتبع الكمية من Power Peg).
عندما تم تنشيط إشارة Power Peg على الخادم الثامن ، بدأ Power Peg في توجيه الطلبات الفرعية للتنفيذ ، لكن لم يتم ربطها بعدد المشاركات في الترتيب الأصل - نشأ نوع من الحلقة المغلقة
جهنم 45 دقيقة
تخيل: لديك نظام يمكنه إرسال تطبيقات تلقائية عالية السرعة إلى السوق دون أي تتبع والقدرة على معرفة ما إذا كان قد تم إكمال عدد كاف من التطبيقات. نعم ، كل شيء تحول سيء للغاية.
عندما فتح السوق في الساعة 9:30 صباحًا ، أدرك الناس بسرعة أن هناك شيئًا ما خطأ. بحلول الساعة 9:31 صباحًا ، أدرك الكثيرون في وول ستريت أن شيئًا خطيرًا كان يحدث. لقد غمر السوق بالعطاءات بشكل غير عادي ، مقارنة مع الوضع الطبيعي ، وحجم التداول لأسهم معينة. بحلول الساعة 9:32 في وول ستريت ، تساءلوا عن سبب توقف هذا الخزي. تقريبا إلى الأبد في تجارة عالية السرعة. لماذا لم ينقر شخص ما على زر القتل على النظام الذي قام بذلك؟ كما اتضح ، لم يكن هناك التبديل. خلال أول 45 دقيقة من التداول ، بلغ تنفيذ المعاملات من Knight أكثر من 50 ٪ من حجم التداول ، مما رفع بعض الأسهم بنسبة تزيد عن 10 ٪ من قيمتها. نتيجة لذلك ، انخفضت قيمة الأسهم الأخرى بسبب المعاملات الخاطئة.
ومما زاد الطين بلة ، بدأ نظام Knight بإرسال رسائل بريد إلكتروني آلية حتى قبل هذه الأحداث - في تمام الساعة 8:01 صباحًا (عندما عالجت SMARS الطلبات المناسبة للتداول قبل السوق). في الرسائل ، أشار النظام إلى SMARS وأظهر الخطأ "Power Peg غير متوفر." بين الساعة 8:01 صباحًا و 9:30 صباحًا ، تم إرسال 97 رسالة إلى موظفي Knight. بالطبع ، لم تبدو هذه الرسائل وكأنها تحذيرات النظام ، لذلك لم ينظر إليها أحد على الفور. أوه.
لمدة 45 دقيقة ، حاول Knight إيقاف المعاملة الخاطئة. لم يكن من الممكن إيقاف تشغيل النظام (نظرًا لعدم وجود إجراءات موثقة للاستجابة لمثل هذا الموقف) ، وبالتالي ، في محاولة للتعامل مع المشكلة في ظروف التداول الحية ، بقوا في السوق ، حيث تم بيع 8 ملايين سهم كل دقيقة. نظرًا لأن موظفي الشركة لم يتمكنوا من تحديد مصدر التطبيقات الخاطئة ، فقد أزالوا الكود الجديد من الخوادم التي تم نشرها بشكل صحيح. بمعنى آخر ، قاموا بحذف رمز العمل وتركوه مكسورة. أدى هذا فقط إلى تفاقم المشكلات التي تسبب طلبات الوالدين الإضافية لتنشيط رمز Power Peg على جميع الخوادم ، وليس فقط حيث تم نشر الكود في الأصل بشكل غير صحيح. في النهاية ، تمكنت من إيقاف النظام - بعد 45 دقيقة من التداول.
أثناء بدء التداول ، تلقى رمز Power Peg وتلقى 212 طلبًا من الوالدين. ونتيجة لذلك ، أرسلت SMARS ملايين الشركات التابعة إلى السوق ، وأكملت 4 ملايين معاملة في 154 صفقة بأكثر من 397 مليون سهم. بالنسبة لخبراء البورصة ، كان هذا يعني أن نايت اشترت أسهم 80 شركة مختلفة مقابل 3.5 مليار دولار ، وباعت أسهم 74 شركة مقابل 3.15 مليار دولار ، من وجهة نظر غير المحترفين ، خسرت مجموعة كابيتال نايت 460 مليون دولار في 45 دقيقة. لكن Knight لديها فقط 365 مليون دولار نقدًا وما يعادله. في 45 دقيقة ، تحولت Knight من أكبر متداول للأسهم الأمريكية وصانع سوق رئيسي في بورصة نيويورك وناسداك إلى إفلاس. كان لديهم 48 ساعة لتحصيل المبلغ اللازم لتغطية الخسائر (التي كانوا قادرين على فعلها بفضل استثمار 400 مليون دولار من حوالي نصف دزينة من المستثمرين). في النهاية ، تم الاستحواذ على Knight Capital Group من قبل Getco LLC (في ديسمبر 2012) ، والآن تسمى الشركة المدمجة KCG Holdings.
ما هي الاستنتاجات التي تحتاج إلى رسم
يجب أن تكون أحداث 1 أغسطس 2012 درسًا لجميع فرق التطوير وفرق المشروع. لا يكفي إنشاء برنامج رائع واختباره ؛ تحتاج أيضًا إلى التأكد من تسليمها بشكل صحيح إلى السوق حتى يتلقى عملاؤك القيمة التي تقدمها بالضبط (وأنك لا تفلس شركتك). المهندس (المهندسين) الذين قاموا بنشر SMARS ليسوا مسؤولين فقط عن حقيقة أن الإجراء المتبع في Knight لم يأخذ المخاطر في الاعتبار. كان الإجراء (أو غيابه) خاطئًا بشكل واضح. في كل مرة تعتمد عملية النشر على كيفية قراءة الأشخاص واتباع التعليمات ، فإنك تعرض نفسك للخطر. الناس يخطئون. يمكن أن تكون الأخطاء في التعليمات أو في تفسير التعليمات أو في تنفيذها.
يجب أن يكون التصميم تلقائيًا وقابل للتكرار وخاليًا من الأخطاء البشرية المحتملة. إذا كان Knight قد طبق نظام نشر تلقائي - مجموعة من التكوين ، النشر التلقائي ، والاختبار - فإن الخطأ الذي تحول إلى كابوس Knight كان يمكن تجنبه.
إليك بضعة مبادئ للتسليم المستمر (حتى إذا لم تقم بتنفيذ العملية الكاملة للتسليم المستمر):
- يجب أن يكون إصدار البرنامج عملية قابلة للتكرار وموثوق بها.
- أتمتة كل ما تستطيع.