วันต่อมา Brent ก็กลับมาทำงานที่โปรเจกต์ Unicorn และ Engineer ระดับ Level 3 คนหนึ่งก็ได้เข้าร่วมทีมของ Dick ที่ไหนสักแห่งในแถบมิดเวสต์ที่มีหิมะตก ไม่กี่ชั่วโมงหลังจากนั้น ผมก็ได้รับสำเนาอีเมลจาก Sarah:
From: Sarah Moulton
To: Bob Strauss
Cc: Dick Landry, Steve Masters, Bill Palmer
Date: November 11, 7:24 AM
Subject: มีคนกำลังขัดขวาง Project Talon
Bob ฉันพบว่า Bill Palmer รักษาการ VP ของ IT Operations ได้ขโมย Resource ที่สำคัญของ Project Talon ไป
Bill ฉันกังวลมากกับการกระทำล่าสุดของคุณ ช่วยอธิบายหน่อยว่าทำไมคุณถึงสั่งให้ Brent กลับมา? เรื่องนี้ยอมรับไม่ได้จริงๆ บอร์ดบริหารได้สั่งให้เราพิจารณาทางเลือกเชิงกลยุทธ์แล้ว
ฉันขอเรียกร้องให้ Brent กลับเข้าร่วมทีม Talon โดยเร็วที่สุด โปรดยืนยันว่าคุณเข้าใจข้อความนี้แล้ว
Sarah
ด้วยความตกใจจริงๆ ที่ผมถูกกล่าวหาในอีเมลที่ส่งถึงประธานบริษัท ผมจึงโทรหา Steve เขาดูโกรธมากกับการเปลี่ยนฝ่ายอย่างชัดเจนของ Sarah หลังจากที่เขาสบถพึมพำออกมา เขาก็รับรองว่าเขาจะจัดการเรื่องนี้เอง และให้ผมดำเนินการตามแผนต่อไป
ในการประชุม stand-up ประจำวันของโปรเจกต์ Unicorn William ดูไม่มีความสุขนัก "ข่าวดีคือเมื่อคืนนี้เราสร้างรายงานโปรโมชันลูกค้าฉบับแรกสำเร็จแล้ว และดูเหมือนจะทำงานได้ถูกต้อง แต่ตัวโค้ดรันช้ากว่าที่เราคาดไว้ถึง 50 เท่า หนึ่งใน clustering algorithm ไม่สามารถประมวลผลแบบ parallel อย่างที่เราคิดไว้ ทำให้การรันการคาดการณ์ต้องใช้เวลากว่า 24 ชั่วโมง แม้จะใช้ชุดข้อมูลทดสอบลูกค้าขนาดเล็กก็ตาม"
เสียงบ่นระงมไปทั่วห้อง
Developer คนหนึ่งพูดว่า "เราใช้ brute force ไม่ได้เหรอ? แค่เพิ่ม hardware เข้าไปให้มากขึ้น ด้วย compute server ที่เพียงพอ เราก็น่าจะทำให้เวลาในการรันลดลงได้"
“คุณล้อเล่นรึเปล่า?” Wes พูดด้วยความระอา “เราตั้งงบไว้แค่เซิร์ฟเวอร์ที่เร็วที่สุดเท่าที่จะหาได้เพียง 20 เครื่องเท่านั้น คุณต้องใช้เซิร์ฟเวอร์เป็นพันเครื่องเลยนะถึงจะทำให้รันได้ตามเวลาที่ต้องการ นั่นคืองบลงทุนที่ไม่ได้ตั้งไว้กว่า 1 ล้านดอลลาร์เลยนะ!”
ผมเม้มปาก Wes พูดถูก โปรเจกต์ Phoenix งบบานปลายไปไกลมากแล้ว และเรากำลังพูดถึงเงินก้อนใหญ่ที่ไม่มีทางได้รับอนุมัติแน่ๆ โดยเฉพาะอย่างยิ่งเมื่อพิจารณาจากสถานะทางการเงินของเราในปัจจุบัน
“เราไม่จำเป็นต้องซื้อ hardware ใหม่นี่ครับ” Developer คนเดิมตอบ “เราลงทุนสร้าง compute image ที่พร้อม Deploy ไว้หมดแล้ว ทำไมไม่ส่งมันขึ้น Cloud ล่ะครับ? เราสามารถเปิดใช้ compute instance หลายร้อยหรือหลายพันตัวได้ตามต้องการ แล้วก็ปิดทิ้งเมื่อใช้งานเสร็จ และจ่ายเงินเฉพาะเวลาที่เราใช้ไปเท่านั้น”
Wes มองไปที่ Brent ซึ่งตอบว่า “มันเป็นไปได้ครับ เราใช้ Virtualization สำหรับ Environment ส่วนใหญ่อยู่แล้ว การแปลงพวกมันเพื่อให้รันบน Cloud provider ก็คงไม่ยากเท่าไหร่”
หลังจากนิ่งไปครู่หนึ่ง เขาก็เสริมว่า “คุณรู้ไหม มันน่าสนุกดีนะ ผมอยากลองทำอะไรแบบนี้มานานแล้ว”
ความตื่นเต้นของ Brent ดูจะส่งต่อให้คนอื่นไปทั่ว
เราเริ่มแบ่งงานกันเพื่อตรวจสอบความเป็นไปได้ Brent ร่วมมือกับ Developer คนที่เสนอไอเดียเพื่อทำต้นแบบ (prototype) อย่างรวดเร็ว เพื่อดูว่ามันเป็นไปได้จริงหรือไม่
Maggie ที่ให้ความสนใจในโปรเจกต์ Unicorn จนเข้ามาร่วมประชุม stand-up เป็นประจำ อาสาไปตรวจสอบเรื่องราคา และจะโทรปรึกษาเพื่อนร่วมวงการคนอื่นๆ เพื่อดูว่ามีใครเคยทำแบบนี้มาก่อนหรือไม่ และขอคำแนะนำเรื่อง Vendor
หนึ่งใน Security Engineer ของ John แทรกขึ้นมา “การส่งข้อมูลลูกค้าขึ้น Cloud อาจมีความเสี่ยง เช่น ข้อมูลส่วนตัวอาจรั่วไหลโดยไม่ตั้งใจ หรืออาจมีคนที่ไม่ได้รับอนุญาตเจาะเข้าระบบ compute server เหล่านั้น”
“คิดได้ดีมาก” ผมพูด “คุณช่วยสรุปรายการความเสี่ยงที่สำคัญที่สุดที่เราควรคำนึงถึง และเตรียมรายการวิธีการรับมือ (countermeasures) และการควบคุม (controls) ที่เป็นไปได้มาให้หน่อยได้ไหม?”
เขายิ้มตอบ รู้สึกดีที่ได้มีส่วนร่วม Developer คนหนึ่งอาสาทำงานร่วมกับเขา
เมื่อจบการประชุม ผมรู้สึกประหลาดใจกับผลประโยชน์ที่คาดไม่ถึงจากการทำ Automation ในกระบวนการ Deployment เหล่า Developer สามารถ Scale แอปพลิเคชันได้รวดเร็วขึ้น และเราอาจแทบไม่ต้องทำการแก้ไขอะไรมากนัก
อย่างไรก็ตาม ผมยังคงรู้สึกกังขามากกับเสียงอื้ออึงเรื่อง Cloud Computing พวกนี้ ผู้คนมองว่ามันเป็นเหมือนยาผีบอกที่ช่วยลดต้นทุนได้ทันตาเห็น ในมุมมองของผม มันก็แค่รูปแบบหนึ่งของการ Outsourcing เท่านั้นเอง
แต่ถ้ามันช่วยแก้ปัญหาที่เราเจออยู่ได้ ผมก็ยินดีที่จะลอง ผมเตือน Wes ให้เปิดใจให้กว้างไว้เช่นกัน
หนึ่งสัปดาห์ต่อมา ถึงเวลาเดโม (demo) อีกครั้ง เราทุกคนยืนอยู่ในพื้นที่ของทีม Unicorn มันเป็นช่วงสิ้นสุดของ Sprint และหัวหน้าทีม Development ก็กระตือรือร้นที่จะอวดผลงานของทีม
“ผมแทบไม่เชื่อเลยว่าเราจะทำได้ขนาดนี้” เขาเริ่ม “เพราะ Deployment Automation ทั้งหมด การเปิดใช้ compute instance บน Cloud เลยไม่ยากอย่างที่เราคิด อันที่จริงมันทำงานได้ดีมากจนเรากำลังพิจารณาจะเปลี่ยนระบบ production ของ Unicorn ภายในบริษัทให้กลายเป็นระบบทดสอบ และใช้ Cloud สำหรับระบบ production ทั้งหมดของเรา”
“เราเริ่มรันรายงานคำแนะนำ (recommendations report) ทุกเย็น และเปิดใช้ compute instance หลายร้อยตัวจนกว่าจะเสร็จ แล้วค่อยปิดพวกมันไป เราทำแบบนี้มาสี่วันแล้ว และมันได้ผลดีมาก ดีจริงๆ”
Brent ยิ้มกว้าง เช่นเดียวกับคนอื่นๆ ในทีม
ลำดับต่อไปมักจะเป็น Product Manager แต่ครั้งนี้เป็น Maggie ที่เป็นคนนำเสนอแทน เห็นได้ชัดว่าเธอให้ความสนใจกับโปรเจกต์นี้มากกว่าแค่เรื่องงานทั่วไป
เธอเปิดสไลด์ PowerPoint ขึ้นบนโปรเจคเตอร์ “นี่คือโปรโมชันของ Unicorn ที่สร้างขึ้นสำหรับบัญชีลูกค้าของฉันเอง อย่างที่คุณเห็น มันดูจากประวัติการซื้อของฉัน และแจ้งให้ทราบว่ายางสำหรับลุยหิมะและแบตเตอรี่ลดราคา 15 เปอร์เซ็นต์ ฉันเพิ่งเข้าไปที่เว็บไซต์และซื้อมาทั้งสองอย่างเลย เพราะฉันต้องการใช้อยู่พอดี บริษัทเพิ่งทำกำไรได้ เพราะนั่นเป็นสินค้าที่เรามีสต็อกเหลือเฟือและมีอัตรากำไรสูง”
ผมยิ้ม นี่แหละคือสิ่งที่ยอดเยี่ยม
“และนี่คือโปรโมชัน Unicorn สำหรับ Wes ค่ะ” เธอพูดต่อพร้อมกับเปิดสไลด์ถัดไปและยิ้ม “ดูเหมือนคุณจะได้ส่วนลดสำหรับผ้าเบรกสำหรับรถแข่งและสารเติมแต่งเชื้อเพลิงนะคะ สนใจไหมคะ?”
Wes ยิ้ม “ไม่เลวเลย!”
Maggie อธิบายว่าข้อเสนอทั้งหมดนี้มีอยู่ในระบบ Phoenix อยู่แล้ว และเพียงแค่รอฟังก์ชันโปรโมชันเพื่อส่งพวกมันให้ถึงมือลูกค้าในที่สุด
เธอกล่าวต่อ “นี่คือข้อเสนอของฉันค่ะ: ฉันอยากทำแคมเปญอีเมลส่งไปยังลูกค้า 1 เปอร์เซ็นต์ของเรา เพื่อรอดูผลลัพธ์ อีกหนึ่งสัปดาห์จะถึงวันขอบคุณพระเจ้าแล้ว ถ้าเราได้ทดสอบสักสองสามครั้งและทุกอย่างราบรื่น เราจะลุยเต็มตัวในวัน Black Friday ซึ่งเป็นวันที่ผู้คนช้อปปิ้งกันมากที่สุดในรอบปี”
“ฟังดูเป็นแผนที่ดีนะ” ผมพูด “Wes มีเหตุผลอะไรที่เราไม่ควรทำเรื่องนี้ไหม?”
Wes ส่ายหัว “จากมุมมองของ Ops ผมนึกไม่ออกเลยครับ งานยากๆ ทั้งหมดถูกจัดการไปแล้ว ถ้า Chris, William และทีม Marketing มั่นใจว่าโค้ดทำงานได้ถูกต้อง ผมก็บอกว่าลุยเลย”
ทุกคนเห็นพ้องต้องกัน มีบางประเด็นที่เกิดขึ้น แต่ Maggie บอกว่าทีมของเธอพร้อมที่จะทำงานตลอดทั้งคืนเพื่อให้มันสำเร็จ
ผมแอบยิ้มอยู่ในใจ ครั้งนี้มันจะไม่ใช่แค่พวกเราที่ต้องอยู่โต้รุ่งเพราะมีบางอย่างผิดพลาดร้ายแรง ในทางกลับกัน มันคือสิ่งที่ตรงกันข้ามเลย ผู้คนยอมอยู่โต้รุ่งเพราะทุกอย่างกำลังไปได้สวย
วันจันทร์ถัดมา อุณหภูมิเกือบจะถึงจุดเยือกแข็งขณะที่ผมขับรถไปทำงาน แต่แสงแดดส่องสว่างสดใส ดูเหมือนจะเป็นสัปดาห์ที่ยอดเยี่ยมสำหรับเทศกาลวันขอบคุณพระเจ้าที่กำลังจะมาถึง ตลอดช่วงวันหยุดสุดสัปดาห์ ผมรู้สึกแปลกใจเล็กน้อยที่เห็นโฆษณาที่มีซานตาคลอสอยู่ในนั้น
เมื่อผมมาถึงห้องทำงาน ผมเหวี่ยงเสื้อโค้ตหนาๆ ลงบนเก้าอี้ ผมหันกลับไปเมื่อได้ยิน Patty เดินเข้ามาในห้อง และเห็นว่าเธอยิ้มกว้าง “คุณได้ยินข่าวที่น่าทึ่งจากฝ่าย Marketing หรือยังคะ?”
เมื่อผมส่ายหน้า เธอก็แค่พูดว่า “ลองอ่านอีเมลที่ Maggie เพิ่งส่งมาสิคะ”
ผมเปิดแล็ปท็อปและอ่านอีเมล:
From: Maggie Lee
To: Chris Allers, Bill Palmer
Cc: Steve Masters, Wes Davis, Sarah Moulton
Date: November 24, 7:47 AM
Subject: แคมเปญโปรโมชัน Unicorn ครั้งแรก: ไม่อยากจะเชื่อเลย!
ทีม Marketing ทำงานกันจนดึกดื่นตลอดช่วงวันหยุดสุดสัปดาห์ และเราสามารถทำแคมเปญทดสอบไปยังลูกค้า 1 เปอร์เซ็นต์ของเราได้
ผลลัพธ์มันยอดเยี่ยมมาก (STELLAR)! ผู้ตอบรับกว่า 20 เปอร์เซ็นต์เข้ามาที่เว็บไซต์ของเรา และกว่า 6 เปอร์เซ็นต์ตัดสินใจซื้อ นี่คือ Conversion Rate ที่สูงจนเหลือเชื่อ—น่าจะสูงกว่าแคมเปญที่เราเคยทำมาทั้งหมดถึง 5 เท่า
เราขอแนะนำให้ทำโปรโมชัน Unicorn ให้กับลูกค้าทุกคนในวันขอบคุณพระเจ้า ฉันกำลังพยายามทำ Dashboard ขึ้นมาเพื่อให้ทุกคนเห็นผลลัพธ์ของแคมเปญ Unicorn แบบ Real-time
นอกจากนี้ อย่าลืมว่าสินค้าที่ทำโปรโมชันทั้งหมดเป็นสินค้าที่มีอัตรากำไรสูง ดังนั้นผลกระทบต่อกำไรสุทธิของเราจะยอดเยี่ยมมาก
PS: Bill จากผลลัพธ์ที่ได้ เราคาดว่าจะมี Web Traffic พุ่งสูงขึ้นมาก เราจะมั่นใจได้อย่างไรว่าเว็บไซต์จะไม่ล่ม?
ทำได้ดีมากทุกคน!
Maggie
“ผมชอบมันมาก” ผมพูดกับ Patty “ไปร่วมมือกับ Wes เพื่อหาทางรับมือกับ Traffic ที่จะพุ่งสูงขึ้น เรามีเวลาแค่สามวันในการจัดการเรื่องนี้ เราไม่อยากทำพลาดและเปลี่ยนลูกค้าที่กำลังสนใจให้กลายเป็นคนเกลียดเรา”
เธอพยักหน้าและกำลังจะตอบเมื่อโทรศัพท์ของเธอสั่น อีกชั่วครู่ต่อมา โทรศัพท์ของผมก็สั่นเช่นกัน เธอรีบก้มมองและพูดว่า “ยัยมังกรอาละวาดอีกแล้วค่ะ”
“ฉันล่ะอยากให้มีปุ่ม ‘unsubscribe’ สำหรับอีเมลของเธอจริงๆ” Patty พูดทิ้งท้ายขณะเดินออกไป
ครึ่งชั่วโมงต่อมา Steve ส่งข้อความแสดงความยินดีไปยังทีม Unicorn ทั้งหมด ซึ่งทุกคนชอบอ่านมาก และที่น่าแปลกใจกว่านั้นคือเขายังส่งข้อความตอบกลับ Sarah แบบสาธารณะ โดยสั่งให้เธอหยุด “กวนน้ำให้ขุ่นและสร้างปัญหา” และให้ “มาพบผมทันทีที่คุณสะดวก”
แต่นั่นก็ยังไม่สามารถหยุดอีเมลสาธารณะที่โต้ตอบกันไปมาได้ ทั้งระหว่าง Sarah, Steve และ Bob การเห็น Sarah พยายามประจบ Bob ประธานคนใหม่ของเรานั้นดูน่าอึดอัดและไม่สบายใจเอาเสียเลย ดูเหมือน Sarah จะไม่แยแสเลยว่าเธอกำลังทำตัวชัดเจนแค่ไหน และเธอกำลังเผาสะพานทิ้งไปมากเท่าไหร่
ผมเดินเข้าไปในห้องประชุมเพื่อพบกับ John เกี่ยวกับการแก้ไขปัญหา SOX-404 และปัญหาความปลอดภัยของ Unicorn ทั้งหมด เขาใส่เสื้อเชิ้ต Oxford ลายทางและเสื้อกั๊ก พร้อมด้วยกระดุม Cufflinks เขาดูเหมือนเพิ่งหลุดออกมาจากการถ่ายแบบในนิตยสาร Vanity Fair และผมเดาว่าเขายังคงโกนหัวทุกวันเหมือนเดิม
“ผมทึ่งมากว่าการแก้ปัญหา Security ของ Unicorn นั้นถูก Integrate เข้าไปได้เร็วขนาดไหน” เขากล่าว “เมื่อเทียบกับโปรเจกต์ Phoenix ที่เหลือ การแก้ปัญหา Security ของ Unicorn นั้นง่ายมาก Cycle time มันสั้นมาก เราเคยแก้เสร็จได้ภายในชั่วโมงเดียว ปกติแล้วเราจะแก้เสร็จได้ในวันหรือสองวัน เมื่อเทียบกับเรื่องนี้ การแก้ปัญหาใน Phoenix เหมือนกับการถอนฟันตัวเองโดยไม่ใช้ยาชาเลยครับ ปกติเราต้องรอกันเป็นไตรมาสกว่าจะมีการเปลี่ยนแปลงที่มีความหมาย และการต้องผ่านขั้นตอนวุ่นวายเพื่อให้ออก emergency change order ได้นั้นแทบไม่คุ้มกับความเหนื่อยเลย”
“จริงๆ นะครับ” เขาพูดต่อ “การ Patch นั้นง่ายมาก เพราะเราสามารถ Rebuild อะไรก็ได้ใน Production ด้วยการกดปุ่มเพียงปุ่มเดียว ถ้ามันพัง เราก็แค่สร้างมันขึ้นมาใหม่ตั้งแต่ต้น”
ผมพยักหน้า “ผมก็ทึ่งกับสิ่งที่เราทำได้ด้วย Cycle time ที่รวดเร็วของ Unicorn เหมือนกัน ใน Phoenix เราซ้อมและฝึกทำ Deployment กันแค่ไตรมาสละครั้งเท่านั้น แต่ในช่วงห้าสัปดาห์ที่ผ่านมา เราทำ Deployment ทั้งโค้ดและ Environment ของ Unicorn ไปกว่า 20 ครั้งแล้ว มันให้ความรู้สึกเหมือนเป็นเรื่องปกติไปแล้ว อย่างที่คุณว่าครับ มันตรงข้ามกับ Phoenix เลย”
John พูดต่อ “ความกังวลส่วนใหญ่ที่ผมเคยมีต่อ Unicorn ดูเหมือนจะไม่เป็นจริงแล้วล่ะครับ เรามีการตรวจสอบเป็นประจำเพื่อให้แน่ใจว่า Developer ที่เข้าถึง Production ได้ทุกวันนั้นมีสิทธิ์แค่ Read-only และเรามีความคืบหน้าอย่างมากในการ Integrate Security Test เข้ากับขั้นตอนการ Build ผมค่อนข้างมั่นใจว่าการเปลี่ยนแปลงใดๆ ที่ส่งผลกระทบต่อความปลอดภัยของข้อมูลหรือโมดูลการพิสูจน์ตัวตน (Authentication) จะถูกตรวจพบอย่างรวดเร็ว”
เขาพิงหลัง กอดอกไว้ที่หลังศีรษะ “ตอนแรกผมกลัวจนขี้หดตดหายเลยครับว่าจะหาวิธีรับประกันความปลอดภัยให้ Unicorn ได้ยังไง ส่วนหนึ่งเป็นเพราะเราคุ้นเคยกับการใช้เวลาเป็นเดือนในการทำ Application Security Review ในกรณีฉุกเฉินอย่างการตอบสนองต่อ Audit ที่มีความสำคัญสูง บางครั้งเราอาจทำเสร็จได้ในหนึ่งสัปดาห์”
“แต่แนวคิดที่ต้องทำ 10 Deploy ต่อวันเนี่ยนะ?” เขาพูดต่อ “มันบ้าบอชัดๆ! แต่หลังจากถูกบังคับให้ทำ Security Testing แบบ Automation และ Integrate มันเข้ากับกระบวนการเดียวกับที่ William ใช้สำหรับ QA Testing แบบ Automation เราก็ได้ทดสอบทุกครั้งที่ Developer ทำการ Commit โค้ด ในหลายๆ แง่ ตอนนี้เรามี Visibility และ Code Coverage ดีกว่าแอปพลิเคชันอื่นๆ ในบริษัทเสียอีก!”
เขาเสริมว่า “คุณควรจะรู้นะครับว่าเราเพิ่งปิดประเด็น SOX-404 ข้อสุดท้ายไปได้แล้ว เราสามารถพิสูจน์ให้ผู้ตรวจสอบบัญชีเห็นได้ ซึ่งต้องขอบคุณกระบวนการ Change Control ใหม่ที่คุณนำมาใช้เป็นอย่างมาก ว่าการควบคุมปัจจุบันทั้งหมดนั้นเพียงพอแล้ว เป็นการปิดผลการตรวจสอบที่ค้างคามาสามปีซ้อนลงได้”
เขายิ้มและเสริมว่า “ยินดีด้วยนะ Bill คุณทำในสิ่งที่รุ่นพี่ของคุณไม่มีใครทำได้ นั่นคือการทำให้พวกผู้ตรวจสอบบัญชีเลิกมายุ่งกับเราเสียที!”
สิ่งที่ทำให้ผมประหลาดใจมากคือสัปดาห์ที่สั้นๆ นี้ผ่านไปอย่างราบรื่น ก่อนที่ทุกคนจะลากลับในวันพุธเพื่อหยุดยาวในเทศกาลวันขอบคุณพระเจ้า แคมเปญยักษ์ของ Unicorn ก็พร้อมแล้ว ประสิทธิภาพของโค้ดยังช้ากว่าที่เราต้องการถึง 10 เท่า แต่ตอนนี้เราโอเคเพราะเราสามารถเปิดใช้ compute instance บน Cloud ได้หลายร้อยตัวตามต้องการ
เราเจอจุดตายจริงๆ เมื่อทีม QA พบว่าเรากำลังแนะนำสินค้าที่ไม่มีในสต็อก ซึ่งนั่นคงเป็นหายนะแน่ๆ เพราะลูกค้าจะคลิกโปรโมชันด้วยความตื่นเต้นเพียงเพื่อจะพบว่ามันขึ้นว่า “สินค้าหมด” แต่น่าเหลือเชื่อที่ทีม Development สามารถแก้ไขได้ภายในวันเดียว และ Deploy ได้ภายในหนึ่งชั่วโมง
ตอนนี้เวลา 6 โมงเย็น ผมเก็บของและเฝ้ารอวันหยุดยาวที่กำลังจะมาถึง เราทุกคนคู่ควรกับมันแล้ว