06Jul, 2023
Language blog :
Thai
Share blog : 
06 July, 2023
Thai

Load balance สำหรับ app ที่มี traffic เยอะ

By

3 mins read
Load balance สำหรับ app ที่มี traffic เยอะ

เชื่อว่าหลายๆคนคงเคยเจอปัญหา server ไม่สามารถรองรับการใช้งานของ user จริงได้ ไม่ว่าจะด้วยจาก มี traffic เข้ามาเยอะเกินไป, server จัดการ load ไม่ทัน ซึ่งส่วนใหญ่เราก็จะแก้ปัญหากันเบื้องต้นด้วยการ optimization แต่อย่างไรก็ดีต่อให้เรา optimize แอพพลิเคชั่นเราดีแค่ไหน มันก็จะมี limit ของ load อยู่ดี ดังนั้น Load Balancer จึงเข้ามามีส่วนสำคัญในการช่วยแก้ไขปัญหาดังกล่าว 

 

Load Balancer คือ ระบบที่ช่วยเรากระจาย request หรือ load จาก user ไปยังเครื่อง server หรือ service โดยที่ไม่จำเป็นต้องซื้อเครื่องที่ Spec สูงมากๆ ซึ่งมีราคาแพงมาเปลี่ยนแทนเครื่องเดิม แต่สามารถใช้เครื่องที่ Spec เท่าๆกันหลายเครื่อง มาทำงานร่วมกันแทน หรือเราจะทำการ step scaling (เพิ่ม spec)เครื่อง server ของเรา ก็ยังทำได้

 

load balance





ข้อดีของ Load Balancer

1. เพิ่มประสิทธิภาพให้ระบบแอปพลิเคชัน ในกรณีที่ต้องการรองรับการใช้งานของ user ที่มีจำนวนมากขึ้น เราสามารถที่จะเพิ่มจำนวนของ application service เช่น api service หรือ micro service ต่างๆ โดยการเพิ่มจำนวนของ server และกำหนด Algorithms สำหรับจัดการ traffic เช่น ถ้า in-traffic ถึงตามจำนวนที่เราตั้งไว้ให้ทำการเพิ่มจำนวน server อัตโนมัติ เพื่อทำให้การใช้งานของ user ให้สอดคล้องกับ resource ของ server นั้นๆ ได้

 

2. ทำให้แอปพลิเคชัน มี High Availability (HA) มากขึ้น โดยปกติ load balancer ที่ผู้ให้บริการ cloud จะมีระบบ health checker ไว้สำหรับการตรวจสอบว่า service ที่ load balancer ดูแลอยู่ทำงานได้อย่างปกติหรือไม่ และถ้า health checker พบว่ามี service ไหนพังมันก็จะทำการ หยุดส่ง load และ restart service ให้เราอัตโนมัติ ซึ่งทำให้ application สามารถให้บริการและใช้งานได้อย่างต่อเนื่อง



3. ช่วยเพิ่มความเร็วของ แอปพลิเคชัน หรือ service เนื่องจาก load balancer ทำการกระจาย traffic ของ user ไปยัง แอพพลิเคชั่น ที่ทำงานอยู่บน server หลายๆ เครื่อง ทำให้การใช้งานของ user ไม่ต้องรอคิวหรือรอการ process ข้อมูลที่ต้องใช้เวลานานเหมือนกับ application ที่ทำงานอยู่บน server เครื่องเดียวที่มี resource อยู่อย่างจำกัดทั้ง CPU, Memory และ Harddisk ทำให้การใช้งานของ user เร็วขึ้น เช่น สามารถโหลดข้อมูลรูปภาพจากเว็ปได้เร็วขึ้น การเข้าถึงข้อมูลของ application ได้เร็วขึ้น เป็นต้น

 

 

ตัวอย่างการตั้งค่า load balancer บน AWS ECS

 

ก่อนอื่นมาทำความรู้จัก ECS กันก่อน Amazon ECS คือบริการจัดประสานคอนเทนเนอร์ที่มีการจัดการเต็มรูปแบบ และปรับขนาดแอปพลิเคชันที่มีคอนเทนเนอร์ได้อย่างง่าย หรือก็คือ ระบบที่ช่วยเราจัดการ container แบบครบวงจรนั้นเอง และแน่นอน ECS ก็มี load balancer มาให้เราใช้งานกันด้วย

 

load balance

 

ในบทความนี้จะไม่ได้แสดงวิธีการสร้าง service บน ECS แต่จะแสดงเฉพาะส่วน load balancer เท่านั้น ถ้าหากสนใจเรื่อง ECS สามารถรอติดตาม blog ใหม่ๆของเราได้เลย

 

1. เมื่อเราสร้าง ECS Cluster เรียบร้อยแล้ว ในส่วนของ service เราจะต้องเลือก task หรือ container มารันบน service ได้

 

load balance

ECS Cluster



load balance

เลือก task ที่ต้องการรันใน service




2. ในส่วน desired task คือจำนวน task น้อยสุดที่เราต้องการให้ service นี้รันอยู่ตลอดเวลา หรือก็คือ standby tasks นั่นเอง 

load balance

เลือกจำนวน tasks ที่ต้องการ




3. ส่วนของ auto scaling พระเอกของเราในวันนี้ 

load balance



คำอธิบายในแต่ละหัวข้อ


1. Health check grace period : เวลาที่ health check จะทำงานเป็นทุกๆกี่วินาที

