เราแก้ปัญหาข้อผิดพลาด 429 ด้วย Kubernetes และประหยัดค่าใช้จ่ายเซิร์ฟเวอร์ 30%
เมื่อเดือนที่แล้วทีมของเราเกือบจะล่มสลาย:13% ของการร้องขอการแก้ไขที่อยู่ของผู้ใช้รายงานโดยตรง 429 ถูกปฏิเสธหลังจากตรวจสอบเบื้องหลังครึ่งวันพบว่ากฎการ จํากัด ปัจจุบันที่จัดสรรแยกต่างหากให้กับแต่ละไมโครเซอร์วิสตายเกินไปปริมาณการจราจรของโมดูลสอบถามโลจิสติกส์เพิ่มขึ้น 3 เท่าทรัพยากรที่ว่างเปล่าอื่น ๆ ไม่สามารถใช้งานได้เลย
ก่อนหน้านี้เรามักจะคิดว่า Kubernetes เป็นส่วนประกอบที่ซับซ้อนที่ใช้โดย บริษัท ขนาดใหญ่เท่านั้น จนกระทั่งก้าวบนหลุมนี้เราถูกบังคับให้ออนไลน์ ใช้เวลาไม่ถึงหนึ่งสัปดาห์และผลลัพธ์ที่ดีกว่าที่เราคาดไว้
เกตเวย์ Kubernetes คืออะไร
พูดง่ายๆคือทางเข้าการจราจรแบบครบวงจรสําหรับคลัสเตอร์ Kubernetes ทั้งหมดของคุณ คําขอภายนอกทั้งหมดจะมาถึงที่นี่ก่อนที่จะส่งต่อไปยังบริการหลังการทํางานที่สอดคล้องกัน อินสแตนซ์เดียวของเวอร์ชันโอเพนซอร์สที่เราใช้สามารถรับการร้องขอ 12,000 ต่อวินาทีทีมงานขนาดเล็กไม่จําเป็นต้องยุ่งเหยิงกับคอขวดประสิทธิภาพ
ประโยชน์ 3 ประการที่เราได้รับจริงๆ

ประการแรกที่ใช้งานง่ายที่สุด: กฎการ จํากัด ปัจจุบันในที่สุดก็ไม่ได้ใช้บริการแต่ละรายการแยกต่างหากก่อนหน้านี้เราได้รับการกระตุ้นให้เปลี่ยนเกณฑ์การ จํากัด ปัจจุบันของเจ็ดหรือแปดไมโครเซอร์วิสและมีปัญหาเกี่ยวกับการเปลี่ยนหนึ่ง ตอนนี้เราทําการ จํากัด ปัจจุบันแบบไดนามิกโดยตรงในระดับเกตเวย์ทรัพยากรเซิร์ฟเวอร์ที่ว่างเปล่าสามารถเอียงไปยังโมดูลที่มีปริมาณการจราจรสูงโดยอัตโนมัติ คริสต์มาสนี้ส่งเสริมข้อผิดพลาด 429 ของเราลดลงโดยตรงเป็น 0
ประการที่สองคือการประหยัดต้นทุนก่อนหน้านี้เพื่อรับมูลค่าสูงสุดเราได้จัดเตรียมเซิร์ฟเวอร์ซ้ําซ้อนอีก 2 เครื่องให้กับบริการหลักทั้ง 3 เครื่องโดยมีอัตราการใช้ทรัพยากรเพียง 20% ในเวลาส่วนใหญ่ ตอนนี้เกตเวย์สามารถปรับสมดุลโหลดโดยอัตโนมัติเราได้ปรับขนาดเซิร์ฟเวอร์ 6 เครื่องโดยตรงและลดค่าใช้จ่ายของระบบคลาวด์รายเดือนลง 30%
ประการที่สามคือการไม่ให้แบ็คเอนด์เปลี่ยนตรรกะทั่วไปเหล่านี้ซ้ํา ๆ ในโดเมนและการรับรองก่อนที่จะเปิดตัวบริการใหม่ ๆ ทุกครั้ง ต้องเขียนโค้ดสําหรับการตรวจสอบ JWT แต่ตอนนี้มันจะทําได้โดยตรงกับกฎในระดับเกตเวย์ 3 คนของเราสามารถใช้เวลาเพิ่มเติมอย่างน้อยครึ่งวันต่อสัปดาห์ในการเขียนโค้ดธุรกิจ
อย่าเพิ่งฟังผลประโยชน์ เราเหยียบสองหลุมนี้อย่างมั่นคง
หลุมแรกเป็นค่าเริ่มต้นสําหรับการตั้งค่าการหมดเวลาสําหรับหลุมเกินไปในวันแรกของการเปิดตัวเราพบว่า 5% ของคําขอการวิเคราะห์ที่อยู่หมดเวลา หลังจากตรวจสอบครึ่งวันพบว่าเวลาหมดเวลาเริ่มต้นของเกตเวย์คือ 30 วินาที แต่บริการการวิเคราะห์ที่อยู่ของเราเองจะทํางานได้นานที่สุด 40 วินาที หลังจากเปลี่ยนกฎแล้วมันจะกลับมาทันที ต้องตรวจสอบเกณฑ์เวลาหมดเวลาทีละครั้งกับอินเทอร์เฟซธุรกิจของตัวเองก่อนที่จะเปิดตัว
หลุมที่สองคืออย่ากองคุณสมบัติทั้งหมดในตอนแรกตอนแรกเราต้องการเปิดฟังก์ชั่น ทั้ง , , WAF , และ ในครั้งเดียว ผลที่ได้คือการเขียนผิด ทําให้ ทางเข้าทั้งคลาสเตอร์ถูกตัดเป็นเวลา 20 นาที ต่อมาเราเปิดแค่ และ เท่านั้นก่อน วิ่ง 3 วันเสถียรแล้วค่อยๆเพิ่มฟังก์ชั่นอื่นๆ ก็ไม่มีปัญหาอีกแล้ว
ใช้มันหรือไม่? ( ?)เกณฑ์ที่เราให้การตัดสินนั้นง่ายมาก
สถานการณ์ที่เหมาะสม:

