- โฮสต์เองได้อย่างง่ายดาย: ออกแบบมาให้ติดตั้งและดูแลรักษาได้ด้วยความพยายามน้อยที่สุด แอปพลิเคชันถูกสร้างมาให้ทำงานได้โดยไม่ต้องแก้ปัญหาภายในที่ซับซ้อน
- การขยายระบบในแนวนอน: ด้วยโครงสร้างที่เรียบง่ายแต่ทรงพลัง 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 ความคิดเห็น
ความคิดเห็นบน 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 ออกมาใช้งานจากระยะไกลได้หรือไม่