GitHub เล่าประสบการณ์ย้าย dev environment พนักงานมาเป็น Codespaces VM

by mk
13 August 2021 - 15:50

GitHub ประกาศนำกระบวนการพัฒนาตัวเว็บ GitHub.com (github/github) มาอยู่บนผลิตภัณฑ์ใหม่ของตัวเองคือ GitHub Codespaces ทั้งหมดแล้ว

Codespaces คือบริการ IDE ครบวงจร ตั้งแต่ตัว code editor บนเว็บ (เป็น VS Code) และประมวลผลบน VM สมรรถนะสูงบนคลาวด์ (GitHub ใช้คำว่า "faster than your laptop") ทำงานได้จากทุกที่ขอแค่มีเพียงเว็บเบราว์เซอร์

GitHub เขียนเล่าเบื้องหลังการย้ายระบบตัวเองมาสู่ Codespaces ว่าในยุคแรกๆ ของบริษัท กำหนดสภาพแวดล้อมเป็น macOS แล้วให้พนักงานโคลน github/github มาลงเครื่อง รันสคริปต์ครั้งแรกเพื่อ bootstrap เซ็ตอัพระบบก่อนเริ่มลงมือทำงาน แต่เมื่อระบบซับซ้อนขึ้นเรื่อยๆ วิธีการนี้ก็เริ่มไม่เวิร์คอีกต่อไป การเซ็ตอัพอาจใช้เวลานานถึง 45 นาที

วิธีการแบบเดิมยังชี้ให้เห็นจุดอ่อนของการใช้ local environment ที่คอมพิวเตอร์ทุกเครื่องแตกต่างกัน ซึ่งเป็นวิธีคิดที่กลับทิศกับโลก infrastructure ที่มองว่าเซิร์ฟเวอร์แต่ละตัวสามารถใช้แทนกันได้เสมอ ถ้าเครื่องพังก็แค่เปลี่ยนเครื่องใหม่ใส่เข้าไป เมื่อมีโอกาสมาสร้าง Codespaces ทำให้ GitHub นำแนวคิดของฝั่งเซิร์ฟเวอร์มาใช้งาน ถ้าสภาพแวดล้อม dev environment พังก็แค่เปลี่ยน VM ตัวใหม่ แล้วทำงานต่อได้ทันที

การย้ายสภาพแวดล้อมพัฒนามาอยู่บน VM ยังช่วยแก้ปัญหาเรื่องระยะเวลาเซ็ตระบบ GitHub ระบุว่า repository ของ GitHub.com มีขนาดทั้งหมด 13GB แค่การโคลนก็ใช้เวลา 20 นาทีแล้ว การเซ็ตอัพระบบอย่างเดียวใช้เวลาถึง 45 นาที

พอมาทำ Codespaces ทีมงานก็เปลี่ยนวิธีคิดใหม่คือ โคลน repository ทั้งหมดไว้ล่วงหน้า และดึงข้อมูลจาก dependency ต่างๆ มาสร้างเป็น Docker image ที่อัพเดตใหม่ทุกคืน ถ้านักพัฒนาต้องการเรียกใช้งานพร้อมใช้ทันที ลดระยะเวลาเซ็ตอัพจาก 45 นาทีได้เหลือ 10 วินาทีเท่านั้น (GitHub โม้ว่าพนักงานใหม่ได้ dev environment ก่อนลง Slack เสร็จ) ถ้า dev environment พังก็แค่สลับ VM ใหม่ วันนั้นไม่เสียเวลาเปล่า ทำงานต่อได้เลย

GitHub ยังบอกว่าโมเดล VM ของ Codespaces ยังช่วยเรื่องประสิทธิภาพด้วย เพราะทำ optimization รอไว้ล่วงหน้าได้เลย ซึ่งเรามักไม่ค่อยได้ทำบน local environment เพราะมีต้นทุนเรื่องระยะเวลามากเกินไป แถมถ้าอยากปรับสเปกเครื่อง เพิ่มคอร์ซีพียู เพิ่มแรม ก็เปลี่ยนค่าบรรทัดเดียว อัพเกรดเครื่องให้วิศวกรทุกคนได้ทันที ไม่ต้องเสียเวลาซื้อเครื่องใหม่แล้วส่งไปให้ที่บ้าน

Codespaces ใช้ VS Code เป็นเครื่องมือหลัก แต่ก็ไม่อยากทิ้งนักพัฒนาสายอื่นๆ จึงเพิ่มทางเลือกคือเปิด SSH ไว้ให้ ใครที่อยากใช้ Vim หรือ Emacs ก็ล็อกอินเข้ามาใช้กันเองได้

ที่มา - GitHub

Blognone Jobs Premium