Google Pub Sub หรือ Google Cloud Pub/Sub คือบริการรับส่งข้อความแบบเรียลไทม์ที่ได้รับการจัดการเต็มรูปแบบ เหมาะสำหรับสถาปัตยกรรมแบบ event-driven โดยช่วยให้ระบบแยกส่วนและสื่อสารกันแบบอะซิงโครนัส รองรับทั้ง event ingestion และการกระจายข้อมูลขนาดใหญ่
ไม่ว่าคุณจะออกแบบไมโครเซอร์วิส, สร้าง pipeline วิเคราะห์ข้อมูล, หรือรวมระบบแบบกระจาย การเข้าใจการใช้งาน Google Pub Sub ถือเป็นพื้นฐานสำคัญสำหรับนักพัฒนา Cloud-Native
Google Pub Sub ทำงานอย่างไร: แนวคิดหลักและสถาปัตยกรรม
Google Pub Sub ใช้โมเดล publish-subscribe (pub/sub) โดยมีส่วนประกอบหลักดังนี้:
- หัวข้อ (Topics): จุดที่ผู้เผยแพร่ส่งข้อความ
- การสมัครสมาชิก (Subscriptions): กระแสข้อความจากหัวข้อไปยังผู้สมัครสมาชิก
- ผู้เผยแพร่ (Publishers): แอปพลิเคชันที่ส่งข้อความ
- ผู้สมัครสมาชิก (Subscribers): รับข้อความจาก subscription ที่เชื่อมกับหัวข้อ
การไหลของข้อความ
- ผู้เผยแพร่ส่งข้อความไปยังหัวข้อ
- หัวข้อมี subscription แนบหนึ่งหรือหลายรายการ
- ผู้สมัครสมาชิกดึง (pull) หรือรับ (push) ข้อความจาก subscription
- ผู้สมัครสมาชิก 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
2. สร้างการสมัครสมาชิก (Subscription)
gcloud pubsub subscriptions create my-subscription --topic=my-topic
3. เผยแพร่ข้อความ (Message)
gcloud pubsub topics publish my-topic --message="Hello, world!"
4. ดึงข้อความ (Messages)
gcloud pubsub subscriptions pull my-subscription --auto-ack
หรือใช้งานผ่าน 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)
กรณีการใช้งานจริงสำหรับ 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)