Erlang-RED: นำการทำงานแบบขนานที่แท้จริงมาสู่ Node-RED ด้วย Backend ของ Erlang

BigGo Editorial Team
Erlang-RED: นำการทำงานแบบขนานที่แท้จริงมาสู่ Node-RED ด้วย Backend ของ Erlang

ในโลกของการเขียนโปรแกรมแบบภาพและการพัฒนาแบบ flow-based มีโครงการใหม่ที่กำลังได้รับความสนใจจากแนวทางที่สร้างสรรค์ในการแก้ไขข้อจำกัดด้านการทำงานแบบขนาน Erlang-RED ที่พัฒนาโดยสมาชิกชุมชน Towaway69 มีเป้าหมายที่จะแทนที่ backend ของ Node-RED ที่ใช้ JavaScript ด้วย Erlang ซึ่งเป็นภาษาที่ออกแบบมาเฉพาะสำหรับการทำงานแบบขนานและการส่งข้อความ

การผสมผสานการเขียนโปรแกรมแบบภาพกับโมเดลการทำงานแบบขนานของ Erlang

Erlang-RED ใช้ประโยชน์จากอินเทอร์เฟซที่ใช้งานง่ายของ Node-RED ในขณะที่แทนที่ backend ด้วยความสามารถในการทำงานแบบขนานอันทรงพลังของ Erlang โครงการนี้แก้ไขข้อจำกัดพื้นฐานอย่างหนึ่งของ Node-RED นั่นคือลักษณะการทำงานแบบ single-threaded ของ JavaScript ด้วยการใช้ backend ของ Erlang ที่เข้ากันได้กับ flow ของ Node-RED ที่มีอยู่แล้ว นักพัฒนาสามารถได้รับประโยชน์จากการทำงานแบบขนานที่แท้จริงโดยไม่ต้องเสียสละความเรียบง่ายของการเขียนโปรแกรมแบบภาพ

แนวคิดคือการใช้ประโยชน์จากการส่งข้อความของ Erlang และกระบวนการที่มี overhead ต่ำเพื่อให้มีการทำงานแบบขนานที่แท้จริงใน flow ของ Node-RED นอกจากนี้ยังนำการเขียนโปรแกรมแบบ flow-based ที่ใช้โค้ดน้อยมาสู่ Erlang

แนวทางนี้อาจมีคุณค่าอย่างยิ่งสำหรับแอปพลิเคชันที่ต้องการการทำงานแบบขนานสูง เช่น ระบบ IoT, data pipeline หรือแอปพลิเคชันแบบกระจาย นักพัฒนาได้สร้าง node หลักจำนวนมากของ Node-RED รวมถึง http in/out, MQTT, การดำเนินการกับไฟล์ และ node ควบคุม flow เช่น switch, join และ split

โหนดที่รองรับใน Erlang-RED (รายการบางส่วน)

โหนด สถานะ
catch จับข้อยกเว้นของโหนดที่เลือกและโฟลว์ทั้งหมด
change รองรับการทำงานหลายอย่าง, รองรับ JSONata พื้นฐาน
debug รองรับการดีบักข้อความทั้งหมด
delay รองรับการหน่วงเวลาแบบคงที่
exec การประมวลผลคำสั่งในโหมด spawn พร้อมรองรับการกำหนดเวลาหมด
http in ทำงานสำหรับคำขอ GET และ POST
http request รองรับคำขอพื้นฐาน
mqtt in/out ควรทำงานได้
split รองรับการแยกอาร์เรย์
switch ทำงานได้
template การใช้เทมเพลต Mustache ทำงานได้

ข้อจำกัด:

  • ไม่รองรับบริบท (flow, node, global)
  • การใช้งาน JSONata มีข้อจำกัด
  • ไม่รองรับโหนดฟังก์ชัน JavaScript
ภาพหน้าจอของอินเทอร์เฟซ Node-RED สำหรับการส่งออกโหนด ที่แสดงให้เห็นถึงสภาพแวดล้อมการเขียนโปรแกรมแบบภาพที่ Erlang-RED พัฒนาต่อยอด
ภาพหน้าจอของอินเทอร์เฟซ Node-RED สำหรับการส่งออกโหนด ที่แสดงให้เห็นถึงสภาพแวดล้อมการเขียนโปรแกรมแบบภาพที่ Erlang-RED พัฒนาต่อยอด

ความท้าทายในการนำการเขียนโปรแกรมแบบภาพมาใช้

การสนทนาในชุมชนได้เน้นถึงความท้าทายหลายประการที่การเขียนโปรแกรมแบบภาพอย่าง Erlang-RED กำลังเผชิญ ปัญหาสำคัญประการหนึ่งคือการขาดเครื่องมือสำหรับการควบคุมเวอร์ชันและการเปรียบเทียบแบบภาพ ไม่เหมือนกับโค้ดที่เป็นข้อความที่เครื่องมืออย่าง Git สามารถแสดงการเปลี่ยนแปลงที่แม่นยำ flow แบบภาพมักถูกเก็บเป็น JSON พร้อมกับพิกัดที่ทำให้การเปรียบเทียบที่มีความหมายเป็นเรื่องยาก

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

แม้จะมีความท้าทายเหล่านี้ นักพัฒนาชี้ให้เห็นถึงความสามารถของ Node-RED ในการจัดการกับการบำรุงรักษาโปรแกรมขนาดใหญ่ผ่านคุณสมบัติเช่น link node และ subflow ซึ่งช่วยให้สามารถนำโค้ดกลับมาใช้ใหม่และจัดระเบียบแอปพลิเคชันที่ซับซ้อนได้ดีขึ้น

จุดตัดระหว่างโอเพนซอร์สและปรัชญาด้านลิขสิทธิ์

มีการอภิปรายที่น่าสนใจเกิดขึ้นเกี่ยวกับลิขสิทธิ์ DON'T DO EVIL ที่ไม่ธรรมดาของโครงการ ลิขสิทธิ์นี้ได้รับแรงบันดาลใจจากลิขสิทธิ์ JSONlint ของ Douglas Crockford และได้จุดประกายการถกเถียงเกี่ยวกับความเป็นไปได้และนัยสำคัญของการเพิ่มข้อความเชิงปรัชญาลงในลิขสิทธิ์ซอฟต์แวร์

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

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

ทิศทางในอนาคตและโครงการที่คล้ายคลึงกัน

ชุมชนแสดงความสนใจในแนวทางที่คล้ายคลึงกันสำหรับภาษาอื่นๆ โดยมีการกล่าวถึง Py-RED สำหรับ Python และคำถามเกี่ยวกับสภาพแวดล้อมการเขียนโปรแกรมแบบภาพอื่นๆ นักพัฒนายังได้กล่าวถึงแผนการที่จะปรับปรุงเอกสารด้วยตัวอย่างจากโลกแห่งความเป็นจริงมากขึ้นและอาจสร้างวิดีโออธิบายโครงการ

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

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

อ้างอิง: Erlang-RED - A Node-RED backend coded in Erlang