DEV Community

Cover image for Google Pub Sub: คู่มือฉบับสมบูรณ์ระบบรับส่งข้อความบนคลาวด์
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

Google Pub Sub: คู่มือฉบับสมบูรณ์ระบบรับส่งข้อความบนคลาวด์

Google Pub Sub หรือ Google Cloud Pub/Sub คือบริการรับส่งข้อความแบบเรียลไทม์ที่ได้รับการจัดการเต็มรูปแบบ เหมาะสำหรับสถาปัตยกรรมแบบ event-driven โดยช่วยให้ระบบแยกส่วนและสื่อสารกันแบบอะซิงโครนัส รองรับทั้ง event ingestion และการกระจายข้อมูลขนาดใหญ่

ทดลองใช้ Apidog วันนี้

ไม่ว่าคุณจะออกแบบไมโครเซอร์วิส, สร้าง pipeline วิเคราะห์ข้อมูล, หรือรวมระบบแบบกระจาย การเข้าใจการใช้งาน Google Pub Sub ถือเป็นพื้นฐานสำคัญสำหรับนักพัฒนา Cloud-Native

Google Pub Sub ทำงานอย่างไร: แนวคิดหลักและสถาปัตยกรรม

Google Pub Sub ใช้โมเดล publish-subscribe (pub/sub) โดยมีส่วนประกอบหลักดังนี้:

  • หัวข้อ (Topics): จุดที่ผู้เผยแพร่ส่งข้อความ
  • การสมัครสมาชิก (Subscriptions): กระแสข้อความจากหัวข้อไปยังผู้สมัครสมาชิก
  • ผู้เผยแพร่ (Publishers): แอปพลิเคชันที่ส่งข้อความ
  • ผู้สมัครสมาชิก (Subscribers): รับข้อความจาก subscription ที่เชื่อมกับหัวข้อ

การไหลของข้อความ

  1. ผู้เผยแพร่ส่งข้อความไปยังหัวข้อ
  2. หัวข้อมี subscription แนบหนึ่งหรือหลายรายการ
  3. ผู้สมัครสมาชิกดึง (pull) หรือรับ (push) ข้อความจาก subscription
  4. ผู้สมัครสมาชิก ack ข้อความเพื่อยืนยันการรับ (at-least-once delivery)

Google Pub Sub รองรับการส่งข้อความสองแบบ:

  • Pull: ผู้สมัครสมาชิกร้องขอข้อความ (pull)
  • Push: Pub/Sub push ข้อความไปยัง HTTP endpoint ที่กำหนด

ความน่าเชื่อถือและการปรับขนาด

Google Pub Sub การันตี at-least-once delivery, ข้อมูลซ้ำซ้อนข้ามโซน, และปรับขยายอัตโนมัติ รองรับปริมาณข้อมูลระดับ IoT หรือ Big Data

คุณสมบัติสำคัญที่ทำให้ Google Pub Sub แตกต่าง

1. จัดการเต็มรูปแบบและไร้เซิร์ฟเวอร์ (Serverless)

ไม่ต้องดูแลเซิร์ฟเวอร์และคลัสเตอร์ Pub/Sub จัดการ scaling, availability และ durability ให้อัตโนมัติ

2. ความพร้อมใช้งานทั่วโลก

ส่งข้อมูลข้าม region ได้ทันที เหมาะสำหรับระบบ global scale

3. โหมดการส่งที่ยืดหยุ่น

เลือก push หรือ pull ได้ตามสถาปัตยกรรม รองรับ fan-out โดยกำเนิด

4. ความปลอดภัยและการปฏิบัติตามข้อกำหนด

ข้อมูลถูกเข้ารหัสระหว่างส่งและขณะพัก ใช้นโยบาย IAM จำกัดสิทธิ์การเข้าถึง

5. การส่งตามลำดับและการประมวลผลเพียงครั้งเดียว (Exactly-Once Processing)

รองรับ message ordering ตาม key และ integrate กับ Dataflow เพื่อการประมวลผลแบบ exactly-once

การตั้งค่า Google Pub Sub: คู่มือทีละขั้นตอน

ตั้งค่า Pub/Sub ได้อย่างรวดเร็วผ่าน CLI และโค้ด:

1. สร้างหัวข้อ (Topic)

gcloud pubsub topics create my-topic
Enter fullscreen mode Exit fullscreen mode

2. สร้างการสมัครสมาชิก (Subscription)

gcloud pubsub subscriptions create my-subscription --topic=my-topic
Enter fullscreen mode Exit fullscreen mode

3. เผยแพร่ข้อความ (Message)

gcloud pubsub topics publish my-topic --message="Hello, world!"
Enter fullscreen mode Exit fullscreen mode

4. ดึงข้อความ (Messages)

gcloud pubsub subscriptions pull my-subscription --auto-ack
Enter fullscreen mode Exit fullscreen mode

