Load Balancer คืออะไร: กระจายงานให้ระบบรับโหลดได้มากขึ้นและไม่ล่มง่าย

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

Stateless: ทำไมการออกแบบไร้สถานะถึงสเกลง่ายกว่า
เมื่อระบบเก็บข้อมูลผู้ใช้ไว้ในเครื่องที่ให้บริการ การเพิ่มเครื่องหรือย้ายงานจะยุ่งยาก การออกแบบแบบ Stateless แยกสถานะออกไปเก็บที่ส่วนกลาง ทำให้กระจายงานและขยายระบบได้ง่ายขึ้นมาก

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

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

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