นักพัฒนาทิ้ง asdf หันมาใช้ mise เมื่อการจัดการเวอร์ชันเครื่องมือได้รับการอัปเกรดครั้งใหญ่

ทีมชุมชน BigGo
นักพัฒนาทิ้ง asdf หันมาใช้ mise เมื่อการจัดการเวอร์ชันเครื่องมือได้รับการอัปเกรดครั้งใหญ่

ชุมชนนักพัฒนากำลังเผชิญกับการเปลี่ยนแปลงครั้งสำคัญในวิธีการจัดการเครื่องมือพัฒนาและสภาพแวดล้อมการทำงาน นักพัฒนาจำนวนมากกำลังเปลี่ยนจากตัวจัดการเวอร์ชันแบบดั้งเดิมอย่าง asdf มาใช้ mise ซึ่งเป็นโซลูชันที่ครอบคลุมมากกว่าและสัญญาว่าจะแก้ไขปัญหาที่มีมานานในเวิร์กโฟลว์การพัฒนาซอฟต์แวร์

ปัญหาปลั๊กอินที่ผลักดันให้เกิดการเปลี่ยนแปลง

หนึ่งในตัวเร่งหลักของการย้ายครั้งนี้เกิดจากความหงุดหงิดพื้นฐานกับเครื่องมือที่มีอยู่ ตัวจัดการเวอร์ชันแบบดั้งเดิมอย่าง asdf ต้องการให้นักพัฒนาติดตั้งปลั๊กอินด้วยตนเองสำหรับแต่ละภาษาโปรแกรมหรือเครื่องมือที่ต้องการจัดการ สิ่งนี้สร้างความยุ่งยากในกระบวนการพัฒนาและเพิ่มความซับซ้อนที่ไม่จำเป็นให้กับการดำเนินงานที่ควรจะตรงไปตรงมา

Mise แก้ไขปัญหานี้โดยให้การสนับสนุนในตัวสำหรับเครื่องมือหลายร้อยชิ้นโดยไม่ต้องติดตั้งปลั๊กอินแยก เมื่อนักพัฒนาต้องการลองเครื่องมือใหม่ พวกเขาสามารถติดตั้งได้ด้วยคำสั่งเดียวแทนที่จะต้องค้นหาและติดตั้งปลั๊กอินที่เหมาะสมก่อน

ข้อได้เปรียบหลักของ mise เมื่อเทียบกับ asdf:

  • ไม่จำเป็นต้องติดตั้งปลั๊กอิน - รองรับเครื่องมือหลายร้อยชนิดในตัว
  • การติดตั้งเครื่องมือและการเปลี่ยนเวอร์ชันแบบอัตโนมัติตามการกำหนดค่าของโปรเจกต์
  • การจัดการตัวแปรสภาพแวดล้อม (ทดแทนฟังก์ชันการทำงานของ direnv)
  • ความสามารถในการกำหนดและรันงาน
  • ประสิทธิภาพและการใช้งานที่ดีกว่า
  • ความเข้ากันได้แบบ drop-in replacement กับการกำหนดค่า asdf ที่มีอยู่

ทีมงาน Monorepo เห็นประโยชน์ทันที

ทีมพัฒนาที่จัดการโค้ดเบสขนาดใหญ่พบว่าแนวทางของ mise ในการมาตรฐานเครื่องมือมีคุณค่าเป็นพิเศษ ทีมงานรายงานว่าคำขอสนับสนุนที่เกี่ยวข้องกับการไม่ตรงกันของเวอร์ชันหายไปเกือบหมดหลังจากนำ mise มาใช้เป็นโซลูชันมาตรฐานสำหรับการจัดการเครื่องมือ

ตอนแรกผมเสนอ mise เป็นเครื่องมือที่แนะนำ และหลังจากนั้นสักพักผมประกาศว่ามันเป็นวิธีเดียวที่รองรับในการสร้างโปรเจกต์ และปัง! คำขอสนับสนุนทั้งหมดที่เคยจบลงด้วยโอ้ เวอร์ชัน XYZ ของฉันไม่ตรงกับความต้องการของโปรเจกต์หายไปแล้ว

ความสามารถของเครื่องมือในการติดตั้งและสลับระหว่างเวอร์ชันต่างๆ ของภาษาโปรแกรมและเครื่องมือพัฒนาโดยอัตโนมัติตามการกำหนดค่าโปรเจกต์ได้พิสูจน์แล้วว่ามีคุณค่าเป็นพิเศษสำหรับทีมที่มีระดับประสบการณ์ทางเทคนิคที่หลากหลาย

เกินกว่าการจัดการเวอร์ชัน

