حالت تاریک
فصل ۱۲ — جمعه، ۱۲ سپتامبر
ساعت ۷:۳۰ عصر جمعه است، دو ساعت بعد از زمان برنامهریزیشده برای شروع استقرار Phoenix. و اوضاع خوب پیش نمیرود. دارم بوی پیتزا را با بیفایده بودن یک death march گره میزنم.
کل تیم عملیات IT برای استقرار ساعت ۴ بعدازظهر جمع شده بود. ولی کاری نبود چون چیزی از تیم Chris نگرفته بودیم؛ هنوز داشتند تغییرات لحظهٔ آخر میدادند.
وقتی هنوز دارند قطعات را به شاتل فضایی وصل میکنند، زمان پرتاب، نشانهٔ خوبی نیست.
ساعت ۴:۳۰ بعدازظهر، William با خشم به اتاق جنگ Phoenix ریخت، از اینکه کسی نتوانسته همهٔ کد Phoenix را در محیط آزمایش اجرا کند. بدتر، بخشهایی از Phoenix که اجرا میشدند در آزمونهای حیاتی شکست میخوردند.
William شروع کرد به فرستادن گزارش باگهای حیاتی به developerها، که خیلیشان برای امروز خانه رفته بودند. Chris مجبور شد آنها را برگرداند و تیم William باید منتظر میماند developerها نسخههای جدید بفرستند.
تیم من فقط دور نشسته و انگشت میچرخاندند نبود. بهجای آن با تیم William بهطرز دیوانهوار کار میکردیم تا همهٔ Phoenix در محیط آزمایش بالا بیاید. چون اگر در محیط آزمایش نمیتوانستند اجرا کنند، شانسی برای استقرار و اجرا در production نداشتیم.
نگاهم از ساعت به میز کنفرانس میرود. Brent و سه مهندس دیگر با همتایان QA دور هم جمع شدهاند. از ساعت ۴ بعدازظهر دیوانهوار کار کردهاند و از قبل خسته به نظر میرسند. خیلیها لپتاپشان روی جستوجوی Google باز است و بقیه سیستماتیک تنظیمات سرورها، سیستمعاملها، پایگاههای داده و اپلیکیشن Phoenix را دستکاری میکنند تا بفهمند چطور همهچیز را بالا بیاورند، چیزی که developerها تضمین کرده بودند ممکن است.
یکی از developerها چند دقیقه پیش وارد شد و گفت: «ببینید، روی لپتاپ من اجرا میشود. چقدر سخت میتواند باشد؟»
Wes شروع به فحش دادن کرد، در حالی که دو مهندس ما و سه مهندس William لپتاپ developer را ورق میزدند تا بفهمند چه تفاوتی با محیط آزمایش دارد.
در بخش دیگر اتاق، یک مهندس با عصبانیت با کسی تلفنی حرف میزند: «بله، فایلی که دادید را کپی کردیم… بله، نسخه ۱.۰.۱۳ است… منظورتان نسخهٔ اشتباه چیست… کی عوضش کردید؟… الان کپی کنید و دوباره امتحان کنید… باشه، ولی میگویم کار نمیکند… فکر میکنم مشکل شبکه است… منظورتان باید پورت firewall باز کنیم چیست؟ چرا دو ساعت پیش نگفتید؟»
بعد تلفن را با شدت میگذارد و با مشت به میز میکوبد و فریاد میزند: «احمقها!»
Brent از لپتاپ developer سرش را بلند میکند و با خستگی چشمهایش را میمالد. «حدس میزنم. front-end نمیتواند با سرور پایگاه داده حرف بزند چون کسی نگفته باید پورت firewall باز کنیم؟»
مهندس با خشم خسته سر تکان میدهد و میگوید: «باورم نمیشود. بیست دقیقه با آن آدم تلفنی بودم و هرگز به ذهنش نرسید مشکل کد نباشد. این FUBAR است.»
آرام به حرف زدن ادامه میدهم، ولی به تشخیصش سر تکان میدهم. در سپاه دریایی از اصطلاح FUBAR استفاده میکردیم.
با دیدن عصبانیتها به ساعتم نگاه میکنم: ۷:۳۷ عصر.
وقت است از تیمم یک gut check مدیریتی بگیرم. Wes و Patty را جمع میکنم و دنبال William میگردم. پیدایش میکنم که از شانهٔ یکی از مهندسهایش نگاه میکند. میخواهم به ما بپیوندد.
لحظهای گیج به نظر میرسد چون معمولاً با هم کار نمیکنیم، ولی سر تکان میدهد و به دفترم دنبالمان میآید.
«باشه بچهها، بگویید دربارهٔ این وضعیت چه فکر میکنید،» میپرسم.
Wes اول حرف میزند: «آنها حق دارند. این FUBAR است. هنوز releaseهای ناقص از developerها میگیریم. در دو ساعت گذشته، دو مورد دیدم که چند فایل حیاتی را فراموش کرده بودند بدهند، که تضمین میکرد کد اجرا نشود. و همانطور که دیدید، هنوز نمیدانیم چطور محیط آزمایش را پیکربندی کنیم تا Phoenix تمیز بالا بیاید.»
دوباره سرش را تکان میدهد. «بر اساس چیزی که نیم ساعت اخیر دیدم، فکر میکنم واقعاً عقب رفتهایم.»
Patty فقط با انزجار سر تکان میدهد و دستش را تکان میدهد و چیزی اضافه نمیکند.
به William میگویم: «میدانم زیاد با هم کار نکردهایم، ولی واقعاً میخواهم بدانم تو چه فکر میکنی. از دید تو چطور به نظر میرسد؟»
پایین نگاه میکند، آهسته بازدم میکشد و میگوید: «صادقانه نمیدانم. کد آنقدر سریع عوض میشود که مشکل داریم دنبالش برویم. اگر شرطبندی میکردم، میگفتم Phoenix در production منفجر میشود. چند بار با Chris دربارهٔ توقف release حرف زدم، ولی او و Sarah رویم راه رفتند.»
میپرسم: «منظورت از «نمیتوانیم دنبال کنیم» چیست؟»
«وقتی در آزمونها مشکل پیدا میکنیم، به Development برمیگردانیم تا درست کنند،» توضیح میدهد. «بعد release جدید میفرستند. مشکل این است که حدود نیم ساعت طول میکشد همهچیز را راه بیندازیم و اجرا کنیم، و بعد سه ساعت دیگر برای اجرای smoke test. در آن وقت احتمالاً سه release دیگر از Development گرفتهایم.»
به اشارهٔ smoke test لبخند میزنم، اصطلاحی که طراحان مدار استفاده میکنند. میگویند: «اگر برد مدار را روشن کنی و دودی نیاید، احتمالاً کار میکند.»
سرش را تکان میدهد و میگوید: «هنوز یک بار هم smoke test را تمام نکردهایم. نگرانم دیگر کنترل نسخهٔ کافی نداریم — آنقدر سست شدهایم در پیگیری شمارهٔ نسخهٔ کل release. هر بار چیزی را درست میکنند، معمولاً چیز دیگری را میشکنند. پس بهجای کل بسته، فایلهای تکی میفرستند.»
ادامه میدهد: «الان آنقدر آشفته است که حتی اگر با معجزه Phoenix از smoke test بگذرد، مطمئن نیستم بتوانیم تکرارش کنیم، چون قطعات متحرک خیلی زیاد است.»
عینکش را برمیدارد و با قطعیت میگوید: «احتمالاً برای همه شب بیدار میماند. فکر میکنم خطر واقعی داریم که فردا ساعت ۸ صبح، وقتی فروشگاهها باز میشوند، چیزی بالا و در حال اجرا نباشد. و این مشکل بزرگی است.»
این خیلی کمگویی است. اگر release تا ۸ صبح تمام نشود، سیستمهای POS فروشگاهها برای تسویهٔ مشتریان کار نمیکنند. یعنی نمیتوانیم تراکنش مشتری را کامل کنیم.
Wes سر تکان میدهد. «William حق دارد. قطعاً تمام شب اینجا هستیم. و performance بدتر از آن چیزی است که حتی فکر میکردم. حداقل بیست سرور دیگر لازم داریم تا بار را پخش کنیم و نمیدانم این همه را با این اخطار کوتاه از کجا پیدا کنیم. چند نفر را فرستادهام هر سختافزار اضافهای پیدا کنند. شاید حتی مجبور شویم سرورهای production را قربانی کنیم.»
«دیر نشده استقرار را متوقف کنیم؟» میپرسم. «دقیقاً نقطهٔ برگشتناپذیر کی است؟»
«سؤال خیلی خوبی است.» Wes آهسته جواب میدهد. «باید با Brent چک کنم، ولی فکر میکنم الان میتوانیم استقرار را بدون مشکل متوقف کنیم. ولی وقتی شروع کنیم پایگاه داده را تبدیل کنیم تا سفارش از هم سیستمهای POS فروشگاه و هم Phoenix بگیرد، متعهد شدهایم. با این سرعت، فکر نمیکنم تا چند ساعت دیگر برسد.»
سر تکان میدهم. آنچه لازم داشتم شنیدم.
«بچهها، به Steve و Chris و Sarah ایمیل میزنم ببینم میتوانم استقرار را به تأخیر بیندازم. بعد Steve را پیدا میکنم. شاید یک هفتهٔ دیگر بگیریم. ولی حتی یک روز دیگر هم برد است. نظری دارید؟»
Wes و Patty و William فقط غمگین سر تکان میدهند و چیزی نمیگویند.
به Patty میگویم: «برو با William کار کن بفهمید چطور هماهنگی بهتری در releaseها داشته باشیم. برو پیش developerها و نقش کنترلکنندهٔ ترافیک هوایی بازی کن و مطمئن شو همهچیز در آن طرف برچسب و نسخهگذاری شده. بعد به Wes و تیمش بگو چه چیزی میآید. به دید بهتر و کسی که مردم را وادار به رعایت فرایند کند نیاز داریم. یک نقطهٔ ورود واحد برای code drop، releaseهای کنترلشدهٔ ساعتی، مستندسازی… منظورم را میفهمی؟»
میگوید: «با کمال میل. اول به اتاق جنگ Phoenix میروم. اگر لازم باشد در را میشکنم و میگویم: «ما اینجاییم تا کمک کنیم…»»
به همه سر تکان تشکر میدهم و به لپتاپم میروم ایمیل بنویسم.
From: Bill Palmer
To: Steve Masters
Cc: Chris Anderson, Wes Davis, Patty McKee, Sarah Moulton, William Mason
Date: September 12, 7:45 PM
Priority: Highest
Subject: URGENT : Phoenix deployment in major trouble—my recommendation: 1 week delay
Steve،
اول بگذار بگویم من به اندازهٔ هر کس دیگری میخواهم Phoenix در production باشد. میدانم برای شرکت چقدر مهم است.
با این حال، بر اساس چیزی که دیدهام، باور دارم تا فردا ساعت ۸ صبح Phoenix بالا نخواهد آمد. خطر قابلتوجهی دارد که حتی روی سیستمهای POS فروشگاهها هم اثر بگذارد.
پس از گفتوگو با William توصیه میکنم راهاندازی Phoenix را یک هفته به تأخیر بیندازیم تا احتمال موفقیت Phoenix بیشتر شود و از آنچه باور دارم فاجعهٔ تقریباً قطعی است جلوگیری کنیم.
فکر میکنم با مشکلاتی در مقیاس فاجعهٔ «Thanksgiving ۱۹۹۹ Toys R Us» روبهرویم، یعنی قطعیهای چندروزه و مشکلات performance که ممکن است دادهٔ مشتری و سفارش را در خطر بیندازد.
Steve، تا چند دقیقهٔ دیگر بهت زنگ میزنم.
با احترام،
Bill
لحظهای جمع میکنم افکارم را و به Steve زنگ میزنم که از اولین زنگ جواب میدهد.
«Steve، Bill است. تازه ایمیلی به تو و Sarah و Chris فرستادم. نمیتوانم بگویم این rollout تا اینجا چقدر بد پیش رفته. دارد به ما گیر میدهد. حتی William موافق است. تیمم الان بسیار نگران است rollout بهموقع برای باز شدن فروشگاهها ساعت ۸ صبح فردا به وقت شرقی تمام نشود. آن میتواند توانایی فروشگاهها در فروش را مختل کند و احتمالاً قطعیهای چندروزهٔ وبسایت را هم بیاورد.
«دیر نشده این فاجعه را متوقف کنیم،» التماس میکنم. «شکست یعنی مشکل در گرفتن سفارش از هر کسی، چه در فروشگاه و چه در اینترنت. شکست میتواند یعنی به خطر انداختن و خراب کردن دادهٔ سفارش و سوابق مشتری، یعنی از دست دادن مشتری. تأخیر یک هفته فقط یعنی ناامید کردن مشتریان، ولی حداقل برمیگردند!»
Steve در تلفن نفس میکشد و جواب میدهد: «بد به نظر میرسد، ولی در این نقطه انتخابی نداریم. باید ادامه دهیم. Marketing از قبل آگهیهای آخر هفتهٔ روزنامه را برای اعلام در دسترس بودن Phoenix خریده. خریده شده، پرداخت شده و به خانهها در سراسر کشور تحویل داده میشود. شریکهایمان همه آمادهاند.»
مبهوت میگویم: «Steve، چقدر باید بد باشد تا release را به تأخیر بیندازی؟ میگویم در این rollout در حال گرفتن سطحی از خطر بیپرواست!»
چند لحظه مکث میکند. «بگذار اینطور بگویم. اگر بتوانی Sarah را قانع کنی rollout را به تأخیر بیندازد، حرف بزنیم. وگرنه ادامه بده.»
«شوخی میکنی؟ او کسی است که این آشفتگی کمیکازه را ساخته.»
قبل از اینکه جلوی خودم را بگیرم، تلفن را روی Steve قطع میکنم. لحظهای کوتاه فکر میکنم برگردانم و عذرخواهی کنم.
هرچند نفرت دارم، احساس میکنم به شرکت یک تلاش آخر برای توقف این دیوانگی بدهم. یعنی حضوری با Sarah حرف بزنم.
در اتاق جنگ Phoenix هوا گرفته و بوی عرق زیاد آدمها از تنش و ترس میآید. Sarah تنها نشسته و روی لپتاپش تایپ میکند.
به او میگویم: «Sarah، میتوانیم حرف بزنیم؟»
به صندلی کنارش اشاره میکند و میگوید: «حتماً. چه خبر؟»
وقتی با صدای پایین میگویم: «بیا در راهرو حرف بزنیم.»
در سکوت با هم بیرون میرویم و میپرسم: «از این بالا release چطور به نظر میرسد؟»
بیتعهد میگوید: «میدانی وقتی میخواهیم چابک باشیم اینها چطور پیش میروند، درست است؟ همیشه در فناوری چیزهای پیشبینینشده هست. اگر میخواهی املت درست کنی، باید حاضر باشی تخممرغ بشکنی.»
«فکر میکنم کمی بدتر از rollout معمولی شماست. ایمیلم را دیدی، درست است؟»
فقط میگوید: «بله، البته. و جوابم را دیدی؟»
لعنتی.
میگویم: «نه. ولی قبل از توضیحت، میخواستم مطمئن شوم پیامدها و خطرهایی که برای کسبوکار ایجاد میکنیم را فهمیدهای.» و تقریباً کلمهبهکلمه آنچه چند دقیقه پیش به Steve گفتم تکرار میکنم.
بیتعجب Sarah تحتتأثیر قرار نمیگیرد. به محض اینکه حرفم تمام میشود میگوید: «همه برای رساندن Phoenix به اینجا جان کندهاند. Marketing آماده است، Development آماده است. همه آمادهاند جز تو. قبلاً هم گفتم، ولی ظاهراً گوش نمیدهی: کمال دشمن خوب است. باید ادامه دهیم.»
با تحسین این اتلاف وقت عظیم فقط سرم را تکان میدهم و میگویم: «نه، ناتوانی دشمن خوب است. حرفم را یادت باشد. روزها، اگر نه هفتهها، داریم تکهها را جمع میکنیم بهخاطر تصمیمهای احمقانهٔ تو.»
وقتی با خشم به NOC برمیگردم، ایمیل Sarah را میخوانم که مرا بیشتر عصبانی میکند. مقاومت میکنم جواب بدهم و آتش را شعلهورتر کنم. همچنین مقاومت میکنم وسوسهٔ حذفش — شاید بعداً برای پوشش خودم لازمش داشته باشم.
From: Sarah Moulton
To: Bill Palmer, Steve Masters
Cc: Chris Anderson, Wes Davis, Patty McKee, William Mason
Date: September 12, 8:15 PM
Priority: Highest
Subject: Re: URGENT : Phoenix deployment in major trouble—my recommendation: 1 week delay
همه آمادهاند جز تو. Marketing، Dev، Project Management همهٔ توانشان را برای این پروژه گذاشتهاند. نوبت توست.
باید برویم!
Sarah
ناگهان لحظهای وحشت میکنم که ساعتها به Paige چیزی نگفتهام. برایش پیام کوتاه میفرستم:
شب بدتر میشود. حداقل چند ساعت دیگر اینجام. صبح میبینمت. دوستت دارم. آرزوی موفقیت کن، عزیزم.
احساس میکنم کسی شانهام را میزند و برمیگردم Wes را میبینم. «رئیس. مشکل خیلی جدی داریم.»
حالت چهرهاش کافی است بترسم. سریع بلند میشوم و به طرف دیگر اتاق دنبالش میروم.
«یادت است حدود ساعت ۹ شب به نقطهٔ برگشتناپذیر رسیدیم؟ پیشرفت تبدیل پایگاه دادهٔ Phoenix را دنبال میکنم و هزاران برابر کندتر از آن چیزی است که فکر میکردیم. قرار بود ساعتها پیش تمام شود، ولی فقط ده درصد کامل شده. یعنی همهٔ داده تا سهشنبه تبدیل نمیشود. کاملاً گیر کردهایم.»
شاید خستهتر از آنچه فکر میکردم هستم چون نمیفهمم. میگویم: «چرا این مشکل است؟»
Wes دوباره تلاش میکند: «آن script باید قبل از بالا آمدن سیستمهای POS تمام شود. نمیتوانیم script را متوقف کنیم و نمیتوانیم دوباره راه بیندازیمش. ظاهراً کاری نمیتوانیم بکنیم سریعتر شود. فکر میکنم میتوانیم Phoenix را هک کنیم تا اجرا شود، ولی دربارهٔ سیستمهای POS فروشگاه نمیدانم — در آزمایشگاه برای تست نداریم.»
لعنتی.
دو بار فکر میکنم قبل از اینکه بپرسم: «Brent؟»
فقط سر تکان میدهد. «چند دقیقه بهش نگاه کردم. فکر میکند کسی indexing پایگاه داده را زودتر از موعد روشن کرده که insertها را کند میکند. الان کاری نمیتوانیم بکنیم بدون اینکه داده را خراب کنیم. برش گرداندم سر استقرار Phoenix.»
«بقیهٔ اوضاع چطور است؟» میپرسم و ارزیابی کامل میخواهم. «بهبودی در performance؟ خبری از ابزارهای نگهداری پایگاه داده؟»
«performance هنوز وحشتناک است،» میگوید. «فکر میکنم memory leak بزرگی هست، و این حتی بدون هیچ کاربری. بچههایم حدس میزنند مجبور شویم هر چند ساعت یکبار دستهای از سرورها را reboot کنیم تا منفجر نشوند. developerهای لعنتی…»
ادامه میدهد: «پانزده سرور دیگر جمع کردهایم، بعضی جدید و بعضی از گوشههای مختلف شرکت کشیدهایم. و حالا، باور کن یا نه، جا در رکهای دیتاسنتر برای استقرارشان نداریم. باید کار بزرگ recabling و racking انجام دهیم و چیزها را جابهجا کنیم. Patty تازه تماس گرفت و دستهای از بچههایش را برای کمک آورد.»
ابروهایم از تعجب واقعی به پیشانی میرود. بعد خم میشوم و میخندم. میگویم: «وای خدایا. بالاخره سرور پیدا کردیم برای استقرار، و حالا جا برای گذاشتنشان نداریم. شگفتانگیز. اصلاً استراحت نمیکنیم!»
Wes سر تکان میدهد. «میدانی، از دوستانم چنین داستانهایی شنیدهام. ولی این ممکن است مادر همهٔ شکستهای استقرار شود.»
ادامه میدهد: «جالبترین بخش این است: سرمایهگذاری بزرگی در virtualization کردیم که قرار بود از چنین چیزهایی نجاتمان دهد. ولی وقتی Development نتوانست مشکلات performance را حل کند، virtualization را مقصر دانست. پس مجبور شدیم همهچیز را برگردانیم روی سرورهای فیزیکی!»
و فکر کنم Chris این تاریخ rollout تهاجمی را پیشنهاد داد چون virtualization قرار بود نجاتمان دهد.
چشمهایم را پاک میکنم و مجبور میشوم خنده را متوقف کنم. «و ابزارهای پشتیبانی پایگاه دادهای که developerها قول داده بودند چطور؟»
Wes فوراً لبخندش را قطع میکند. «زبالهٔ مطلق. بچههایمان مجبورند دستی پایگاه داده را ویرایش کنند تا همهٔ خطاهایی که Phoenix تولید میکند درست شود. و مجبوریم دستی replenishment را trigger کنیم. هنوز داریم میفهمیم Phoenix چقدر از این نوع کار دستی میخواهد. خیلی مستعد خطا خواهد بود و آدم زیادی لازم دارد.»
چشمهایم را تنگ میکنم و فکر میکنم این چقدر بیشتر بچههایمان را مشغول میکند، کار سادهای که اپلیکیشن خراب باید انجام میداد. چیزی حسابرسان را بیشتر از ویرایش مستقیم داده بدون audit trail و کنترلهای مناسب نگران نمیکند.
«کار عالی اینجا میکنی. اولویت اصلی ما فهمیدن اثر تبدیل ناقص پایگاه داده روی سیستم POS فروشگاه است. کسی پیدا کن که آن چیزها را از درون و بیرون بشناسد و نظرش را بگیر. اگر لازم است کسی از تیم Sarah که عملیات retail روزانه را مدیریت میکند را زنگ بزن. امتیاز اضافه اگر بتوانی دستگاه POS و سروری پیدا کنی که بتوانیم لاگین کنیم و خودمان اثر را ببینیم.»
«فهمیدم،» Wes سر تکان میدهد. «دقیقاً میدانم چه کسی را روی این بگذارم.»
میبینم میرود و بعد نگاه میکنم بفهمم کجا میتوانم مفیدترین باشم.
نور صبح از پنجرهها داخل میآید و کثافت انباشتهٔ فنجانهای قهوه، کاغذها و انواع دیگر آشغال را نشان میدهد. در گوشهای، یک developer زیر چند صندلی خوابیده.
تازه به دستشویی دویدهام صورتم را بشویم و کثافت دندانها را پاک کنم. کمی تازهترم، ولی سالهاست all-nighter نکشیدهام.
Maggie Lee، مدیر ارشد مدیریت برنامهٔ Retail، زیر دست Sarah کار میکند. جلسهٔ اضطراری ساعت ۷ صبح را شروع میکند و نزدیک سی نفر اتاق را پر کردهاند. با صدای خسته میگوید: «شبی از قهرمانبازی بود و از همه بابت انجام دادن آنچه برای تعهدات Phoenix لازم بود قدردانی میکنم.
«همانطور که میدانید، دلیل این جلسهٔ اضطراری این است که چیزی در تبدیل پایگاه داده اشتباه شد،» ادامه میدهد. «یعنی همهٔ سیستمهای POS فروشگاه از کار افتادهاند، یعنی فروشگاهها صندوق فروش کار نخواهند داشت. یعنی صندوق دستی و swipe دستی کارت.»
اضافه میکند: «خبر خوب این است که وبسایت Phoenix بالا و در حال اجراست.» به من اشاره میکند و میگوید: «تشکر از Bill و کل تیم عملیات IT بابت این.»
عصبانی میگویم: «خیلی ترجیح میدهم آن سیستمهای POS بالا باشند بهجای Phoenix. جهنم در NOC شکسته. تمام تلفنهایمان یک ساعت گذشته روشن بوده چون مردم در فروشگاهها فریاد میزنند سیستمهایشان جواب نمیدهد. مثل تلثون Jerry Lewis آنجاست. مثل همهٔ شما، voicemail من هم از کارکنان ۱۲۰ فروشگاهمان پر شده. باید آدم بیشتری بیاوریم فقط برای پاسخ به تلفنها.»
یک تلفن جایی روی میز میلرزد، انگار حرفم را تأیید میکند.
«باید پیشفعال باشیم،» به Sarah میگویم. «باید هرچه زودتر خلاصهای برای همه در فروشگاهها بفرستیم که چه اتفاقی افتاده و دستورالعملهای مشخصتری برای ادارهٔ عملیات بدون سیستمهای POS.»
Sarah لحظهای گیج به نظر میرسد و بعد میگوید: «ایدهٔ خوبی است. تو پیشنویس اول ایمیل را بنویس و ما ادامه میدهیم؟»
مبهوت میگویم: «چی؟ من مدیر فروشگاه نیستم! چطور است گروه شما پیشنویس اول را بنویسد و Chris و من مطمئن شویم دقیق است.»
Chris سر تکان میدهد.
Sarah به اطراف اتاق نگاه میکند. «باشه. تا چند ساعت دیگر چیزی آماده میکنیم.»
«شوخی میکنی؟» فریاد میزنم. «فروشگاههای ساحل شرقی کمتر از یک ساعت دیگر باز میشوند — باید الان چیزی بفرستیم!»
«من رسیدگی میکنم،» Maggie دستش را بالا میبرد. فوراً لپتاپش را باز میکند و شروع به تایپ میکند.
سرم را بین دستهایم میفشارم ببینم آیا میتوانم سردردم را کمتر کنم و فکر میکنم این rollout چقدر بدتر میتواند شود.
تا ساعت ۲ بعدازظهر شنبه، کاملاً روشن است که کف خیلی پایینتر از آن چیزی است که فکر میکردم ممکن است.
همهٔ فروشگاهها الان در حالت fallback دستی کامل کار میکنند. همهٔ فروشها با آن دستگاههای imprint دستی کارت اعتباری پردازش میشوند و imprintهای کربن در جعبههای کفش نگهداری میشوند.
مدیران فروشگاه کارمندان را فرستادهاند به فروشگاههای لوازم اداری محلی برای پیدا کردن برگههای کربن بیشتر برای دستگاههای imprint کارت، و همچنین به بانک تا بتوانند پول خرد درست بدهند.
مشتریانی که از وبسایت Phoenix استفاده میکنند از اینکه یا از کار افتاده یا آنقدر کند است که غیرقابل استفاده است شکایت میکنند. حتی توانستهایم موضوع ترند Twitter شویم. همهٔ مشتریانی که برای امتحان خدماتمان هیجانزده بودند بعد از دیدن آگهیهای تلویزیون و روزنامهمان از شکست بزرگ IT ما شکایت کردند.
مشتریانی که توانستند آنلاین سفارش دهند وقتی برای برداشت سفارش به فروشگاه رفتند بیدار شدن تلخی داشتند. آن وقت فهمیدیم Phoenix ظاهراً تصادفی تراکنشها را گم میکند و در موارد دیگر دو یا سه بار از کارت اعتباری مشتریانمان برداشت میکند.
از اینکه احتمالاً یکپارچگی دادهٔ سفارش فروش را از دست دادهایم، Ann از Finance با عصبانیت آمد و تیمش اتاق جنگ دیگری در راهرو راه انداخته و تماسهای فروشگاهها را برای رسیدگی به سفارشهای مشکلدار پاسخ میدهد. تا ظهر، تودههای کاغذ از صدها مشتری عصبانی بود که از فروشگاهها fax میشد.
برای پشتیبانی از Ann، Wes مهندسهای بیشتری آورد تا ابزاری برای کارکنان Ann بسازند تا انباشت همیشه در حال رشد تراکنشهای خراب را پردازش کنند.
وقتی برای سومین بار از میز NOC رد میشوم، تصمیم میگیرم آنقدر خستهام که برای هیچکس مفید نیستم. تقریباً ساعت ۲:۳۰ بعدازظهر است.
Wes با کسی در آن طرف اتاق بحث میکند، پس صبر میکنم تمام شود. به او میگویم: «بپذیریم این قرار است یک ماجرای چندروزه باشد. حالت چطور است؟»
آه میکشد و جواب میدهد: «توانستم یک ساعت بخوابم. وای، تو وحشتناک به نظر میرسی. برو خانه و چند ساعت بخواب. اینجا همهچیز دست من است. اگر چیزی پیش آمد زنگ میزنم.»
خیلی خستهام که بحث کنم، تشکر میکنم و میروم.
با شنیدن زنگ گوشی همراهم با وحشت از خواب میپرم. گوشی را میگیرم. ساعت ۴:۳۰ بعدازظهر است. Wes زنگ زده.
سرم را تکان میدهم تا کمی هوشیاری پیدا کنم و جواب میدهم: «چه خبر؟»
میشنوم میگوید: «خبر بد. خلاصه، همه جا در Twitter است که وبسایت Phoenix شمارهٔ کارت اعتباری مشتریان را لو میدهد. حتی screenshot میگذارند. ظاهراً وقتی سبد خرید را خالی میکنی، session کرش میکند و شمارهٔ کارت اعتباری آخرین سفارش موفق را نشان میدهد.»
از قبل از تخت بیرون پریدهام و به سمت حمام میروم تا دوش بگیرم. «به John زنگ بزن. قرار است دیوانه شود. احتمالاً پروتکلی برای این هست، با کلی paperwork و شاید حتی نیروی قانون. و احتمالاً وکیل هم.»
Wes جواب میدهد: «قبلاً زنگ زدم. او و تیمش در راهاند. و عصبانی است. دقیقاً مثل آن مرد از Pulp Fiction صدا میزد. حتی آن جمله دربارهٔ روز حساب و زدن مردم با انتقام بزرگ و خشم شدید را نقل کرد.»
میخندم. آن صحنه با John Travolta و Samuel L. Jackson را دوست دارم. اینطور CISO آرامخوی ما را تایپ نمیکردم، ولی میگویند همیشه باید مراقب آرامها باشی.
سریع دوش میگیرم. به آشپزخانه میروم و چند تکه پنیر رشتهای که پسرمان دوست دارد برمیدارم. با خودم در ماشین میبرم و رانندگی به دفتر را شروع میکنم.
وقتی به بزرگراه میروم، به Paige زنگ میزنم. از اولین زنگ جواب میدهد: «عزیزم، کجا بودی؟ سر کارم و بچهها پیش مادرماند.»
میگویم: «در واقع یک ساعت خانه بودم. به محض اینکه به تخت خزیدم خوابم برد، ولی Wes تازه زنگ زد. ظاهراً اپلیکیشن Phoenix شروع کرده به نشان دادن شمارهٔ کارت اعتباری مردم به کل دنیا. نقض امنیتی بزرگی است، پس دارم برمیگردم.»
آه ناراضی میشنوم. «بیش از ده سال اینجایی و هرگز اینقدر کار نکردهای. واقعاً مطمئن نیستم این ارتقا را دوست داشته باشم.»
«من و تو هر دو، عزیزم…» میگویم.