2. Minimum number of tasks : จำนวน tasks น้อยสุดของ load balancer ส่วนนี้ถ้าเราใส่ตัวเลขไม่เท่ากับ desired task ตัว auto scaling จะปรับจำนวน tasks ตาม Minimum number of tasks

3. Maximum number of tasks : จำนวน tasks สูงสุด ที่ auto scaling สามารถ scaling ได้

4.  Scaling policy
- Target tracking: เพิ่มจำนวน tasks ตาม policy ที่เรากำหนด

- Step scaling:  เพิ่มจำนวน tasks ตาม step ได้ แต่เราจะต้องไปสร้าง alarm policy ที่ cloudwatch ก่อน

 

เราสามารถลองปรับการตั้งค่า auto scaling ได้ตามการใช้งานจริงของแอพพลิเคชั่นเราได้เลย ซึ่งแต่ละแอพพลิเคชั่นก็จะมีการตั้งค่าที่ไม่เหมือนกันขึ้นอยู่กับประเภท, การใช้งานจริงนั่นเอง




Written by
Kant
Kant

Subscribe to follow product news, latest in technology, solutions, and updates

- More than 120,000 people/day visit to read our blogs

Other articles for you

13
July, 2024
JS class syntax
13 July, 2024
JS class syntax
เชื่อว่าหลายๆคนที่เขียน javascript กันมา คงต้องเคยสงสัยกันบ้าง ว่า class ที่อยู่ใน js เนี่ย มันคืออะไร แล้วมันมีหน้าที่ต่างกับการประกาศ function อย่างไร? เรามารู้จักกับ class ให้มากขึ้นกันดีกว่า class เปรียบเสมือนกับ blueprint หรือแบบพิมพ์เขียว ที่สามารถนำไปสร้างเป็นสิ่งของ( object ) ตาม blueprint หรือแบบพิมพ์เขียว( class ) นั้นๆได้ โดยภายใน class

By

4 mins read
Thai
13
July, 2024
15 สิ่งที่ทุกธุรกิจต้องรู้เกี่ยวกับ 5G
13 July, 2024
15 สิ่งที่ทุกธุรกิจต้องรู้เกี่ยวกับ 5G
ผู้ให้บริการเครือข่ายในสหรัฐฯ ได้เปิดตัว 5G ในหลายรูปแบบ และเช่นเดียวกับผู้ให้บริการเครือข่ายในยุโรปหลายราย แต่… 5G มันคืออะไร และทำไมเราต้องให้ความสนใจ บทความนี้ได้รวบรวม 15 สิ่งที่ทุกธุรกิจต้องรู้เกี่ยวกับ 5G เพราะเราปฏิเสธไม่ได้เลยว่ามันกำลังจะถูกใช้งานอย่างกว้างขวางขึ้น 1. 5G หรือ Fifth-Generation คือยุคใหม่ของเทคโนโลยีเครือข่ายไร้สายที่จะมาแทนที่ระบบ 4G ที่เราใช้อยู่ในปัจจุบัน ซึ่งมันไม่ได้ถูกจำกัดแค่มือถือเท่านั้น แต่รวมถึงอุปกรณ์ทุกชนิดที่เชื่อมต่ออินเตอร์เน็ตได้ 2. 5G คือการพัฒนา 3 ส่วนที่สำคัญที่จะนำมาสู่การเชื่อมต่ออุปกรณ์ไร้สายต่างๆ ขยายช่องสัญญาณขนาดใหญ่ขึ้นเพื่อเพิ่มความเร็วในการเชื่อมต่อ การตอบสนองที่รวดเร็วขึ้นในระยะเวลาที่น้อยลง ความสามารถในการเชื่อมต่ออุปกรณ์มากกว่า 1 ในเวลาเดียวกัน 3. สัญญาณ 5G นั้นแตกต่างจากระบบ

By

4 mins read
Thai
13
July, 2024
จัดการ Array ด้วย Javascript (Clone Deep)
13 July, 2024
จัดการ Array ด้วย Javascript (Clone Deep)
ในปัจจุบันนี้ ปฏิเสธไม่ได้เลยว่าภาษาที่ถูกใช้ในการเขียนเว็บต่าง ๆ นั้น คงหนีไม่พ้นภาษา Javascript ซึ่งเป็นภาษาที่ถูกนำไปพัฒนาเป็น framework หรือ library ต่าง ๆ มากมาย ผู้พัฒนาหลายคนก็มีรูปแบบการเขียนภาษา Javascript ที่แตกต่างกัน เราเลยมีแนวทางการเขียนที่หลากหลาย มาแบ่งปันเพื่อน ๆ เกี่ยวกับการจัดการ Array ด้วยภาษา Javascript กัน เรามาดูตัวอย่างกันเลยดีกว่า โดยปกติแล้วการ copy ค่าจาก value type ธรรมดา สามารถเขียนได้ดังนี้

By

4 mins read
Thai

Let’s build digital products that are
simply awesome !

We will get back to you within 24 hours!Go to contact us
Please tell us your ideas.
- Senna Labsmake it happy
Contact ball
Contact us bg 2
Contact us bg 4
Contact us bg 1
Ball leftBall rightBall leftBall right
Sennalabs gray logo28/11 Soi Ruamrudee, Lumphini, Pathumwan, Bangkok 10330+66 62 389 4599hello@sennalabs.com© 2022 Senna Labs Co., Ltd.All rights reserved.