หรือใช้งานผ่าน Google Cloud Pub/Sub Client Libraries เช่น Python:

ตัวอย่าง Python: Publish/Subscribe ข้อความ

from google.cloud import pubsub_v1
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('your-project-id', 'my-topic')
publisher.publish(topic_path, b'Hello, Pub/Sub!')

subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path('your-project-id', 'my-subscription')

def callback(message):
    print(f"Received: {message.data}")
    message.ack()

subscriber.subscribe(subscription_path, callback=callback)
Enter fullscreen mode Exit fullscreen mode

กรณีการใช้งานจริงสำหรับ Google Pub Sub

  • Event-Driven Microservices: เชื่อมต่อไมโครเซอร์วิสแบบ decoupling
  • Log/Data Ingestion: stream log หรือ event analytics เข้าสู่ BigQuery/Dataflow
  • IoT Streaming: อุปกรณ์ IoT จำนวนมากส่งข้อมูลแบบ real-time
  • Real-time Notification: trigger แจ้งเตือนหรือ dashboard update ทันที
  • Workflow Orchestration: ประสานการทำงานของ distributed workflow ได้อย่างยืดหยุ่น

การรวม Google Pub Sub เข้ากับการพัฒนาที่ขับเคลื่อนด้วย API

ออกแบบและทดสอบ API ที่โต้ตอบกับ Pub/Sub ได้ง่ายขึ้นด้วย Apidog:

  • ออกแบบและจัดทำเอกสาร API ที่เผยแพร่/สมัครสมาชิกหัวข้อ Pub/Sub
  • Mock endpoint จำลองการไหลของข้อความระหว่าง dev
  • ทดสอบ HTTP push endpoint ที่รับข้อความจาก Pub/Sub

ผสาน Apidog ใน workflow เพื่อ ออกแบบ, จำลอง, และ ทดสอบ API ที่เกี่ยวข้องกับ Pub/Sub ได้อย่างรวดเร็ว

แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ Google Pub Sub

  • Structured Payload: ใช้ JSON/Protobuf สำหรับ message payload เสมอ
  • Idempotent Subscriber: Subscriber ต้อง handle duplicate message ได้ (เพราะ at-least-once delivery)
  • Monitoring: ใช้งาน Cloud Monitoring เพื่อตรวจสอบ backlog, latency, error rate
  • IAM Access Control: จำกัดสิทธิ์ publish/subscribe ด้วย IAM roles
  • API-First Development: กำหนด API/Message schema ล่วงหน้า Apidog ช่วยจัดทำเอกสารและแชร์ได้ง่าย

คุณสมบัติขั้นสูง: การจัดลำดับ, การกรอง, Dead-Letter Topics

  • Message Ordering: ใช้ ordering key สำหรับ use case ที่ต้องลำดับ message (เช่น ธุรกรรม)
  • Message Filtering: Subscription สามารถ filter message ตาม attribute เพื่อลดภาระ processing
  • Dead-Letter Topics: กำหนด dead-letter topic สำหรับข้อความที่ส่งไม่สำเร็จ เพื่อตรวจสอบหรือ retry ในภายหลัง

ราคาและข้อจำกัดของ Google Pub Sub

ราคาขึ้นกับปริมาณข้อมูลและจำนวนข้อความ มี free tier (10GB/เดือน) และโควต้าสำหรับ message size (10MB), throughput และจำนวน resource ต่อโปรเจกต์ ดูรายละเอียดล่าสุดที่ หน้าการกำหนดราคาของ Google Cloud Pub/Sub

ตัวอย่างเชิงปฏิบัติ: การสร้างไปป์ไลน์การวิเคราะห์แบบเรียลไทม์ด้วย Google Pub Sub

ตัวอย่าง workflow:

  • Frontend: ส่ง JSON pageview ไปยัง topic pageviews
  • Pub/Sub: ส่ง event ถึง subscription analytics-service
  • Backend Subscriber: ดึง/ประมวลผล/เขียน BigQuery
  • Analytics Dashboard: Query BigQuery สำหรับ metric real-time

ใช้ Apidog เพื่อออกแบบและจำลอง API สำหรับการ publish/subscribe event และทดสอบการ integrate ส่วน frontend/backend

บทสรุป: การเป็นผู้เชี่ยวชาญ Google Pub Sub สำหรับแอปพลิเคชันคลาวด์ยุคใหม่

Google Pub Sub คือหัวใจของ event-driven cloud architecture ที่ต้องการ scaling และ real-time messaging จริงจัง รองรับ use case ตั้งแต่ data ingestion, microservices integration จนถึง workflow orchestration

จับคู่ Pub/Sub กับ Apidog เพื่อออกแบบ ทดสอบ และจัดการ API ที่ robust, มีเอกสารครบถ้วน และดูแลรักษาง่ายสำหรับแอปพลิเคชันยุคใหม่

Top comments (0)