7 คะแนน โดย xguru 2020-09-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 'Unique Durable Objects' สำหรับ Serverless

→ Objects : ตามแนวคิด OOP โดยตรง เป็นอินสแตนซ์ของคลาสและมีทั้งโค้ดกับสถานะรวมอยู่ด้วย

→ Unique : มี UUID หากรู้เพียง ID ก็สามารถส่งข้อความไปยังอ็อบเจ็กต์นั้นได้จาก Worker อื่นทั่วโลก

→ Durable : ต่างจากอ็อบเจ็กต์ทั่วไป ตรงที่สามารถบันทึกสถานะแบบถาวรลงดิสก์ได้ และเข้าถึงใช้งานได้โดยไม่มีเลเทนซี

  • ฟีเจอร์หลัก 2 อย่าง

→ Storage : มอบ Transactional Consistency ที่แข็งแกร่ง สามารถแบ่งฐานข้อมูลขนาดใหญ่ออกเป็นหน่วยเล็กหลายส่วนได้ และขยายระบบได้โดยไม่เพิ่มภาระในการดูแลรักษา

→ Coordination : โดยปกติคำขอแบบ serverless มักถูก load balancing แบบสุ่ม จึงเป็นไปไม่ได้ที่ไคลเอนต์สองรายจะเชื่อมต่อกับ worker ตัวเดียวกัน แต่ตอนนี้ทำได้แล้ว

กล่าวคือ สามารถสร้างแชตแบบเรียลไทม์ การแก้ไขเอกสารร่วมกัน การประชุมวิดีโอ คิวข้อความแบบ Pub/Sub เซสชันเกม ฯลฯ บน serverless ได้

หากต้องการใช้ WebSocket ก็จำเป็นต้องมี Coordination ลักษณะนี้ และเมื่อทำได้ผ่าน DO แล้ว Workers ก็เริ่มรองรับ WebSocket ด้วย

  • Durable Objects ไม่มีแนวคิดเรื่อง Region แต่รองรับทั่วโลก (Cloudflare จะจัดการส่งไปยังตำแหน่งที่ใกล้ที่สุดและดูแลให้เอง)

การใช้งานที่เหมาะสม

  • แอปเด่นน่าจะเป็นเครื่องมือทำงานร่วมกันสำหรับแก้ไขเอกสารแบบเรียลไทม์ที่มีผู้ใช้จำนวนมาก

  • Atomic Counter : เคาน์เตอร์ที่รองรับการทำงานพร้อมกันโดยไม่มีการสูญเสียของการเพิ่ม/ลด แม้มีหลายไคลเอนต์ร้องขอพร้อมกัน

  • แชต : แม้เป็นห้องสนทนาขนาดใหญ่มากก็ทำได้ด้วยโค้ดเพียงไม่กี่ร้อยบรรทัด และยังทำ rate limit ต่อ IP ได้ด้วย

  • ตะกร้าสินค้า, เกมเซิร์ฟเวอร์, IoT Coordination, โซเชียลฟีด, วิดเจ็ตคอมเมนต์/แชต

อนาคตของ Durable Objects : ฐานข้อมูล Edge อย่างแท้จริง

ขณะนี้ยังต้องได้รับคำเชิญเข้าร่วมเบต้าจึงจะใช้งานได้

ราคายังอยู่ระหว่างการพิจารณา แต่คาดว่าจะถูกกว่า AWS DynamoDB หรือ Google Cloud Firestore (จากคอมเมนต์ของ Greg ซึ่งเป็น PM บน HN)

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

 
xguru 2020-09-29

ที่ผ่านมา serverless มักถูกนำไปใช้กับสิ่งที่ส่วนใหญ่เป็นแบบ stateless เป็นหลัก แต่ตอนนี้ก็กำลังขยายให้ครอบคลุมถึงส่วนที่ต้องมี coordination ด้วยนะครับ

ช่วงนี้ความเคลื่อนไหวของ CloudFlare น่าสนใจมากจริงๆ

CloudFlare, เริ่มเบต้า serverless ของ Workers Unbound https://th.news.hada.io/topic?id=2543

วิธีที่ CloudFlare ทำให้เวลา cold start ของ Workers เป็น 0 https://th.news.hada.io/topic?id=2567

Cloudflare เปิดตัวบริการทีวีถ่ายทอดสดตลอด 24 ชั่วโมงที่ใช้โครงข่ายระดับโลกของตัวเอง https://th.news.hada.io/topic?id=2227