เมนู

จากการร้องขอที่มีข้อผิดพลาด 13% ในช่วง Black Friday สู่การไม่มีเวลาหยุดทำงานเลย: เราประหยัดค่าใช้จ่ายในการเช่าเซิร์ฟเวอร์ได้ 60% ด้วยการใช้การติดตั้งแบบคอนเทนเนอร์ (Containerization)

เมื่อปีที่แล้ว อินเตอร์เฟซการวิเคราะห์ที่อยู่ของเราระเบิดโดยตรง - 13% ของคําขอรายงาน 429 การบริการลูกค้าหลังได้รับการร้องเรียนจากร้านค้ามากกว่า 300 การเชื่อมต่อหลัง 3 ชั่วโมงในการหมุนเวียน 24 ชั่วโมงก่อนที่จะแบกสูงสุดในเวลานั้นบริการของเรายังคงทํางานบนเซิร์ฟเวอร์คลาวด์สองเซิร์ฟเวอร์ที่มีการกําหนดค่าคงที่และการปรับขนาดความจุทั้งหมดขึ้นอยู่กับการกําหนดค่าด้วยตนเองเมื่ออินสแตนซ์ใหม่เพิ่มขึ้นสูงสุดการเข้าชมจะผ่านไป

ก่อนอื่นเลย มาอธิบายให้เข้าใจกันก่อนว่าการติดตั้งแบบคอนเทนเนอร์ไรซ์ (Containerization Deployment) คืออะไร

พูดง่ายๆคือการบรรจุรหัสไลบรารีพึ่งพาและไฟล์กําหนดค่าทั้งหมดของคุณลงใน "คอนเทนเนอร์" มาตรฐานที่มีขนาดตั้งแต่ไม่กี่เมกะไบต์ไปจนถึงหลายร้อยเมกะไบต์ซึ่งสภาพแวดล้อมการทํางานจะสอดคล้องกัน 100% ไม่ว่าเซิร์ฟเวอร์จะทํางานอยู่บนใดก็ตามขนาดกระจกของบริการแก้ไขที่อยู่ที่เราบรรจุไว้ในตอนแรกคือ187MBการดึงข้อมูลและเริ่มต้นกระบวนการใช้เวลาไม่เกิน 10 วินาที

3 รายได้หลักที่เราได้รับจริงๆ

Shipping containers and cranes at Hamburg port showcasing global trade.

  • การขยายความจุอัตโนมัติช่วยชีวิตได้จริงๆ: ปริมาณการไหลของสีดําห้าเพิ่มขึ้น 3 เท่าในปีนี้ระบบจะดึง 27 อินสแตนซ์ภาชนะโดยอัตโนมัติและหดตัวเป็น 3 โดยอัตโนมัติหลังจากที่จุดสูงสุดผ่านไปไม่มีการแทรกแซงด้วยตนเองและอัตราข้อผิดพลาดลดลงโดยตรงต่ํากว่า 0.1%
  • ข้อบกพร่องในสภาพแวดล้อมที่ไม่สอดคล้องกันหายไปอย่างสมบูรณ์: ปัญหาอภิปรัตน์ที่ทํางานในท้องถิ่นก่อนหน้านี้และล่มสลายเมื่อออนไลน์คิดเป็น 40% ของข้อบกพร่องทั้งหมดของเราไม่มีปัญหาใด ๆ ที่เกิดขึ้นหลังจากย้ายไปยังคอนเทนเนอร์
  • ต้นทุนเซิร์ฟเวอร์ลดลงครึ่งหนึ่งโดยตรง: ก่อนหน้านี้เราเช่าเซิร์ฟเวอร์ที่มีการจัดสรรสูง 8 เครื่องตลอดทั้งปีเพื่อแบกรับสูงสุดอัตราการใช้งานปกติมีเพียง 15% ตอนนี้เราจ่ายตามการใช้งานจริงประหยัดค่าใช้จ่ายเซิร์ฟเวอร์ 60% ตลอดทั้งปี

อย่ามองแต่ข้อดีเท่านั้น พวกเราเคยตกอยู่ในปัญหาเหล่านี้มาแล้วหลายครั้ง

เมื่อเราเพิ่งขึ้นคอนเทนเนอร์เราพยายามที่จะประหยัดความยุ่งยากและเก็บบันทึกและไฟล์ชั่วคราวทั้งหมดไว้ในคอนเทนเนอร์ ผลลัพธ์คือการทําลายโดยอัตโนมัติอินสแตนซ์หนึ่งบันทึกคําขอ 3 วันหายไปโดยตรงและใช้เวลาสองวันเต็มในการเติมข้อมูลอีกครั้งหนึ่งกระจกติดอยู่กับการพึ่งพาที่ไร้ประโยชน์มากเกินไปเวลาเริ่มต้นเพิ่มขึ้นจาก 10 วินาทีเป็น 2 นาทีการจราจรขึ้นอย่างฉับพลันก็เกินไปที่จะขยายความจุเกือบจะล้มเหลว

