- Microsoft Office ใช้ระบบจัดการซอร์สภายในอย่าง Source Depot มาเป็นเวลานาน ก่อนจะทำ การย้ายครั้งใหญ่ไปยัง Git เพื่อยกระดับประสบการณ์นักพัฒนาและนวัตกรรมทางเทคโนโลยี
- Source Depot มีข้อจำกัดด้านประสิทธิภาพจากความเป็น ระบบศูนย์กลาง, การสร้างบรাঞ্চที่ช้า, เวิร์กโฟลว์ที่ไม่สะดวก และการย้ายไป Git ต้องอาศัยงานต่อเนื่องหลายปีจากวิศวกรหลายร้อยคน
- ระหว่างการย้ายระบบ ทีมต้องฝ่าความท้าทายทางเทคนิคและระดับองค์กรครั้งใหญ่ เช่น การพัฒนาเทคโนโลยีใหม่อย่าง VFS for Git, การย้ายโครงสร้างพื้นฐานเดิมด้าน build/test และการรันสองระบบควบคู่กัน
- เพื่อให้การย้ายสำเร็จ มีการเน้นแนวทางแบบร่วมมือและยึดมนุษย์เป็นศูนย์กลาง เช่น ระบบการสื่อสารที่ขับเคลื่อนโดย "champion", ความโปร่งใสแบบกล้าตรงไปตรงมา, การอบรมเชิงปฏิบัติที่ใช้งานได้จริง และแผน rollback ทันที
- หลังการย้าย พบผลลัพธ์เชิงบวก เช่น เวลา onboarding ลดลง, ความชอบต่อ Git เพิ่มขึ้น (89%), และประสิทธิภาพการทำงานดีขึ้น พร้อมทิ้งบทเรียนสำคัญสำหรับการเปลี่ยนแปลงเทคโนโลยีขนาดใหญ่
จาก Source Depot สู่ Git: ประสบการณ์การย้ายระบบครั้งใหญ่ของ Microsoft Office
ความท้าทายใหม่ในการเร่งประสิทธิภาพของนักพัฒนา
- การยกระดับประสิทธิภาพของนักพัฒนาเป็นงานแบบ 'Multiplier work' ซึ่งยิ่งมีคุณค่ามากในองค์กรขนาดใหญ่
- โปรเจ็กต์ การย้าย Microsoft Office จาก Source Depot ไปยัง Git เป็นตัวอย่างสำคัญของเรื่องนี้
- งานนี้ไม่ใช่แค่การเปลี่ยนเครื่องมือ แต่เป็นโปรเจ็กต์ขนาดใหญ่ที่เกี่ยวข้องกับวิศวกรหลายร้อยคน ระบบที่ซับซ้อน และระยะเวลาดำเนินงานยาวนาน
Source Depot: เรื่องราวของระบบจัดการซอร์สในยุคนั้น
- ช่วงต้นทศวรรษ 2000 Microsoft ใช้งาน Source Depot ซึ่งเป็นระบบควบคุมเวอร์ชันภายในที่พัฒนาบนเทคโนโลยี Perforce
- Source Depot มีข้อจำกัดด้านประสิทธิภาพการทำงานจาก การสร้างบรাঞ্চที่ช้า, ความเป็นศูนย์กลาง, เวลาการ checkout โค้ดที่ยาวนาน รวมถึงวิธี merge ที่ไม่สะดวก (Reverse/Forward Integrate)
- โครงสร้างนี้ผูกติดอย่างแน่นแฟ้นกับระบบพัฒนาโดยรวมทั้งหมด (build, release, workflow) ทำให้ไม่สามารถเปลี่ยนแทนได้แบบง่าย ๆ
- การ เปลี่ยน Office ไปใช้ Git ต้องอาศัยเวลาหลายปีและความพยายามจากวิศวกรหลายร้อยคน
เริ่มจาก OneNote: จุดเริ่มต้นของการย้ายระบบ
- ภายในองค์กรวิศวกรรม Office มีการตัดสินใจย้ายไป Git ครั้งใหญ่จากทั้ง ต้นทุนการดูแลและแพตช์ Source Depot และความต้องการด้าน “เทคโนโลยีที่แข่งขันได้”
- ชุดผลิตภัณฑ์ Office มีตารางพัฒนาแตกต่างกันตามรอบการออกเวอร์ชัน (ทุกไม่กี่เดือน, รายครึ่งปี, รายเดือน, Insider) จึงจำเป็นต้อง ใช้งาน Source Depot และ Git ควบคู่กัน เป็นระยะเวลานาน
- ความสม่ำเสมอของการจัดการเวอร์ชันใน Office, การตรวจสอบ build และการย้ายโครงสร้างพื้นฐานการทดสอบแบบ legacy กลายเป็นโจทย์สำคัญที่ต้องจัดการ
ขนาดของ Office และกลยุทธ์การสื่อสาร
- ในเวลานั้น Office เป็นองค์กรขนาดใหญ่ที่มี วิศวกร 4,000 คน ทำงานร่วมกัน
- มีการแต่งตั้ง 'Developer Satisfaction Champion' ให้แต่ละทีม และวางโครงสร้างการรับฟังกับสื่อสารแบบ hub-spoke model เพื่อให้เกิด feedback และการประสานงานที่ราบรื่น
- ผู้เขียนทำหน้าที่เป็น champion ของ OneNote และรับบทบาทสำคัญในหน้างานของการย้ายระบบครั้งใหญ่ครั้งนี้
VFS for Git: ทลายข้อจำกัดของโค้ดเบสขนาดมหึมา
- ด้วยขนาดโค้ดที่ใหญ่จน git clone ครั้งเดียวต้องใช้มากกว่า 200GB ทีมจึงแก้ปัญหาด้วย Virtual File System for Git (VFS for Git) ที่พัฒนาร่วมกับ GitHub
- VFS for Git ใช้วิธีดึงมาเฉพาะไฟล์ที่มีการใช้งานจริง จึงช่วยก้าวข้ามข้อจำกัดของ Git แบบดั้งเดิม
- เป็นประสบการณ์ที่ได้ร่วมมือกับ Microsoft Windows เพื่อฝ่าข้อจำกัดของระบบจัดการเวอร์ชันระดับใหญ่ที่สุดกลุ่มหนึ่งในอุตสาหกรรม
แนวทางการย้ายระบบแบบเป็นขั้นตอน
ขั้นที่ 1: จักรวาลคู่ขนาน (Parallel Universe)
- มีการสร้างบริการ bridge ที่ซิงก์ Source Depot กับ Git แบบเรียลไทม์ และปรับปรุงซ้ำ ๆ เพื่อแก้ปัญหาความไม่สอดคล้องและความต่างของโมเดลทั้งสองระบบ (เช่น โครงสร้างบรাঞ্চ, changelist)
- กระบวนการ Office main/Private branch-sync-build ถูกทำงานผ่านระบบอัตโนมัติ 24/7
- หลังจากลองใหม่ถึงสามครั้ง จึงสร้างระบบคู่ขนานที่ทำงานได้อย่างเสถียรสำเร็จ
ขั้นที่ 2: การพิสูจน์ความเท่าเทียมกัน
- มีการรัน test suite ทั้งหมดซ้ำในทั้งสองระบบ เพื่อพิสูจน์ว่าผลลัพธ์ของ build เหมือนกันอย่างสมบูรณ์
- ความแตกต่างเล็ก ๆ เช่น รูปแบบการขึ้นบรรทัดใหม่, ตัวพิมพ์เล็ก/ใหญ่ และฟอร์แมตผลการทดสอบ ถูก debug และแก้ไขอยู่หลายเดือน
- เมื่อบรรลุผลแบบ 'Green across the board' (การทดสอบผ่านทั้งสองระบบ) ก็ถือว่าพร้อมเข้าสู่ช่วงเปลี่ยนผ่านจริง
แนวทางที่ยึดมนุษย์เป็นศูนย์กลาง
การสื่อสารหลายช่องทางและทำซ้ำ
- เพื่อให้ตารางเวลาของ วิศวกรมากกว่า 4,000 คนและหลายสิบทีม เดินไปพร้อมกัน มีการสร้างระบบสื่อสารอย่างเข้มข้นผ่าน champion ของแต่ละทีม
- ประกาศสำคัญจะสื่อสารซ้ำอย่างน้อย 3 ครั้ง (อีเมล, Teams, วิกิ, มีตติ้ง ฯลฯ) เพื่อลดความสับสนให้น้อยที่สุด
- เมื่อเกิดปัญหา จะเปิดเผยข้อมูลอย่าง รวดเร็วและโปร่งใส เพื่อสร้างความไว้วางใจ
การอบรมและการปรับตัวสู่ Git
- สำหรับวิศวกรที่คุ้นกับ Source Depot มานาน 10 ปี มีการเตรียม สภาพแวดล้อมการฝึกแบบลงมือทำจริง และ คู่มือคำสั่งสำหรับการเปลี่ยนผ่าน เพื่อให้เรียนรู้เป็นขั้นเป็นตอน
- มีการจัดทำคลังวิดีโอที่เน้นการใช้งานจริง เพื่อให้เกิด การเรียนรู้จากสถานการณ์จริง
- สิ่งนี้ไม่ได้มีไว้แค่ ลดความกังวลและเสริมทักษะ แต่ยังช่วยให้ผู้คนปรับตัวเข้ากับเวิร์กโฟลว์เดิมที่เปลี่ยนไปได้ด้วย
กลยุทธ์ rollback และมาตรการความปลอดภัย
- ในช่วงเปลี่ยนระบบจริง มีการมอบ 'ปุ่มแดง' ให้ Director เพื่อให้สามารถ rollback ได้ทันทีทุกเมื่อหากเกิดปัญหาร้ายแรง
- บันทึกบางส่วนจาก Source Depot เดิมถูกเก็บรักษาไว้เป็นเวลานาน เพื่อคงประวัติการพัฒนาเดิมไว้อย่างปลอดภัย
ผลลัพธ์และความสำเร็จหลัก
- หลังการย้าย พบ เวลา onboarding ลดลง 50%, ความชอบต่อ Git อยู่ที่ 89%, ประสิทธิภาพ build ดีขึ้น, ประสิทธิภาพ code review และการทำงานร่วมกันสูงขึ้น ซึ่งสะท้อน ผลลัพธ์ด้าน productivity ที่ดีขึ้น
- วิศวกรมองในแง่บวกต่อการได้ ทักษะที่สามารถนำไปใช้ต่อในอุตสาหกรรมได้
- ความสามารถในการให้พนักงานใหม่เริ่มงานได้ทันทีก็เพิ่มขึ้นเช่นกัน
บทเรียนสำคัญของการย้ายระบบขนาดใหญ่
- โอกาสความสำเร็จจะสูงขึ้นก็ต่อเมื่อ ลงทุนกับการสื่อสารที่ยึดมนุษย์เป็นศูนย์กลาง มากกว่าที่คาด ไม่ใช่โฟกัสแค่องค์ประกอบทางเทคนิค
- การสร้างระบบคู่ขนาน, การพิสูจน์ความเท่าเทียมอย่างสมบูรณ์, การออกแบบ rollback ที่ชัดเจนตั้งแต่ต้น และการเน้นบุคลากรหลัก (champion) ล้วนสำคัญ
- จำเป็นต้อง วัดตัวชี้วัดเชิงคุณภาพอย่างระดับความพึงพอใจควบคู่กันไป และในกระบวนการเปลี่ยนแปลงนั้น ความมั่นคงระดับองค์กรและความรู้สึกปลอดภัยทางจิตใจก็สำคัญ
- แก่นแท้ของการเปลี่ยนแปลงขนาดใหญ่คือ การบริหารการเปลี่ยนแปลงทั้งองค์กรอย่างยืดหยุ่นและเป็นระบบ
บทสรุปและการประยุกต์ใช้ต่อไป
- การย้าย Office ไปสู่ Git เป็นโปรเจ็กต์ประวัติศาสตร์ที่เกิดขึ้นจากการเตรียมงานหลายปีและการลงมือจริงหลายเดือน
- ท้ายที่สุด มันกลายเป็น กรณีตัวอย่างของการขับเคลื่อนการเปลี่ยนแปลงระดับองค์กรได้สำเร็จ พร้อมรับประกันความต่อเนื่องของการทำงานสำหรับผู้คนหลายพันคน
- ในการเปลี่ยนแปลงขนาดใหญ่อื่น ๆ เช่น การย้ายขึ้นคลาวด์, การแยก monolithic architecture, หรือการอัปเกรด framework ก็สามารถนำแนวคิดเรื่อง การตรวจสอบแบบขนาน, การสื่อสารแบบทำซ้ำ, และการออกแบบ rollback อย่างรวดเร็ว ไปใช้ได้เช่นกัน
- แม้จะไม่ได้ลงรายละเอียดทางเทคนิคเพิ่มเติม (เช่น build infrastructure, ประเด็น offline/contract) แต่บทเรียนที่สำคัญที่สุดยังคงเป็นแนวทางเชิงกลยุทธ์และเชิงองค์กรต่อการเปลี่ยนแปลงเทคโนโลยีขนาดใหญ่
3 ความคิดเห็น
ถ้าต้องจัดการไฟล์ไบนารีจำนวนมาก Git อาจไม่ค่อยเหมาะนัก แต่ถ้าเป็นรีโพซิทอรีที่เน้นโค้ดเป็นหลัก ก็ดูเหมือนว่า Git เพียงพอแล้ว
แม้ภายใน Microsoft เองก็น่าจะเป็นการเปลี่ยนแปลงครั้งใหญ่ แต่ผลดีอีกอย่างคือฟีเจอร์อย่าง partial clone, sparse checkout รวมถึงเครื่องมืออย่าง Scalar ก็ถูกเปิดเผยออกมาสู่ภายนอกจนสามารถนำไปใช้งานได้ด้วย ซึ่งนับว่าเป็นผลกระทบเชิงบวกเหมือนกันครับ 555
ความคิดเห็นบน Hacker News