เคยสงสัยไหมครับ? เวลาเรากดเรียกรถ Uber หรือดูเดลิเวอรี่ ทำไมรถขยับสมูทมาก? แจ้งเตือนเด้งปุ๊บปั๊บเหมือนอยู่ข้างๆ ทั้งที่บางทีเน็ตมือถือเราก็แกว่งจะเป็นจะตาย?
เบื้องหลังความเทพนี้ ไม่ใช่แค่เรื่อง Internet เร็ว แต่คือสถาปัตยกรรมที่ชื่อว่า RAMEN ครับ
วันนี้ผมจะพาไปแกะรอยดูว่า Uber แก้โจทย์ Real-time Communication ระดับล้านคนพร้อมกันยังไง ให้ลื่นไหลและเสถียรสุดๆ
1. ลืมวิธี Polling ไปได้เลย
สมัยก่อน (หรือแอปทั่วไป) เวลาอยากรู้ว่า รถขยับยัง? แอปในมือถือต้องคอยยิงคำถามไปหา Server ซ้ำๆ ทุก 1-2 วินาที (Polling)
- ปัญหาคือ: 80% ของคำถามที่ยิงไป คำตอบคือ ยังไม่ขยับทำให้เปลืองเน็ตฟรี เปลืองแบตมือถือ และ Server ทำงานหนักโดยใช่เหตุ


2. กำเนิด RAMEN: เปลี่ยนจาก polling เป็น Push
Uber สร้างระบบ RAMEN (Real-time Asynchronous Messaging Network) ขึ้นมาปฏิวัติวงการ
- Concept: แทนที่จะให้มือถือคอยถาม Server เปลี่ยนเป็นให้ Server Push ลงมาเองทันทีที่มีข้อมูลใหม่
- ผลลัพธ์: ลด Latency ได้มหาศาล และลดภาระ Server ลงไปเยอะมาก เพราะส่งเฉพาะตอนจำเป็นเท่านั้น

3. เบื้องหลังความไว: พลังของ gRPC และ Bi-directional Stream
ในเวอร์ชันล่าสุด (Next-Gen) RAMEN ไม่ได้แค่ส่ง Push ธรรมดา แต่ใช้เทคโนโลยี gRPC
- เปรียบเหมือนการเปลี่ยนจากวิทยุสื่อสาร (ที่ต้องผลัดกันพูด กดปุ่มแล้วรอ) มาเป็น สายโทรศัพท์ดิจิทัล ที่คุยสวนกันได้ตลอดเวลา
- Bi-directional: ท่อเดียวจบ! Server ส่งพิกัดลงมา (Downstream) ส่วนมือถือก็ส่งสัญญาณยืนยัน (Ack) กลับขึ้นไป (Upstream) ได้ในท่อเดียวกันทันที ไม่ต้องเปิด Connection ใหม่
4. Fireball สมองกลผู้คัดกรอง
ความเจ๋งอีกอย่างคือ ไม่ใช่ทุกการขยับจะถูกส่งมาที่มือถือเราครับ ในระบบ RAMEN จะมีบริการชื่อ Fireball คอยเป็นยามเฝ้าประตู
- มันจะเช็คว่า ตำแหน่งใหม่ กับ ตำแหน่งเก่า ต่างกันเยอะไหม?
- ถ้าขยับแค่นิดเดียว (เช่น GPS แกว่ง) Fireball จะตัดทิ้ง ไม่ส่งไปกวนมือถือเรา
- ช่วยประหยัดเน็ตผู้ใช้ และลดขยะข้อมูลในระบบ

สรุป
RAMEN สอนให้เรารู้ว่า การทำ Real-time App ระดับโลก ไม่ใช่แค่การใช้ WebSocket แล้วจบ แต่ต้องคิดถึง
- Battery Efficiency: เลี่ยง Polling ให้ได้มากที่สุด
- Payload Size: ส่งเฉพาะสิ่งที่จำเป็น (ผ่านการกรอง)
- Reliability: ระบบต้องจัดการเรื่อง "เน็ตหลุด" ได้ (At-least-once delivery)
ใครกำลังปวดหัวกับการทำระบบ Real-time Notification หรือ Chat ลองศึกษา Architecture ของ RAMEN ดูครับ เป็น Case Study ที่ดีมากๆ!
👇 ใครเคยใช้ gRPC ทำโปรเจกต์จริงแล้วบ้าง? ยากง่ายยังไงมาแชร์กันครับ!
#SoftwareEngineering #SystemDesign #UberEngineering #RAMEN #gRPC #RealTime #Developer #SandwichedDeveloper