สิ่งที่ทำให้ mise แตกต่างจากตัวจัดการเวอร์ชันแบบดั้งเดิมคือขอบเขตที่ขยายออกไป นอกจากการจัดการเวอร์ชันเครื่องมือแล้ว มันยังจัดการตัวแปรสภาพแวดล้อมและสามารถกำหนดงานเฉพาะโปรเจกต์ได้ ซึ่งหมายความว่าทีมสามารถมาตรฐานไม่เพียงแต่เวอร์ชันของเครื่องมือที่ใช้ แต่ยังรวมถึงวิธีการสร้าง ทดสอบ และปรับใช้แอปพลิเคชันของพวกเขาด้วย

แนวทางที่ครอบคลุมนี้ได้ดึงดูดนักพัฒนาที่เคยพึ่งพาเครื่องมือหลายตัวเพื่อให้ได้ฟังก์ชันการทำงานที่คล้ายกัน การรวมเข้าด้วยกันช่วยลดภาระทางปัญญาในการจำคำสั่งและการกำหนดค่าที่แตกต่างกันในโปรเจกต์ต่างๆ

การถกเถียงเรื่องทางเลือก Nix

ในขณะที่ mise ได้รับความนิยม นักพัฒนาบางคนสนับสนุนแนวทางที่รุนแรงกว่าอย่าง Nix ซึ่งเสนอการจัดการสภาพแวดล้อมที่ครอบคลุมยิ่งกว่า อย่างไรก็ตาม Nix มาพร้อมกับเส้นโค้งการเรียนรู้ที่สูงชันซึ่งหลายทีมพบว่าเป็นอุปสรรค Mise หาจุดสมดุลโดยให้การปรับปรุงที่สำคัญเหนือเครื่องมือแบบดั้งเดิมในขณะที่ยังคงรักษาแนวคิดและเวิร์กโฟลว์ที่คุ้นเคย

การเลือกระหว่างแนวทางเหล่านี้มักจะขึ้นอยู่กับขนาดทีม ความเชี่ยวชาญทางเทคนิค และความซับซ้อนของสภาพแวดล้อมการพัฒนา ทีมเล็กและผู้ที่ใหม่กับเครื่องมือขั้นสูงมักจะโน้มเอียงไปหา mise ในขณะที่ทีมที่มีความลึกทางเทคนิคมากกว่าอาจลงทุนเรียนรู้ระบบของ Nix ที่มีพลังมากกว่าแต่ซับซ้อนกว่า

โซลูชันการจัดการเครื่องมืออื่น ๆ:

  • แนวทางแบบดั้งเดิม: ตัวจัดการเฉพาะภาษา ( nvm , pyenv , rustup , ฯลฯ)
  • asdf: ตัวจัดการเวอร์ชันแบบครอบคลุมที่ใช้ปลั๊กอิน
  • mise: ตัวจัดการเครื่องมือแบบครอบคลุมที่ไม่ต้องใช้ปลั๊กอินและรองรับงาน
  • Nix/Home Manager: การจัดการสภาพแวดล้อมแบบครอบคลุมแต่ซับซ้อน
  • devbox: โซลูชันที่ใช้ Nix เป็นฐานพร้อมการกำหนดค่าที่ง่ายขึ้น

ข้อพิจารณาด้านความปลอดภัยยังคงอยู่

แม้จะมีความกระตือรือร้นเกี่ยวกับ mise แต่นักพัฒนาก็ไม่ได้เพิกเฉยต่อผลกระทบด้านความปลอดภัยที่อาจเกิดขึ้น ความสามารถของเครื่องมือในการดาวน์โหลดและติดตั้งซอฟต์แวร์จากแหล่งต่างๆ โดยอัตโนมัติทำให้เกิดความกังวลด้านความปลอดภัยของห่วงโซ่อุปทาน องค์กรในอุตสาหกรรมที่มีการควบคุมอาจพบว่าความไม่โปร่งใสเกี่ยวกับแหล่งที่มาของการพึ่งพานี้เป็นปัญหาสำหรับข้อกำหนดด้านความปลอดภัยของพวกเขา

ความกังวลนี้สะท้อนถึงความท้าทายที่กว้างขึ้นในการพัฒนาซอฟต์แวร์สมัยใหม่: การสร้างสมดุลระหว่างความสะดวกและผลิตภาพกับความปลอดภัยและข้อกำหนดการปฏิบัติตามกฎระเบียบ ทีมต้องชั่งน้ำหนักผลประโยชน์ด้านผลิตภาพเทียบกับท่าทีด้านความปลอดภัยเฉพาะและภาระผูกพันด้านกฎระเบียบของพวกเขา

การย้ายไปใช้ mise แสดงให้เห็นมากกว่าแค่การเปลี่ยนเครื่องมือ มันสะท้อนถึงความพยายามอย่างต่อเนื่องของชุมชนนักพัฒนาในการลดความยุ่งยากและมาตรฐานเวิร์กโฟลว์ในขณะที่ยังคงรักษาความยืดหยุ่นที่จำเป็นสำหรับความต้องการของโปรเจกต์ที่หลากหลาย

อ้างอิง: Tools I love: mise(-en-place)