เห็นใน 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