อ่านประมาณ 9 นาที
ระดับกลาง
หมวด: DevOps
อ้างอิง: Cloudflare Blog — The Cloudflare Blog, brought to you by EmDash
การย้ายเว็บที่มีผู้ใช้จำนวนมากไปยังระบบใหม่คืองานที่พลาดแล้วเห็นกันทั้งโลก บทความนี้ถอดบทเรียนจากการย้ายบล็อกที่มีทราฟฟิกสูง ตั้งแต่การทดสอบโหลดสามรูปแบบ การปล่อยทีละขั้น ไปจนถึงกลไกถอยกลับอัตโนมัติ
โจทย์: ย้ายระบบเนื้อหาโดยผู้อ่านต้องไม่รู้สึกอะไรเลย
ทีมงานตัดสินใจย้ายบล็อกจากระบบจัดการเนื้อหาเดิมมาสู่แพลตฟอร์มใหม่ที่ทำงานบนโครงสร้างพื้นฐานของตัวเอง เหตุผลนอกจากข้อจำกัดของระบบเดิมแล้ว ยังเป็นการทำตามหลักที่ว่าต้องใช้ผลิตภัณฑ์ของตัวเองในงานจริงก่อนส่งให้ลูกค้า และเป็นโอกาสปรับหน้าตาพร้อมเพิ่มฟีเจอร์ที่ผู้อ่านขอมานาน เช่น โหมดมืด
สถาปัตยกรรมที่ใช้ประกอบด้วยแอปพลิเคชันที่รันบนเอดจ์ ระบบแคชสองชั้นทั้งแคชระดับเครือข่ายและแคชออบเจ็กต์ที่สร้างบนที่เก็บคีย์และค่า และการเชื่อมต่อฐานข้อมูลผ่านตัวกลางที่ทำพูลการเชื่อมต่อให้ ผลของกลยุทธ์แคชคือเสิร์ฟไฟล์สแตติกจากแคชได้ 99.5% และเสิร์ฟคำขอทั้งหมดจากแคชได้ 70% ซึ่งลดภาระฐานข้อมูลและความหน่วงลงอย่างมีนัยสำคัญ
แผนภาพสถาปัตยกรรมระบบใหม่จากบทความต้นฉบับ
ทดสอบโหลดสามรูปแบบก่อนเปิดใช้
ก่อนเปิดใช้จริง ทีมรันการทดสอบโหลดสามสถานการณ์ที่ตอบคำถามคนละข้อ แบบแรกคือค่อย ๆ เพิ่มโหลดจนถึงสามเท่าของทราฟฟิกปกติ เพื่อดูว่าระบบรับการเติบโตตามธรรมชาติได้ไหม แบบที่สองคือเพิ่มจากศูนย์ไปจนระบบพังภายในสิบนาที เพื่อหาว่าจุดแตกหักอยู่ตรงไหน และแบบที่สามคือยิงทราฟฟิกกระชากทันที 7,000 คำขอต่อวินาทีเป็นเวลาหนึ่งนาที เพื่อจำลองกรณีที่เนื้อหาถูกแชร์เป็นวงกว้างกะทันหัน
เกณฑ์ผ่านที่ตั้งไว้ก็ชัดเจนไม่แพ้กัน คืออัตราคำขอที่ล้มเหลวต้องต่ำกว่า 0.01% ความหน่วงที่เปอร์เซ็นไทล์ 95 ต้องไม่เกิน 500 มิลลิวินาที และที่เปอร์เซ็นไทล์ 99 ต้องไม่เกิน 1,000 มิลลิวินาที การกำหนดเกณฑ์เป็นตัวเลขล่วงหน้าคือสิ่งที่ทำให้การทดสอบมีความหมาย แทนที่จะจบด้วยคำว่าดูเหมือนจะไหว
ปล่อยทีละขั้นพร้อมแผนถอยอัตโนมัติ
แทนที่จะสลับระบบทีเดียว ทีมวางตัวกลางไว้ด้านหน้าเพื่อกระจายทราฟฟิกอย่างมีเงื่อนไข โดยใช้คุกกี้กำหนดว่าผู้ใช้รายใดจะเห็นเวอร์ชันไหน และตั้งให้ถอยกลับไปใช้ระบบเดิมโดยอัตโนมัติเมื่อระบบใหม่ตอบข้อผิดพลาดระดับเซิร์ฟเวอร์ จากนั้นทยอยเปลี่ยนสัดส่วนจาก 1% ไป 5% ไป 15% แล้วจึง 100% ภายในหนึ่งวัน
รายละเอียดที่น่าสนใจคือการเชื่อมต่อระหว่างตัวกลางกับแอปใช้การผูกบริการเข้าหากันโดยตรง แทนที่จะเรียกผ่านอินเทอร์เน็ตอีกรอบ จึงตัดภาระการทำ TLS และการค้นหา DNS ออกไป ซึ่งเป็นรายละเอียดเล็กที่ส่งผลกับความหน่วงจริง
กราฟการทยอยเปลี่ยนทราฟฟิกไปยังระบบใหม่ จากบทความต้นฉบับ
ผลลัพธ์และสิ่งที่พบระหว่างทาง
หลังย้ายเสร็จ คะแนนวัดประสิทธิภาพหน้าเว็บดีขึ้นชัดเจน และความหน่วงที่เปอร์เซ็นไทล์ 95 คงที่กว่าเดิมมาก ไม่มีจุดพุ่งขึ้นเวลามีโหลดสูงเหมือนระบบเก่า ระบบรองรับได้ถึงระดับ 850 คำขอต่อวินาทีในช่วงวัดผลแรก ผ่านสัปดาห์ที่มีทราฟฟิกหนาแน่นที่ราว 450 คำขอต่อวินาทีโดยไม่มีปัญหา และรับการโจมตีแบบ DDoS ที่ 28,000 คำขอต่อวินาทีได้โดยผู้อ่านไม่รู้สึกอะไร
สิ่งที่พบระหว่างการประเมินก็มีค่าไม่แพ้ผลลัพธ์ ทีมพบว่าฟีเจอร์ตั้งเวลาเผยแพร่โพสต์ยังใช้งานไม่ได้จนกระทั่งแพลตฟอร์มออกเวอร์ชันหนึ่ง ซึ่งเป็นช่องว่างสำคัญที่ถูกจับได้เพราะมีการทดสอบขั้นตอนการทำงานจริงของบรรณาธิการ ไม่ใช่แค่ทดสอบว่าหน้าเว็บโหลดขึ้น
สิ่งที่ทีมไทยนำไปใช้ได้ทันที
ข้อแรกคือกำหนดเกณฑ์ผ่านเป็นตัวเลขก่อนเริ่มทดสอบ ทั้งอัตราความล้มเหลวและความหน่วงที่เปอร์เซ็นไทล์สูง ไม่ใช่ดูแค่ค่าเฉลี่ยซึ่งซ่อนปัญหาของผู้ใช้กลุ่มที่แย่ที่สุดไว้ ข้อสองคือทดสอบโหลดหลายรูปแบบ เพราะระบบที่รับการเพิ่มขึ้นแบบค่อยเป็นค่อยไปได้ อาจล้มทันทีเมื่อเจอทราฟฟิกกระชาก
ข้อสามคือทุกการย้ายระบบควรมีทางถอยที่ทำงานอัตโนมัติ ไม่ใช่แผนที่เขียนไว้ในเอกสารแล้วต้องมีคนมากดตอนตีสอง และข้อสี่คืออย่าทดสอบแค่หน้าเว็บฝั่งผู้อ่าน ต้องทดสอบขั้นตอนการทำงานของคนที่ต้องใช้ระบบทุกวันด้วย เพราะจุดที่พังบ่อยที่สุดมักเป็นงานหลังบ้านที่ไม่มีใครนึกถึงตอนวางแผน
สรุปสาระสำคัญ โจทย์: ย้ายระบบเนื้อหาโดยผู้อ่านต้องไม่รู้สึกอะไรเลย ทดสอบโหลดสามรูปแบบก่อนเปิดใช้ ปล่อยทีละขั้นพร้อมแผนถอยอัตโนมัติ
แหล่งอ้างอิง เรียบเรียงจาก Cloudflare Blog — The Cloudflare Blog, brought to you by EmDash —
อ่านบทความต้นฉบับ ภาพปกและแผนภาพ: Cloudflare Blog · ลิขสิทธิ์ภาพเป็นของเจ้าของต้นฉบับ ใช้ประกอบการรายงานพร้อมอ้างอิงแหล่งที่มา
มีคำถามเพิ่มเติมเกี่ยวกับบทความนี้? เขียนหาเราได้ที่
info@smart-cyber-tech.com
บริการที่เกี่ยวข้องจากทีมงาน Smart Cyber Tech
แบ่งปันบทความนี้:
LINE
Facebook
X
คัดลอกลิงก์
ปรึกษาทีมของเรา