เห็นคำถามและการพูดคุยที่น่าสนใจ ในกลุ่ม Golang Thailand
เกี่ยวกับ Messaging vs gRPC ว่าแบบไหนที่ performance ดีกว่ากัน ?
รวมทั้งข้อดีและข้อเสีย
จึงทำการสรุปการตอบต่าง ๆ ไว้นิดหน่อย

https://www.facebook.com/groups/584867114995854/permalink/1807309942751559

เรื่องแรกน่าจะเป็นเรื่องของรูปแบบ 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)

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

ใครสนใจลองไปพูดคุยกันได้ครับ
ความรู้ต่าง ๆ จะให้ดีต้องนำมาแบ่งปันกัน