ขบวนการ 0deps: การพึ่งพาภายใน (Local Dependencies) และสัญญาที่ไม่เปลี่ยนแปลง (Immutable Contracts)

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

ความรวดเร็วนี้มีราคาที่ต้องจ่าย คุณกำลังเผชิญกับความเสี่ยงด้านซัพพลายเชนของซอฟต์แวร์ (software supply chain risks)

ทุกการพึ่งพาสร้างพื้นที่การโจมตี (attack surface) ให้เพิ่มขึ้น การพึ่งพาเหล่านี้สามารถ:

  • นำช่องโหว่ด้านความปลอดภัยเข้ามา
  • กลายเป็นเป้าหมายของการโจมตีซัพพลายเชน
  • ถูกผู้พัฒนาทอดทิ้ง
  • เปลี่ยนแปลง public API ของตนเอง
  • ทำลายความสามารถในการทำงานร่วมกับเวอร์ชันเก่า (backward compatibility)

ขบวนการ 0deps กำลังเปลี่ยนสิ่งนี้ โดยตั้งคำถามว่า: จะเป็นอย่างไรหากแอปของคุณพึ่งพาเฉพาะโค้ดที่คุณควบคุมได้เท่านั้น?

ในโมเดลแบบ 0deps คุณจะนำโค้ดที่จำเป็นทั้งหมดเข้ามาไว้ใน repository ของโปรเจกต์โดยตรง คุณไม่ต้องดาวน์โหลดแพ็กเกจในระหว่างการติดตั้งหรือระหว่างการ build ทุกอย่างที่คุณต้องการจะอยู่ที่นั่นทันทีเมื่อคุณ clone repo มา

สิ่งนี้ให้ประโยชน์หลายประการ:

  • การ build ที่ทำซ้ำได้ (Reproducible builds)
  • ไม่ต้องพึ่งพา registry ของแพ็กเกจภายนอก
  • การตรวจสอบความปลอดภัยแบบรวมศูนย์
  • ความสามารถในการคาดการณ์ที่สูงขึ้น
  • ความเสี่ยงด้านซัพพลายเชนที่ต่ำลง

เป้าหมายไม่ใช่การหยุดยั้งไม่ให้โค้ดเปลี่ยนแปลง อัลกอริทึมและการแก้ไขด้านความปลอดภัยต้องมีการพัฒนา สิ่งที่จะยังคงเดิมคือสัญญาที่เป็นสาธารณะ (public contract)

คุณออกแบบอินเทอร์เฟซที่เสถียรสำหรับแต่ละไลบรารี ตัวอย่างเช่น:

  • authenticate()
  • createSession()
  • verifyPasskey()

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

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

คุณแยกเครื่องมือภายนอกไว้เบื้องหลัง internal adapters หากไลบรารีตัวหนึ่งเลิกใช้งานไปในวันพรุ่งนี้ คุณก็แค่ต้องอัปเดตตัว adapter เท่านั้น ส่วนที่เหลือของระบบของคุณก็จะยังคงปลอดภัย

0deps ไม่ได้ต่อต้าน open source แต่ต้องการใช้งาน open source อย่างปลอดภัยยิ่งขึ้น แทนที่จะเป็นการติดตั้งแบบไดนามิก (dynamic installs) คุณจะปฏิบัติกับไลบรารีเสมือนเป็นส่วนประกอบที่รวมเข้าเป็นเนื้อเดียวกัน (integrated components) คุณตรวจสอบพวกมัน คุณกำหนดเวอร์ชันให้พวกมัน และคุณห่อหุ้ม (encapsulate) พวกมันไว้

ซอฟต์แวร์มีอายุยืนยาวหลายทศวรรษ แต่ไลบรารีและเฟรมเวิร์กนั้นมีวันตาย 0deps ช่วยให้มั่นใจว่าแอปพลิเคชันของคุณจะยังคงทำงานต่อไปได้ท่ามกลางการเปลี่ยนแปลงเหล่านั้น

Source: https://dev.to/fullagenticstack/movimiento-0deps-dependencias-locales-contratos-inmutables-y-seguridad-por-diseno-1a6o

Optional learning community: https://t.me/GyaanSetuAi