Stateless: ทำไมการออกแบบไร้สถานะถึงสเกลง่ายกว่า

เมื่อระบบเก็บข้อมูลผู้ใช้ไว้ในเครื่องที่ให้บริการ การเพิ่มเครื่องหรือย้ายงานจะยุ่งยาก การออกแบบแบบ Stateless แยกสถานะออกไปเก็บที่ส่วนกลาง ทำให้กระจายงานและขยายระบบได้ง่ายขึ้นมาก
Stateful คือเมื่อเครื่องที่ให้บริการเก็บข้อมูลของผู้ใช้ไว้ในตัวเอง เช่น จำว่าใครล็อกอินอยู่ในหน่วยความจำของเครื่องนั้น ปัญหาคือถ้าคำขอถัดไปของผู้ใช้ถูกส่งไปอีกเครื่อง เครื่องใหม่จะไม่รู้จักเขา หรือถ้าเครื่องนั้นล่ม ข้อมูลก็หาย Stateless คือการออกแบบให้เครื่องที่ให้บริการไม่เก็บสถานะไว้เอง แต่ดึงจากที่เก็บส่วนกลางทุกครั้ง
ทำไม Stateless ถึงสเกลและทนทานกว่า
เมื่อเครื่องไม่เก็บสถานะ คำขอของผู้ใช้จะถูกส่งไปเครื่องไหนก็ได้ที่ว่าง ทำให้เพิ่มเครื่องเพื่อรับโหลดได้ทันทีและกระจายงานได้ลื่น ถ้าเครื่องใดล่ม คำขอก็ย้ายไปเครื่องอื่นโดยผู้ใช้ไม่รู้สึก นี่คือเหตุผลที่ระบบที่ออกแบบมาให้ขยายง่าย มักเป็น Stateless และเก็บสถานะ เช่น เซสชันหรือตะกร้าสินค้า ไว้ในที่เก็บส่วนกลางที่ทุกเครื่องเข้าถึงได้
- เก็บเซสชันและข้อมูลชั่วคราวไว้ในที่เก็บส่วนกลาง ไม่ใช่ในหน่วยความจำเครื่องเดียว
- ออกแบบให้ทุกเครื่องทำงานแทนกันได้ เพื่อให้เพิ่มหรือถอดเครื่องได้อิสระ
- Stateless ทำให้การปล่อยของแบบไม่มีดาวน์ไทม์ทำได้ง่ายขึ้น
การออกแบบแบบ Stateless เป็นรากฐานที่ทำให้ระบบเติบโตไปกับธุรกิจได้โดยไม่ต้องรื้อใหญ่ ผู้บริหารไม่ต้องลงรายละเอียดเทคนิค แต่การรู้ว่าระบบที่ขยายง่ายมักออกแบบมาแบบนี้ ช่วยให้ประเมินได้ว่าระบบที่กำลังจะลงทุน วางรากฐานสำหรับการเติบโตไว้ดีพอหรือไม่
บริการที่เกี่ยวข้อง
รับพัฒนาเว็บแอปพลิเคชัน
สร้างเว็บแอปที่รองรับการเติบโตและเชื่อมกับระบบอื่นได้
WhaleScope
ดูโครงสร้างตลาดของทุกหมวดธุรกิจไทย บน WhaleScope
รายชื่อบริษัท ผู้เล่นรายใหญ่ และอัตราคงอยู่ของแต่ละหมวด — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล
อ่านต่อ

Load Balancer คืออะไร: กระจายงานให้ระบบรับโหลดได้มากขึ้นและไม่ล่มง่าย
เมื่อเครื่องเดียวรับไม่ไหว คำตอบไม่ใช่ซื้อเครื่องใหญ่ขึ้นเสมอไป แต่คือกระจายงานไปหลายเครื่องด้วย Load Balancer ซึ่งช่วยทั้งเรื่องรองรับคนมากขึ้นและทนต่อการที่เครื่องหนึ่งล่ม

Database Sharding: แบ่งฐานข้อมูลเมื่อใหญ่เกินเครื่องเดียว
เมื่อข้อมูลใหญ่จนเครื่องเดียวรับไม่ไหว การเพิ่มเครื่องให้แรงขึ้นมีเพดาน Sharding คือการแบ่งข้อมูลออกไปหลายเครื่อง ช่วยให้ขยายต่อได้ แต่ก็เพิ่มความซับซ้อนที่ต้องแลก

Message Queue: ทำไมระบบใหญ่ถึงใช้คิวแทนการเรียกตรง
เมื่อระบบ A เรียกระบบ B ตรง ๆ ถ้า B ล่มหรือช้า A ก็พังตาม Message Queue คั่นกลางด้วยคิวงาน ทำให้ระบบทนทานขึ้น รับโหลดพุ่งได้ และแยกส่วนกันทำงานโดยไม่ล้มพร้อมกัน

Rate Limiting และ Backpressure: ปกป้องระบบเมื่อโหลดพุ่ง
เว็บล่มตอนแคมเปญใหญ่ ไม่ใช่เพราะคนเยอะเกินไปเสมอไป แต่เพราะระบบไม่มีกลไกชะลอเมื่อโหลดพุ่ง Rate Limiting และ Backpressure คือวิธีให้ระบบยังยืนได้ แม้ในวันที่คนเข้ามากที่สุด
