เห็นคำถามและการพูดคุยที่น่าสนใจ ในกลุ่ม Golang Thailand
เกี่ยวกับ Messaging vs gRPC ว่าแบบไหนที่ performance ดีกว่ากัน ?
รวมทั้งข้อดีและข้อเสีย
จึงทำการสรุปการตอบต่าง ๆ ไว้นิดหน่อย
เรื่องแรกน่าจะเป็นเรื่องของรูปแบบ communication หรือการติดต่อสื่อสาร
- gRPC นั้นจะทำงานแบบ synchronous (Remote Procedure Call)
- Messaging นั้นจะทำงานแบบ asynchronous (Fire and Forgot) ยกตัวอย่างเครื่องมือที่ใช้งาน RabbitMQ, ActiveMQ และ Apache Kafka เป็นต้น
ดังนั้น use case การใช้งานจะแตกต่างกันไป
แน่นอนว่าในระบบหนึ่ง ๆ หรือ flow หนึ่ง ๆ
สามารถมีการทำงานทั้งสองแบบอยู่ด้วยกันได้เสมอ
อีกเรื่องคือ รูปแบบของ interact ระหว่าง service หรือระหว่าง consumer และ producer นั้น
จะมีทั้งแบบ
- one-to-one
- one-to-many
โดยปกติแล้ว gRPC จะเป็นแบบ one-to-one
ส่วน messaging นั้นสามารถทำได้ทั้ง one-to-one (Queue) และ one-to-many (Topic)
ทั้งสองแบบนั้นเป็นแนวทางในการติดต่อสื่อสารระหว่างส่วนการทำงานต่าง ๆ
ซึ่งน่าจะต้องมองให้ออกว่า ความต้องการของระบบเป็นอย่างไร
บางครั้งการแยกระบบเป็นระบบย่อย ๆ
แล้วมาเสียเวลาจัดการเรื่องเหล่านี้ก็อาจจะแย่ก็ได้
ใครสนใจลองไปพูดคุยกันได้ครับ
ความรู้ต่าง ๆ จะให้ดีต้องนำมาแบ่งปันกัน