หนึ่งในเรื่องพื้นฐานที่ควรต้องรู้และเข้าใจคือ Load Balancer
หรือการกระจายงานที่เข้ามาไปยัง server หรือ resource ต่าง ๆ
เพื่อให้ระบบทำงานอย่างมีประสิทธิภาพ
รวมทั้งต้องทำให้มั่นใจด้วยว่า ทำการกระจายงานไปยัง server ตามที่ต้องการ
ไปเจอ web อธิบายเรื่อง Load Balancer ด้วยรูปการ์ตูนจาก Cloud for Geeks
เห็นว่าน่าสนใจ จึงนำมาฝาก
เริ่มด้วยการทำงานแบบ Client-Server
โดยถ้ามีผู้ใช้งานมาเพียง 2 คน จะไม่ทำให้เกิดปัญหา
แต่เมื่อผู้ใช้งานมีจำนวนมาก ๆ แล้ว แน่นอนก่อให้เกิดปัญหาต่อระบบ
เช่นทำงานช้าลง ไม่สามารถรองรับการใช้งานได้
การแก้ไขปัญหามีหลายแนวทาง เช่น
- การขยายเครื่อง ด้วยการเพิ่ม resource ต่าง ๆ เช่น CPU, Memory และ Network เป็นต้น
- การเพิ่มเครื่อง server เข้ามาช่วยกันทำงาน
โดยวิธีการที่ใช้งานบ่อย ๆ คือ การเพิ่มเครื่อง serverเข้ามาช่วยกันทำงาน
ทั้งลดปัญหาเรื่อง Single Point of Failure (SPoF)
ทั้งลดปัญหาเรื่อง downtime
ทั้งช่วยเพิ่มประสิทธฺภาพการทำงานของระบบ
ทั้งยังช่วยป้องกันการโจมตีระบบ
จากนั้นจึงต้องมีสิ่งที่เข้ามาช่วยกระจายงานจาก client ไปยัง server ต่าง ๆ
อาจจะมองว่าเป็นการแก้ไขปัญหา ด้วยการเพิ่มปัญหามาอีกตัว !!
นั่นก็คือ Load Balancer นั่นเอง
ต่อจากแนวคิดพื้นฐานของ Load Balancer นั้นยังมีแนวคิดอื่น ๆ เพิ่มเข้ามาอีก
ยกตัวอย่างเช่น Health Check ของ server หรือ service
เพื่อให้ทาง Load Balancer ทำการตรวจสอบว่าแต่ละ server สามารถใช้งานได้หรือไม่
ถ้าทำงานไม่ได้ จะทำการตัดออกจากการกระจายงานนั่นเอง
มิเช่นนั้น Load Balancer ก็จะกระจายงานเข้ามายัง server ที่ไม่พร้อมทำงาน
ก็จะส่งผลเสียต่อระบบอย่างมาก
ต่อมาคือ เทคนิคในการกระจายงานของ Load Balancer
ซึ่งมีหลายเทคนิคให้เลือกใช้งาน ตามความต้องการหรือตามแต่ละ usecase
มีดังนี้
- Random selection
- Round Robin
- Weighted Round Robin Method
- Least connection
- Least response time
- Source IP hashing
Reference Websites
https://codeburst.io/system-design-basics-load-balancer-101-adc4f602d08f