- จํานวนไมโครเซอร์วิสของคุณมีมากกว่าห้าและคุณต้องเปลี่ยนหลายสถานที่ทุกครั้งที่คุณเปลี่ยนการกําหนดค่าทั่วไป
- มักจะพบกับจุดสูงสุดของการจราจรและไม่สามารถจัดตารางทรัพยากรได้อย่างยืดหยุ่นระหว่างบริการที่แตกต่างกัน
- ทีมงานแบ็คเอนด์มีน้อยกว่า 5 คนและไม่ต้องการเสียเวลาในการเขียนตรรกะทั่วไปซ้ํา ๆ
สถานการณ์ที่ไม่น่ากลัว:
- คุณมี 2 ไมโครเซอร์วิสการจราจรที่มั่นคงตลอดทั้งปีตอนนี้ใช้ NGINX ส่งต่อไม่มีปัญหาเล็กน้อย
- ไม่มีใครในทีมงานเข้าใจพื้นฐานของ Kubernetes อย่าพยายามติดตามเทคโนโลยีใหม่ ๆ
2 คําแนะนําที่แท้จริงสําหรับทีมงานเล็ก ๆ ที่เริ่มต้นเป็นครั้งแรก
ไม่จําเป็นต้องพัวพันในการเลือกแบบทีมงานขนาดเล็กโดยตรงกับ API IX หรือ Kong เอกสารสนับสนุนทั้งหมดพบปัญหาในการค้นหาโดยทั่วไปมีวิธีแก้ปัญหาไม่ต้องซื้อรุ่นเชิงพาณิชย์ฟังก์ชั่นของรุ่นฟรีเพียงพอ
ตัด 10% ของการจราจรก่อนที่จะออนไลน์และทํางาน 24 ชั่วโมงเน้นไปที่ว่ามีเวลาเกินคําขอถูกสกัดกั้นโดยไม่ตั้งใจไม่มีปัญหาที่จะตัดเต็มรูปแบบอีกครั้งอย่านําการจราจรทั้งหมดผ่านทันทีที่ขึ้น
สุดท้ายด้วยคําถามที่ทุกคนมักจะถาม: ไม่มีใครศึกษาเกตเวย์เป็นพิเศษก่อน 3 ของเราใช้เวลา 2 วันในการติดตั้งเอกสารอย่างเป็นทางการจริงๆ ไม่ซับซ้อนอย่างที่คุณคิด
มีประโยชน์หรือไม่?