17 คะแนน โดย GN⁺ 2024-03-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โฮสต์เองได้อย่างง่ายดาย: ออกแบบมาให้ติดตั้งและดูแลรักษาได้ด้วยความพยายามน้อยที่สุด แอปพลิเคชันถูกสร้างมาให้ทำงานได้โดยไม่ต้องแก้ปัญหาภายในที่ซับซ้อน
  • การขยายระบบในแนวนอน: ด้วยโครงสร้างที่เรียบง่ายแต่ทรงพลัง Lapdev สามารถขยายได้ตั้งแต่เครื่องเดียวไปจนถึง Fleet ของเซิร์ฟเวอร์ จึงเป็นระบบจัดการสภาพแวดล้อมการพัฒนาที่เติบโตไปพร้อมกับทีมพัฒนาเมื่อทีมขยายใหญ่ขึ้น
  • สภาพแวดล้อมการพัฒนาที่นิยามด้วยโค้ด: ใช้มาตรฐานเปิดของ Devcontainer เพื่อให้นิยามสภาพแวดล้อมการพัฒนาเป็นโค้ดได้ ทำให้สามารถทำซ้ำสภาพแวดล้อมการพัฒนามาตรฐานระหว่างนักพัฒนาหลายคน ป้องกันปัญหาที่เกี่ยวกับสภาพแวดล้อม และรับประกันการตั้งค่าที่สอดคล้องกันสำหรับทุกคน
  • ประหยัดเวลาในการออนบอร์ด: เมื่อต้องออนบอร์ดนักพัฒนาเข้าสู่โปรเจ็กต์ใหม่ ไม่จำเป็นต้องใช้เวลาหลายชั่วโมงหรือหลายวันเพื่อเตรียมสภาพแวดล้อมบนเครื่อง และสามารถเริ่มเขียนโค้ดได้ทันที

ฟีเจอร์ที่วางแผนไว้

  • รองรับประเภทเวิร์กสเปซที่หลากหลาย: ปัจจุบัน Lapdev รองรับเฉพาะเวิร์กสเปซแบบคอนเทนเนอร์เท่านั้น จึงมีข้อจำกัดในกรณีที่ต้องการรันคลัสเตอร์ k8s ในโฟลว์การพัฒนา เป็นต้น โดยการรองรับ VM และเครื่องแบบ bare metal อยู่ในโรดแมป และยังมีแผนรองรับ OS ที่หลากหลาย เช่น Windows, Linux, macOS อีกด้วย สิ่งนี้จะช่วยให้นักพัฒนาสามารถพัฒนาและดีบักบนเครื่องโลคัลเครื่องเดิมได้โดยไม่ต้องสลับเครื่อง

ความเห็นของ GN⁺

  • Lapdev เป็นเครื่องมือที่ช่วยให้นักพัฒนาตั้งค่าและจัดการสภาพแวดล้อมการพัฒนาระยะไกลบนเซิร์ฟเวอร์หรือคลาวด์ของตนเองได้อย่างง่ายดาย และสามารถเพิ่มประสิทธิภาพได้ด้วยการทำให้สภาพแวดล้อมการพัฒนาเป็นมาตรฐานและออนบอร์ดได้รวดเร็ว
  • เครื่องมือประเภทนี้อาจมีประโยชน์อย่างยิ่งสำหรับทีมพัฒนาขนาดใหญ่ หรือองค์กรที่ทำหลายโปรเจ็กต์พร้อมกัน เพราะช่วยรักษาความสม่ำเสมอของสภาพแวดล้อมการพัฒนาไว้ได้พร้อมกับรองรับการขยายตัว
  • อย่างไรก็ตาม ก่อนนำเทคโนโลยีนี้มาใช้ อาจมีประเด็นที่ต้องพิจารณาเกี่ยวกับความปลอดภัย ความเข้ากันได้ และการสนับสนุน รวมถึงควรคำนึงถึงภาระการดูแลรักษาเพิ่มเติมที่อาจเกิดจากการใช้โซลูชันแบบโฮสต์เอง
  • ในตลาดปัจจุบันยังมีเครื่องมืออื่นที่ให้ความสามารถคล้ายกัน เช่น Remote Development Extensions ของ Visual Studio Code และผู้ใช้ควรเลือกเครื่องมือที่เหมาะสมกับความต้องการของตนมากที่สุด
  • การที่ Lapdev มีแผนรองรับ VM และเครื่องแบบ bare metal ก็อาจมองได้ว่าเป็นส่วนหนึ่งของความพยายามในการตอบโจทย์ความต้องการด้านสภาพแวดล้อมการพัฒนาที่หลากหลาย ซึ่งจะมอบทางเลือกที่กว้างขึ้นให้แก่นักพัฒนา