สิ่งที่มักถูกมองข้ามไปง่ายที่สุดคือปัญหาด้านสิทธิ์การเข้าถึง: เราเริ่มต้นด้วยการให้สิทธิ์ root กับคอนเทนเนอร์ และต่อมามีโปรแกรมขุดเหมืองที่ฉวยโอกาสนั้นเข้ามาใช้งาน ทำให้คอนเทนเนอร์ใช้ทรัพยากร CPU ถึง 30% ซึ่งเรากว่าจะตรวจพบก็ผ่านไปหนึ่งสัปดาห์หลังจากที่เริ่มมีการเฝ้าระวัง

คิดให้ดีก่อนว่าคุณควรจะใช้มันหรือไม่

Vibrant red and blue shipping containers under a clear sky, perfect for industrial themes.

ถ้าคุณเป็นทีมเล็กๆ ที่มีสมาชิกไม่กี่คน และกำลังพัฒนาเครื่องมือภายในที่มีการเปลี่ยนแปลงของปริมาณการใช้งาน (traffic) น้อยมาก โดยมีเพียง 1-2 บริการเท่านั้น ก็ไม่จำเป็นต้องยุ่งยากเลย การเช่าเซิร์ฟเวอร์มาใช้งานนั้นจะเป็นทางเลือกที่ง่ายและประหยัดที่สุด

แต่ถ้าการเข้าชมบริการของคุณมีความผันผวนการอัปเดตออนไลน์บ่อยสภาพแวดล้อมที่พัฒนาโดยคนในทีมของคุณต่อสู้บ่อยครั้งหรือคุณกําลังหงุดหงิดเกี่ยวกับเงินสําหรับทรัพยากรเซิร์ฟเวอร์ที่ไม่ได้ใช้งานการปรับใช้คอนเทนเนอร์เป็นสิ่งที่คุ้มค่าสําหรับสัปดาห์ของคุณ

3 ข้อแนะนำเฉพาะสำหรับผู้ที่เริ่มต้นใช้งานเป็นครั้งแรก

  • อย่าเริ่มต้นด้วยการจัดการคลัสเตอร์ K8S เลย ลองใช้ Docker Compose สำหรับการติดตั้งแบบเดี่ยวก่อน เพื่อทำความเข้าใจเกี่ยวกับขั้นตอนการบรรจุไฟล์ การเรียกใช้งาน และการแมปข้อมูลล็อก นี่คือวิธีที่เราใช้ในช่วง 3 เดือนแรก และมันก็เพียงพอสำหรับการเริ่มต้นแล้ว
  • การบรรจุภาพ (image packaging) ครั้งแรกนั้นต้องปฏิบัติตาม “หลักการของความเรียบง่าย” (the principle of minimalism) โดยติดตั้งเฉพาะไลบรารีที่จำเป็นต่อการทำงานเท่านั้น การใช้ภาพพื้นฐานของ Alpine สามารถลดขนาดไฟล์ได้มากกว่าครึ่งหนึ่ง
  • ข้อมูลและบันทึกที่สร้างขึ้นทั้งหมดต้องถูกเก็บไว้ในโวลุ่มจัดเก็บข้อมูลที่อยู่ภายนอกคอนเทนเนอร์ ไม่ควรเก็บไว้ภายในตัวคอนเทนเนอร์เด็ดขาด ข้อนี้ถูกเขียนไว้ที่ต้นของข้อบังคับการทำงานของทีมคุณ

คำตอบสำหรับคำถามทั่วไป

คำถาม: ในทีมของเราไม่มีใครเข้าใจเรื่องคอนเทนเนอร์เลย ค่าใช้จ่ายในการเรียนรู้จะสูงมากไหม?
ตอบ: สำหรับการใช้งานพื้นฐาน คุณสามารถใช้เวลา 2 วันในการอ่านเอกสารแนะนำจากทางผู้ผลิตเพื่อเริ่มต้นใช้งานบริการแรกได้ ส่วนการตั้งค่าคลัสเตอร์ที่ซับซ้อนกว่านั้น คุณสามารถเรียนรู้เมื่อคุณต้องการใช้งานจริงๆ ก็ยังไม่สายเลย

คำถาม: การย้ายบริการที่มีอยู่ไปยังคอนเทนเนอร์จะยุ่งยากมากหรือไม่?
คำตอบ: เราได้ย้าย 3 บริการแบ็กเอนด์ของเราทั้งหมดเสร็จภายในเวลา 1 สัปดาห์ โดยส่วนใหญ่ของเวลานั้นใช้ไปกับการจัดระเบียบข้อกำหนดที่ต้องการ (dependencies) ส่วนเวลาที่ใช้จริงในการเขียน Dockerfile นั้นน้อยกว่า 1 วันเลย

มีประโยชน์หรือไม่?

ฝ่ายสนับสนุนด้านเทคนิคบริการลูกค้าออนไลน์
侧栏
กลับไปด้านบน
简体中文ZH-CNDefault繁體中文ZH-TWEnglishEN日本語JA한국어KOภาษาไทยTHTiếng ViệtVIBahasa IndonesiaIDEspañolESFrançaisFRDeutschDEРусскийRUPortuguêsPTItalianoITالعربيةAR