- โค้ดรันไทม์ JavaScript/WASM ที่ใช้งานจริงใน CloudFlare Workers
- มีการปรับเปลี่ยนเพียงบางส่วนเพื่อให้สามารถพอร์ตไปยังสภาพแวดล้อมอื่นได้
- ชื่อนี้มาจาก
-d ของเซิร์ฟเวอร์ Unix ที่หมายถึง "daemon" จึงอ่านว่า "worker dee"
การใช้งาน
- สามารถโฮสต์ Workers เองได้ และยังเป็นเว็บเซิร์ฟเวอร์ที่ใช้งานผ่าน API ได้ด้วย จึงนำไปใช้ได้ง่ายในทุกสภาพแวดล้อม
- ใช้สำหรับการพัฒนาและทดสอบบนเครื่องโลคัล
- พร็อกซีแบบเขียนโปรแกรมได้ (forward และ reverse) สามารถดักจับและประมวลผล request/response ด้วย JavaScript ได้
What it is
- Server-first : แม้รันไทม์ JS/WASM จำนวนมากจะใช้งานได้อเนกประสงค์ แต่ workerd มุ่งเน้นเฉพาะฝั่งเซิร์ฟเวอร์เท่านั้น โดยเฉพาะ HTTP server
- Web standard APIs : ให้ API มาตรฐานแบบเดียวกับที่ใช้ในเว็บเบราว์เซอร์ (Fetch, URL, WebCrypto เป็นต้น) กล่าวคือโค้ดที่พัฒนาที่นี่สามารถพอร์ตไปยังเบราว์เซอร์ได้ด้วย
- Nanoservices : ตอนนี้ก้าวข้ามจากไมโครเซอร์วิสไปสู่นาโนเซอร์วิส!
- นาโนเซอร์วิสเป็นโมเดลใหม่ที่มีข้อดีของการดีพลอยแยกอิสระ พร้อมมีโอเวอร์เฮดเพียงระดับใกล้เคียงการเรียกใช้ฟังก์ชันในไลบรารี
- เมื่อใช้ workerd สามารถตั้งค่า Worker จำนวนมากให้อยู่ในโปรเซสเดียวกันได้ โดยแต่ละ Worker จะรันแยกจากกัน แต่ก็สื่อสารระหว่างกันได้
- Homogeneous deployment : เดิมทีต้องรันบริการเฉพาะในคอนเทนเนอร์เฉพาะ แต่ workerd ทำให้ทุกเครื่องสามารถรันทุกบริการได้
- Capability bindings: การตั้งค่าที่สะอาดและรับประกันความปลอดภัยจาก SSRF
- Always backwards compatible : รับประกันความเข้ากันได้ย้อนหลังเสมอ
What it's not
- workerd is not a Secure Sandbox : อาจมีโค้ดอันตรายถูกรันได้ หากต้องการป้องกันสิ่งนี้จำเป็นต้องมีเลเยอร์ sandboxing แยกต่างหาก
- workerd is not an independent project : เป็นแกนหลักและส่วนหนึ่งของ Cloudflare Workers แม้จะรับคอมมิตจากภายนอก แต่ยากที่จะรับประกันสิ่งต่าง ๆ ได้
- workerd is not an off-the-shelf edge compute platform : ไม่ใช่บริการ Workers ทั้งชุด
2 ความคิดเห็น
เป็นสิ่งที่อยากลองทำดูถ้ามันเปิดออกมา พอเปิดจริงก็โอ้โห
ตอนแรกก็สงสัยว่ามันหมายความว่าอะไร แต่พออ่านคำอธิบายในบรรทัดก่อนหน้าที่พูดถึงแนวทางพัฒนาแบบนาโนเซอร์วิส (functions) ก็เข้าใจทันทีว่า แค่ดีพลอยนาโนเซอร์วิสทั้งหมดลงบนเครื่องเดียวได้เลย (เขาบอกว่าทำได้เพราะโอเวอร์เฮดต่ำ) แล้วถ้าจำเป็นก็แค่เพิ่มเครื่องแบบเดียวกันเข้าไป จึงไม่ต้องมีการตั้งค่าการดีพลอยที่ซับซ้อน