Back to notes
mastery-architecture
Featured

Modern Communication Protocols: เลือกท่อส่งข้อมูลระดับไฮเอนด์

โลกไม่ได้มีแค่ HTTP/1.1! เจาะลึกโปรโตคอลยุคใหม่ที่เร็วกว่า เบากว่า และ Real-time กว่า เพื่อระบบที่รองรับการ Scale ระดับโลก

January 30, 20262 min read readNNexis by Seereen

🛑 1. The Problem First: "คอขวด" ของการสื่อสารแบบเดิม

ลองนึกถึงแอปที่มีการรับส่งข้อมูลมหาศาลหรือต้องการความสดใหม่ตลอดเวลา:

HLJS BASH
# ❌ Naive Approach: ใช้ HTTP Polling (ยิงถามทุก 1 วินาที)
GET /messages -> []
GET /messages -> []
GET /messages -> [{ text: "สวัสดี" }] 🌋 พัง! เปลือง CPU และ Bandwidth มหาศาลเพื่อข้อมูลเพียงนิดเดียว

ปัญหา: HTTP/1.1 เป็นระบบ "ถาม-ตอบ" (Request-Response) ที่มีต้นทุนสูง (Overhead) เพราะต้องสร้างการเชื่อมต่อใหม่บ่อยๆ และไม่สามารถส่งข้อมูลหลายอย่างพร้อมกันได้ดีนัก (Head-of-Line Blocking) เมื่อผู้ใช้เพิ่มขึ้นมหาศาล Server ของคุณจะล่มเพียงเพราะต้องตอบคำถามซ้ำๆ ว่า "มีข้อมูลใหม่ไหม?" นี่คือจุดอ่อนที่ Senior ต้องแก้ให้ขาดครับ


💡 2. Real-Life Analogy: จดหมาย, วิทยุสื่อสาร และท่อส่งของอัตโนมัติ

  • HTTP/1.1: เหมือนการ "ส่งจดหมายตอบโต้". คุณส่งไป (Request) เขาถึงส่งกลับ (Response) ถ้าจะเอาของ 5 อย่าง ต้องส่งจดหมาย 5 ฉบับแยกกัน
  • HTTP/2: เหมือน "ท่อลมความเร็วสูง". คุณส่งของหลายอย่างเข้าไปในท่อเดียวพร้อมกันได้ (Multiplexing) และปลายทางสามารถ "ดันของ" มาให้คุณก่อนขอได้เลย (Server Push)
  • gRPC: เหมือนการ "คุยรหัสลับทางทหาร". ภาษาที่ใช้เป็นรหัส Binary ที่สั้นและเร็วมาก ไม่ใช่ภาษาพูด (JSON) ที่ยิ่นย้อ ทำให้คุยกันได้ไวและแม่นยำที่สุด
  • WebSockets: เหมือนการ "เปิดสายโทรศัพท์ค้างไว้". ไม่ต้องเริ่มทักใหม่ทุกครั้ง มีเรื่องอะไรก็พูดออกมาได้ทันทีทั้งสองฝ่าย (Real-time)

🚀 3. Execution Journey: พลังของ gRPC และ Protobuf

ทำไม gRPC ถึงเร็วกว่า REST? คำตอบคือ Protobuf (Binary Format)

🛠 Step-by-step:

  1. Define Contract: เขียนไฟล์ .proto ระบุโครงสร้างข้อมูล (เหมือน TS Interface แต่เป็น Binary)
  2. Serialize: เวลารับส่ง ข้อมูลจะถูกบีบให้เป็น "เลขฐานสอง" ที่สั้นที่สุด (ไม่ใช่ตัวอักษร JSON)
  3. HTTP/2 Transport: ข้อมูลวิ่งผ่านท่อ HTTP/2 ที่มี Multiplexing
  4. Fast Parse: ปลายทางรับไปแกะรหัสได้ทันทีโดยไม่ต้องใช้พลัง CPU เยอะในการอ่าน Text
HLJS PROTOBUF
// ✅ Best Practice: โครงสร้างข้อมูลที่เล็กและแข็งแรง
message User {
  int32 id = 1;      // 🛠 ใช้พื้นที่แค่ไม่กี่ byte
  string name = 2;
}

🪤 4. The Junior Trap: โรค "Socket ทุกอย่าง"

จูเนียร์มักจะตื่นตาตื่นใจกับความ Real-time จนเอาไปใช้กับทุกหน้า:

HLJS JAVASCRIPT
// ❌ Junior Trap: เปิด WebSocket ทิ้งไว้ทุกหน้าแม้จะแค่ดูหน้า Profile นิ่งๆ
const socket = new WebSocket("wss://api.example.com");
// 🌋 พัง! การเปิด Socket ค้างไว้กิน Ram ที่ Server ตลอดเวลา (Idle Connection)
// ถ้ามีคนเข้าเว็บ 1 แสนคนพร้อมกัน Server จะล่มเพราะ RAM เต็มทั้งที่ไม่ได้ทำอะไรเลย

ระวัง: WebSockets มีต้นทุนเรื่อง State ที่ Server สูงมาก ✅ การแก้ไข: ใช้ HTTP/2 สำหรับงานทั่วไป และใช้ WebSocket เฉพาะจุดที่ต้อง Real-time จริงๆ เช่น Chat หรือ Live Graph


⚖️ 5. The Why Matrix: เลือกโปรโตคอลให้ถูกจังหวะ

แบบจุดเด่น (Pro)จุดด้อย (Con)เหมาะกับสถานการณ์
HTTP/1.1 (REST)ง่ายที่สุด, Tool เยอะช้ากว่า, Overhead สูงPublic API ทั่วไป
HTTP/2⚡⚡⚡ เร็ว, Multiplexingต้องใช้ HTTPS เท่านั้นWeb Frontend ยุคใหม่
gRPC⚡⚡⚡ เร็วที่สุด, ขนาดเล็กBrowser Support น้อยคุยกันเองระหว่าง Microservices
WebSockets🚀 Real-time แท้ๆจัดการยาก (Scaling ยาก)Chat, Game, Live Data

🎓 6. Senior Mindset Summary

การเป็น Senior คือการเลิกถามว่า "อันไหนดีกว่ากัน" แต่ต้องถามว่า "เราต้องการความเร็วระดับไหน และยอมจ่ายค่าดูแลรักษาเท่าไหร่". การเลือกท่อส่งข้อมูลที่เหมาะสมคือศิลปะของการบริหารทรัพยากรให้เกิดประโยชน์สูงสุดต่อธุรกิจครับ!

Share this note

© 2026 My Notes by Seereen