- พิสูจน์ด้วยการทดลองว่า "ทำไมเวลา build ที่เร็วถึงสำคัญต่อบริษัท" และ "ทรัพยากรคลาวด์ที่ทรงพลังกว่าแพงจริงหรือไม่"
- ทดสอบเวลา build บน GitHub Large Runner ตั้งแต่ 2~64 คอร์ (เคอร์เนล Fedora Linux)
ต้นทุนที่เวลา build ช้าส่งผลต่อบริษัท
- หากคิดเงินเดือนเฉลี่ยของนักพัฒนาไว้ที่ $150K จะเท่ากับ $75 ต่อชั่วโมง
- ถ้า build ใช้เวลา 1 ชั่วโมง และนักพัฒนาไม่ได้ไปทำอย่างอื่น บริษัทก็ต้องจ่ายต้นทุน $75 ไปเปล่า ๆ
- ผลการทดสอบ (Fedora 36)
- คอร์ (ราคาต่อนาที) - เวลา build รวม - ต้นทุนต่อ 1 build - ต้นทุนนักพัฒนา (1 คน)
- 2 คอร์ ($0.008/นาที) - 310 นาที - $2.48 - $389.98
- 8 คอร์ ($0.0032/นาที) - 92 นาที - $2.94 - $117.94
- 16 คอร์ ($0.064/นาที) - 55 นาที - $3.52 - $72.27
- 32 คอร์ ($0.128/นาที) - 35 นาที - $4.48 - $48.23
- 64 คอร์ ($0.256/นาที) - 27 นาที - $6.91 - $40.66
- สรุปคือ ยิ่งมีนักพัฒนาหลายคน การยอมจ่ายเพื่อฮาร์ดแวร์ที่ทรงพลังกว่าก็ยิ่งคุ้มค่า
ต้นทุนของ context switching ที่ส่งผลต่อบริษัท
- หากสมมติว่านักพัฒนาไปทำงานอย่างอื่นระหว่างที่ build กำลังรัน
- การสลับบริบทก็มีต้นทุนเช่นกัน โดยงานวิจัยระบุว่าโดยเฉลี่ยใช้เวลาประมาณ 23 นาที
- ส่วนตัวผู้เขียนรู้สึกว่าเวลาต้องเปลี่ยนจากงานที่กำลังโฟกัสไปสู่อีกงานหนึ่ง มักเสียเวลาถึง 1 ชั่วโมง
- ผลการคำนวณ (กรณีคิดเป็น 30~15 นาที)
- คอร์ - เวลา build - ต้นทุนต่อ 1 build - ต้นทุนนักพัฒนาบางส่วน (1 คน, 30 นาที) - ต้นทุนนักพัฒนาบางส่วน (1 คน, 15 นาที)
- 2 คอร์ - 310 - $2.48 - $39.98 - $21.23
- 16 คอร์ - 55 - $3.52 - $41.02 - $22.23
- 64 คอร์ - 27 - $6.91 - $44.41 - $25.66
- ภายใต้สมมติฐานว่าต้นทุนนักพัฒนาอยู่ที่ $75 ต่อชั่วโมง การจ่ายเพิ่มให้คอมพิวเตอร์นั้นคุ้มค่ากว่ามาก
- ต่อให้ใช้ 64 คอร์ซึ่งแพงที่สุด ก็ยังมีต้นทุนเพียง 1 ใน 5 ของต้นทุนเวลาทำงานนักพัฒนาต่อชั่วโมงของคนคนเดียว
สรุป
- การจ่ายเงินเพื่อฮาร์ดแวร์ที่ดีกว่านั้นจริง ๆ แล้วถูกกว่า และดีกับนักพัฒนาด้วย (ลดสิ่งรบกวน)
- ในการทดลองนี้ การจ่ายเพิ่มอีก $4~5 ให้กับเวลา build สามารถประหยัดได้ $40 สำหรับนักพัฒนา 1 คน และมากกว่า $200 สำหรับทีม 5 คน พร้อมทั้งช่วยประหยัดเวลา 1 ชั่วโมงที่เสียไปกับ task switching
- แน่นอนว่าในบริษัทขนาดใหญ่ การจ่าย $4~5 ต่อ build อาจรวมกันเป็นเงินจำนวนมาก แต่ต้นทุนด้านผลิตภาพที่สูญเสียไปก็เพิ่มขึ้นมากเช่นกัน
- การยอมจ่ายเงินเพื่อ CPU ที่แรงกว่านั้น จะให้ผลตอบแทนเมื่อเวลาผ่านไป
แน่นอนว่า นักพัฒนาจะต้องขอบคุณคุณ
9 ความคิดเห็น
จริง
https://xkcd.com/303/
ดูเหมือนว่าเรื่องที่ไม่มีอะไรให้ทำระหว่างรอบิลด์จะเป็นเรื่องสากลของคนทั่วโลกเหมือนกัน
ว้าว นี่เป็นเรื่องที่ผมสงสัยจริงๆ เลยครับ บล็อกของ GitHub ก็มีอะไรให้อ่านมากกว่าที่คิดเหมือนกัน ตอน build แล้วเผลอไปทำอย่างอื่นหรือคอยพะวงอยู่ตลอด ดูเหมือนจะไม่ได้มีแค่ผมคนเดียว เลยโล่งใจ(?) ครับ
ยอมรับเลย ฉันชอบเดสก์ท็อปมากกว่า Plus Laptop
เห็นด้วยครับ/ค่ะ ผม/ฉันเป็นนักวิจัยด้านดีปเลิร์นนิง เลยใช้อุปกรณ์หลายเครื่องพร้อมกันอยู่เสมอ
ปกติรันการทดลองบ่อยมาก จนหลายครั้งต้องใช้ทรัพยากรทั้งหมด
พอเป็นแบบนั้นก็จะมีช่วงเวลาว่าง ๆ แทรกขึ้นมาเป็นพัก ๆ
แล้วระหว่างรอผลทดลอง การไปทำงานอย่างอื่นก็แอบทำให้ต้องคอยพะวงเหมือนกันครับ/ค่ะ
เงินเดือนเฉลี่ยอยู่ที่ $150k เหรอ?
ผมเคยรู้สึกอึดอัดอยู่บ้างเป็นครั้งคราวเพราะข้อจำกัดด้านประสิทธิภาพของ PC หรือเซิร์ฟเวอร์ และก็รู้สึกได้ชัดเจนว่าผลิตภาพลดลงเมื่อเทียบกับตอนที่ทุกอย่างทำงานได้รวดเร็วลื่นไหล
ก็พูดได้ถูกเลยครับ
เมื่อก่อนผมเคยทำงานพัฒนาที่ใช้เวลาบิลด์ครั้งละเป็นชั่วโมง...
พอรันบิลด์ทีไรก็มักจะเผลอไปทำอย่างอื่นรอจนกว่าจะเสร็จ 555
ระหว่างรันบิลด์ PC ก็อืดไปด้วยเหมือนกัน..
ถึงจะยุ่งจนต้องไปทำอย่างอื่น ก็ยังต้องคอยเช็กความคืบหน้าของบิลด์เป็นระยะ เลยโฟกัสได้ไม่ค่อยดีครับ
แม้จะเป็นบทความเชิงโปรโมต GitHub Large Runner ที่บอกให้ใช้ build instance ที่ดีอยู่สักหน่อยก็ตาม..
แต่หัวข้อ #9 ของ The Joel Test ที่ว่า "ซื้ออุปกรณ์ที่แพงที่สุดเท่าที่เงินจะอำนวยให้กับนักพัฒนา" ก็ยังใช้ได้เหมือนเดิมแม้ในยุคคลาวด์