1 ความคิดเห็น

 
GN⁺ 2024-03-25

ความคิดเห็นบน Hacker News

  • การใช้ development containers (devcontainers) บนฮาร์ดแวร์เซิร์ฟเวอร์ภายในเครื่องได้โดยไม่ต้องเสียค่าบริการรายเดือนนั้นดูดีมาก จนถึงตอนนี้ผมใช้ Docker-compose กับการพัฒนาแบบ Remote SSH ของ JetBrains มาโดยตลอด แต่คาดว่าวิธีใหม่นี้จะดีกว่ามาก

  • ผมสนใจสภาพแวดล้อมการพัฒนาแบบรีโมต แต่ก็ไม่ได้ตื่นเต้นมากนักกับการต้องไปจัดการซอฟต์แวร์เพิ่มบนคลาวด์ ผมคิดว่าเป็นไอเดียที่ดี เพราะใช้ Skypilot เพื่อเริ่มเครื่องสำหรับพัฒนาได้ผ่านปลั๊กอินกับ Cloud API โดยไม่ต้องมานั่งดูแลคลัสเตอร์ k8s แม้มันจะทำงานได้ดีกว่ากับการเปิด Jupyter server แต่ก็ดูเหมือนว่าเครื่องพัฒนาแบบ “ครบถ้วน” ก็น่าจะทำได้ด้วยการตั้งค่า SSH/VS Code เพิ่มอีกเล็กน้อย

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

  • อยากรู้จักเครื่องมือแนวนี้ให้มากขึ้น เห็นว่า Coder มีการรองรับ .devcontainer แบบอัลฟาอยู่ แต่ยังไม่รู้จักตัวเลือก OSS อื่น ๆ

  • ถ้าใช้การตั้งค่า Proxmox ก็แค่โคลน VM/คอนเทนเนอร์ที่มีอยู่ แล้วชี้ VSCode ไปหาเท่านั้นเอง แล้วสิ่งนี้เพิ่มอะไรเข้ามาจริง ๆ? มันไม่ใช่เรื่องอัตโนมัติด้วยซ้ำ (ใน Proxmox ก็คลิกไม่กี่ครั้งก็ทำได้) และก็ไม่ใช่เรื่องการจัดการทรัพยากรด้วย (Proxmox จัดการ storage ฯลฯ อยู่แล้ว) หรือว่าเป็นเรื่องตัวตนนักพัฒนา? ถ้าสิ่งเดียวที่ต้องการคือเรื่องนั้น ก็น่าจะเขียนสคริปต์ (ที่ค่อนข้างง่าย) เพื่อกระจาย SSH keys ไปยังสภาพแวดล้อมได้

  • จากประสบการณ์ที่เคยต้องติดตั้งทั้ง code-server ซึ่งเป็น VSCode ที่โฮสต์บนเครื่องระยะไกล และ SSH ด้วยกัน การได้ประสบการณ์ที่ทั้งสองอย่างถูกจัดการไว้อย่างดีก็น่าสนใจมาก

  • อีก implementation หนึ่งในสายนี้คือ devpod.sh

  • มีคำแนะนำด้านดีไซน์ว่าให้จัดข้อความบนปุ่มให้อยู่กึ่งกลางเพื่อให้ดูเป็นปุ่มจริง ๆ ถ้าจัดข้อความชิดซ้ายมันอาจดูเหมือน label แม้จะเป็นการเปลี่ยนแปลงเล็กน้อย แต่ก็ช่วยให้การใช้งานดีขึ้นได้

  • เข้าใจว่าเป็นสิ่งที่ติดตั้งบนเซิร์ฟเวอร์ระยะไกล แต่สิ่งนี้ให้สภาพแวดล้อมแบบรีโมตหรือแบบโลคัลกันแน่? แล้วในบริบทนี้ “สภาพแวดล้อม” หมายถึงอะไร? เป็นไฟล์ Docker compose กับ .env หรือไม่? เป็นโค้ดหรือการตั้งค่า vim หรือเป็น VM แบบ Vagrant?

  • ตอนนี้ปัญหาหลักของ devcontainers คือเมื่อรันแอป GUI แบบรีโมต หน้าต่าง GUI จะเปิดได้เฉพาะบนเซิร์ฟเวอร์เท่านั้น อยากรู้ว่าโซลูชันนี้สามารถ export GUI ออกมาใช้งานจากระยะไกลได้หรือไม่