เห็นใน feed มีสิ่งที่น่าสนใจคือ Dapr (Distributed application runtime)
คำถามแรกคือ มันคืออะไร
ถูกสร้างมาเพื่ออะไร
จึงทำการอ่านและสรุปไว้นิดหน่อย

Distributed application runtime คืออะไร

ระบบส่วนใหญ่จะทำงานแบบกระจายหรือ Distributed อยู่แล้ว
นั่นคือระบบต่าง ๆ กระจายทำงานของตนเองไป
แต่ว่าส่วนงานต่าง ๆ ต้องทำงานร่วมกัน
จึงจำเป็นต้องการตัวจัดการต่าง ๆ ดังนี้

  • State management ไม่ว่าจะอยู่ใน Data store ทั้ง RDBMS และ NoSQL เพื่อจัดการกับ state ต่าง ๆ ของระบบงาน
  • การติดต่อสื่อสารระหว่าง system/service/component ซึ่งมีทั้งแบบ service-to-service และ event-driven (Pub/Sub)
  • ในการติดต่อสื่อสารแบบ service-to-service จำเป็นต้องมีการจัดการเรื่อง retry, rate limit และ circuite breaking อีกด้วย เพื่อให้การทำงานของระบบน่าเชื่อถือมากขึ้น
  • เรื่องของ Observability ทั้ง Distributed tracing, Health check, Logging และ Metrics
  • จัดการ resource ต่าง ๆ เช่น Secret เป็นต้น

นี่คือ สิ่งพื้นฐานสำหรับระบบที่ทำงานแบบกระจาย

โดยท่ีทาง Microsoft ได้สร้าง open source project ชื่อว่า Dapr ออกมา

เพื่อช่วยจัดการระบบงานตามความต้องการพื้นฐานที่อธิบายมา
เป็น implementation ของ Distributed application runtime นั่นเอง
ทำให้สามารถจัดการระบบงานในรูปแบบต่าง ๆ ใน runtime เดียวกันได้

ในแต่ละส่วนการทำงานของ Dapr จะเป็นอิสระต่อกัน

โดยที่ Dapr นั้นจะทำงานเหนือ infrastructure ซึ่งเป็นอะไรก็ได้
ทั้ง On-premise และ Cloud sytem
แสดงดังรูป

อีกเรื่องคือ Dapr นั้นจะเน้นขึ้นไปใกล้ชิดกับ application มากกว่า Kubernetes

ซึ่งสามารถนำ Dapr ไป run บน Kubernetes ได้
ด้วยการสร้าง sidecar container เข้ามาจัดการ Pods ต่าง ๆ
หรือจะ deploy แบบ standalone ก็ได้
ต่างจากกับพวก Service mesh เช่น Istio และ Linkerd
จะเน้นไปที่ network infrastructure layer มากกว่า
สำหรับการติดต่อสื่อสารระหว่าง service ผ่าน sidecar
แต่ก็ไม่ได้เพิ่ม feature ใด ๆ เข้ามาเลย

ไปเจอรูปนี้มา น่าสนใจดี

เกี่ยวกับ Dapr และ Service mesh

https://blog.nillsf.com/index.php/2020/04/26/introduction-to-dapr/