Network
น้องๆ เคยไหม? เล่นเกมอยู่ดีๆ แลคซะงั้น! หรือโหลดไฟล์งานสำคัญ แต่รอชาติกว่าจะเสร็จ! นั่นแหละ ปัญหาเรื่อง Network Capacity ไม่พอ!
Network Capacity Planning Guide (ขอเรียกว่า NCP Guide ละกันนะ) คือการวางแผน "ความจุ" ของ Network เรา ให้มันพอดีกับ "ความต้องการ" ของเราในอนาคต พูดง่ายๆ คือ เตรียมตัวรับมือกับ Traffic ที่จะมากขึ้นนั่นเอง
ทำไมมันถึงสำคัญ? สมัยผมทำร้านเน็ต SiamCafe เมื่อ 20 กว่าปีก่อน สำคัญสุดๆ! เพราะถ้า Network เราไม่ดี ลูกค้าก็หนีไปร้านอื่นหมด! เหมือนร้านอาหาร ถ้าอาหารไม่อร่อย ใครจะอยากกินล่ะจริงไหม?
ลองนึกภาพ ร้านอินเทอร์เน็ตคาเฟ่สมัยก่อน เครื่องลูก 20 เครื่อง ทุกคนพร้อมใจกันโหลดบิตพร้อมกัน...Router เก่าๆ มีหวังค้าง! การวางแผนความจุช่วยให้เรา:
ถ้าไม่วางแผน Network Capacity จะเกิดอะไรขึ้น? นอกจากลูกค้าหนีหายแล้ว ยังมีผลกระทบอื่นๆ ตามมาอีกเพียบ:
เชื่อพี่เถอะ วางแผนไว้แต่เนิ่นๆ คุ้มกว่าเยอะ!
Bandwidth เปรียบเสมือน "ขนาดท่อ" ส่งข้อมูล ยิ่งท่อใหญ่ ข้อมูลก็ไหลได้เยอะและเร็วขึ้น หน่วยวัดคือ bits per second (bps) หรือที่เราคุ้นเคยกันดีในหน่วย Mbps (Megabits per second) หรือ Gbps (Gigabits per second)
สมัยก่อนเน็ตบ้าน 56k นี่ถือว่าหรูแล้วนะ! ตอนนี้ 1 Gbps ยังรู้สึกว่าไม่พอเลย! โลกมันเปลี่ยนไปเยอะจริงๆ
Throughput คือ "ปริมาณข้อมูลจริง" ที่ส่งผ่าน Network ได้สำเร็จ ในช่วงเวลาหนึ่งๆ มันมักจะน้อยกว่า Bandwidth เสมอ เพราะมีปัจจัยอื่นๆ มาเกี่ยวข้อง เช่น Latency, Packet Loss, และ Overhead ต่างๆ
ลองนึกภาพท่อส่งน้ำ ถึงท่อจะใหญ่ขนาดไหน ถ้าน้ำรั่วระหว่างทาง ปริมาณน้ำที่ปลายทางก็ย่อมน้อยกว่าที่ต้นทาง
# ตัวอย่างการวัด Throughput ด้วย iperf3
iperf3 -c [Server IP] -t 10 # รันบน Client
iperf3 -s # รันบน Server
Code นี้เป็นการใช้ iperf3 ในการวัด Throughput ระหว่าง Client และ Server นะน้องๆ
Latency คือ "เวลา" ที่ใช้ในการส่งข้อมูลจากจุดหนึ่งไปยังอีกจุดหนึ่ง ยิ่ง Latency สูง ยิ่งทำให้รู้สึกว่า Network "หน่วง" หรือ "lag"
สมัยก่อน Ping ไป Google นี่ 200-300 ms ถือว่าปกติ เดี๋ยวนี้ต้องต่ำกว่า 50 ms ถึงจะเล่นเกมได้ลื่นๆ
การวางแผน Network Capacity ไม่ใช่เรื่องยากอย่างที่คิด เริ่มจากทำความเข้าใจ Network ของตัวเองก่อน
เหมือนหมอวินิจฉัยโรค ต้องรู้ก่อนว่าคนไข้เป็นอะไร ถึงจะรักษาได้ถูกจุด
เริ่มต้นด้วยการสำรวจ Network ปัจจุบันของเราก่อน ว่ามีอะไรบ้าง Router, Switch, Server, Client แต่ละตัวมี Spec อะไร Bandwidth เท่าไหร่
ใช้ Tools ต่างๆ ในการ Monitor Traffic เช่น:
สมัยก่อนพี่ใช้ MRTG ในการ Monitor Traffic Router แต่ละ Port เดี๋ยวนี้มี Tools ดีๆ ให้ใช้เยอะแยะเลย
# ตัวอย่างการใช้ nload
nload eth0 # Monitor Traffic ของ Interface eth0
หลังจากรู้ Current Capacity แล้ว ก็มาถึงขั้นตอนการ "คาดการณ์" ว่าอนาคต Network เราจะต้องรองรับอะไรบ้าง
คำถามที่ต้องถามตัวเอง:
สมัยผมทำร้านเน็ต ต้องคอยดูว่าเกมใหม่ๆ ที่กำลังฮิต ใช้ Bandwidth เยอะแค่ไหน จะได้เตรียม Router ให้พร้อม
เมื่อรู้ความต้องการในอนาคตแล้ว ก็วางแผน "อัพเกรด" Network Infrastructure ให้พร้อม
อาจจะต้องเปลี่ยน Router, Switch, เพิ่ม Bandwidth Internet หรือแม้แต่ปรับปรุง Network Design
อย่าลืมคำนึงถึง Budget และ Timeline ด้วยนะน้องๆ
สำคัญมากๆ คือต้อง Test และ Validate Network ที่ Upgrade แล้ว ว่าทำงานได้ตามที่คาดหวัง
ลองเข้าไปดู SiamCafe Blog อาจจะมีข้อมูลที่ช่วยในการตัดสินใจได้นะ
นอกจาก NCP Guide แล้ว ยังมีทางเลือกอื่นๆ ในการจัดการ Network Capacity อีกไหม?
แน่นอน! แต่ละวิธีก็มีข้อดีข้อเสียแตกต่างกันไป
| ทางเลือก | ข้อดี | ข้อเสีย |
|---|---|---|
| Over-Provisioning (เผื่อเหลือเผื่อขาด) | ง่าย, แก้ปัญหาได้ชัวร์ | สิ้นเปลือง, อาจจะไม่คุ้มค่า |
| Traffic Shaping/QoS (จัดลำดับความสำคัญ Traffic) | จัดการ Traffic ได้ดี, ควบคุม Bandwidth ได้ | ซับซ้อน, ต้องมีความรู้ด้าน Network พอสมควร |
| Load Balancing (กระจาย Traffic ไปยังหลายๆ Server) | เพิ่ม Availability, ลด Load บน Server | ต้องมี Server หลายตัว, Configuration ซับซ้อน |
| Network Optimization (ปรับแต่ง Network ให้มีประสิทธิภาพ) | ประหยัด, ไม่ต้องลงทุนเพิ่ม | ต้องมีความรู้ลึกซึ้ง, ใช้เวลา |
สมัยก่อนร้านเน็ตพี่ใช้วิธี Traffic Shaping ควบคู่ไปกับการ Upgrade Router เป็นประจำ ช่วยลดปัญหาแลคได้เยอะเลย
ลองดู SiamCafe Blog เกี่ยวกับ Network Optimization นะ อาจจะมีเทคนิคที่น้องๆ เอาไปปรับใช้ได้
เอาล่ะน้องๆ มาถึงส่วนที่สำคัญที่สุด คือเคล็ดลับที่พี่บอมสั่งสมมาตลอด 28+ ปี ในวงการ IT ตั้งแต่สมัยร้านเน็ต SiamCafe โน่น สมัยนั้นเน็ตยังเต่าคลานอยู่เลย การวางแผน Network Capacity เลยสำคัญมากๆ ไม่งั้นร้านเจ๊ง!
จำไว้ว่าการวางแผน Network Capacity ไม่ใช่เรื่อง One-time fix นะ มันคือกระบวนการต่อเนื่อง ต้องปรับปรุงและเรียนรู้ไปเรื่อยๆ ตามการเปลี่ยนแปลงของเทคโนโลยีและพฤติกรรมผู้ใช้งาน
อย่ามองแค่ Router ตัวเดียว หรือ Switch ตัวเดียว ต้องมองตั้งแต่เครื่องลูกข่ายยัน Server ปลายทางเลย สมัยผมทำร้านเน็ต เคยเจอเคสที่ Router แรงๆ แต่สาย LAN Cat5e เก่าๆ ก็ทำให้เน็ตอืดได้เหมือนกัน
นึกภาพว่า Network คือท่อน้ำ ถ้าท่อช่วงแรกใหญ่ แต่ช่วงหลังเล็ก น้ำก็ไหลได้แค่ช่วงหลังเล็กๆ นั่นแหละ
การ Monitor Network อย่างสม่ำเสมอเป็นเรื่องสำคัญมาก ต้องรู้ว่า Traffic ช่วงไหนเยอะ ช่วงไหนน้อย Application ไหนกิน Bandwidth เยอะที่สุด สมัยก่อนผมใช้โปรแกรมง่ายๆ อย่าง MRTG หรือ Cacti ก็พอแล้ว เดี๋ยวนี้มีเครื่องมือดีๆ เยอะแยะ เลือกใช้ตามความเหมาะสม
# ตัวอย่าง command line สำหรับ check bandwidth usage บน Linux
ifconfig eth0 | grep "RX bytes"
Command นี้จะแสดงปริมาณข้อมูลที่รับส่งผ่าน Network Interface eth0 (หรือ interface อื่นๆ ของน้อง) ช่วยให้เห็นภาพรวมการใช้งานเบื้องต้น
ก่อนจะ Deploy อะไรใหม่ๆ ควร Simulate สถานการณ์จริงก่อนเสมอ เช่น ถ้าจะเปิดให้บริการเกมใหม่ ก็ลองจำลอง Traffic ที่จะเกิดขึ้น แล้วดูว่า Network เราจะรับไหวไหม สมัยก่อนผมใช้โปรแกรมจำลอง Traffic ง่ายๆ เขียน Script เองก็มี
การ Simulation ช่วยให้เราเห็นปัญหาที่อาจเกิดขึ้นจริง ก่อนที่จะเกิดความเสียหายกับผู้ใช้งาน
การเผื่อ Capacity ไว้บ้างเป็นเรื่องที่ดี แต่ก็ต้องระวังอย่าเผื่อมากเกินไป เพราะจะทำให้เสียเงินโดยใช่เหตุ ต้อง Balance ระหว่าง Performance กับ Cost ให้ดี
ผมแนะนำให้เผื่อ Capacity ไว้ประมาณ 20-30% กำลังดี ไม่มากเกินไป ไม่น้อยเกินไป
Bandwidth ไม่ใช่ทุกอย่าง! Latency, Packet Loss, หรือแม้แต่ CPU Load ของ Router ก็มีผลต่อ Performance ทั้งนั้น ต้องวิเคราะห์ให้ละเอียด อย่ามองข้ามปัจจัยอื่นๆ
มีให้เลือกเยอะมาก ตั้งแต่ Open Source อย่าง Zabbix, Nagios ไปจนถึง Commercial อย่าง SolarWinds เลือกที่เหมาะกับ Budget และความต้องการของน้องๆ
ถ้า Traffic เกิน 80% ของ Capacity ที่มีอยู่เป็นประจำ ก็ถึงเวลาต้อง Upgrade แล้ว หรือถ้า User บ่นว่าเน็ตช้าบ่อยๆ ก็ควรพิจารณา Upgrade ได้เลย
VLAN ช่วยแบ่ง Network ออกเป็นส่วนๆ ลด Broadcast Traffic และเพิ่ม Security ทำให้ Network โดยรวมทำงานได้มีประสิทธิภาพมากขึ้น
การวางแผน Network Capacity เป็นเรื่องที่ต้องใส่ใจรายละเอียด ต้องเข้าใจทั้ง Network Infrastructure และ Application ที่ใช้งาน ต้อง Monitor อย่างสม่ำเสมอ และปรับปรุงแผนอยู่เสมอ
อย่าลืมว่า Network ที่ดี คือ Network ที่ User ไม่รู้สึกว่ามีอยู่จริง เพราะมันทำงานได้อย่างราบรื่น ไม่มีปัญหาให้กวนใจ
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะครับ ถ้ามีคำถามอะไรเพิ่มเติม ถามมาได้เลย iCafeForex ยินดีให้คำปรึกษาเสมอ และอย่าลืมติดตาม SiamCafe Blog สำหรับบทความ IT ดีๆ อีกมากมาย