เมนู

เราสามารถลดเวลาในการติดตั้งระบบในสภาพแวดล้อมที่หลากหลายด้วย Docker Deployment ลงได้ถึง 1 ใน 10 และยังช่วยประหยัดตำแหน่งงานด้านการบำรุงรักษาระบบ (Ops) ไปได้ 2 ตำแหน่งสำหรับทีมขนาด 10 คนอีกด้วย

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

ก่อนอื่น เราต้องเข้าใจกันว่า Docker Deployment คืออะไรกันแน่

พูดง่ายๆคือการบรรจุรหัสแอปพลิเคชันไลบรารีพึ่งพาไฟล์กําหนดค่าและแม้กระทั่งพารามิเตอร์เคอร์เนลของระบบปฏิบัติการทั้งหมดของคุณใน "ภาพคอนเทนเนอร์" มาตรฐานสิ่งที่คุณทํางานในท้องถิ่นและสิ่งที่คุณทํางานบนเซิร์ฟเวอร์ใด ๆ ที่ติดตั้ง Dockerภาพจำลอง (image) แต่ละภาพมีขนาดเล็กสุดอยู่ที่ 20MB และใช้เวลาในการเริ่มทำงานไม่เกิน 1 วินาที。

เราใช้รายได้จริงจาก 3 เดือนที่ผ่านมา

Shipping containers and cranes at Hamburg port showcasing global trade.

ประการแรกคือการแก้ไขปัญหาความไม่สอดคล้องกันของสภาพแวดล้อมอย่างสมบูรณ์ก่อนหน้านี้ต้องใช้เวลาครึ่งวันเพียงเพื่อให้แต่ละเว็บไซต์มีรุ่น Node.js ที่แตกต่างกันไดรเวอร์ฐานข้อมูล ตอนนี้ภาพกระจกที่บรรจุจะถูกส่งโดยตรงไปยังคลังสินค้าภาพกระจกสามเว็บไซต์ดึงและเริ่มต้นด้วยคลิกเดียวเวลาในการปรับใช้ลดลงจากเฉลี่ย 4 ชั่วโมงเป็น 24 นาทีการอัปเดตเวอร์ชันก่อนการส่งเสริมครั้งใหญ่ไม่จําเป็นต้องนอนตลอดทั้งคืน

ประการที่สองอัตราการใช้ทรัพยากรของเซิร์ฟเวอร์เพิ่มขึ้นเป็นสองเท่าโดยตรงก่อนหน้านี้เราเช่าเซิร์ฟเวอร์คลาวด์ 2 4G แยกต่างหากสําหรับแต่ละไซต์ อัตราการใช้ CPU น้อยกว่า 10% เมื่อไม่ได้ใช้งาน ตอนนี้เราใช้ Docker เพื่อยัดแอปพลิเคชันแคชและงานกําหนดเวลาของทั้งสามไซต์ลงในเซิร์ฟเวอร์ 4 8G ทรัพยากรเพียงพอค่าใช้จ่ายในการใช้งานเซิร์ฟเวอร์ต่อเดือนประหยัดไปได้ทันที 620 ดอลลาร์สำหรับทีมขนาดเล็กที่มีสมาชิกน้อยกว่า 10 คน จำนวนนี้ไม่ใช่จำนวนที่น้อยเลย

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

อย่ารีบขึ้นรถนะ พวกเราได้ช่วยคุณหลีกเลี่ยงหลุมเหล่านี้ไปแล้ว

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

หลุมแรกเป็นภาพกระจกที่เขียนว่าบวมเกินไปในตอนแรกเราบรรจุโดยตรงกับภาพกระจกเต็มรูปแบบอย่างเป็นทางการ Node.js ภาพกระจกแอปพลิเคชันมี1.2G, ใช้เวลามากกว่า 20 นาทีในการส่งไปยังคลังสินค้าภาพกระจกในต่างประเทศ ต่อมาเปลี่ยนไปใช้ภาพกระจกพื้นฐาน Alpine ลบการพึ่งพาที่ไม่มีประโยชน์ทั้งหมด ในที่สุดภาพกระจกมีเพียง90MBเร็วขึ้น 10 เท่า

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

หลุมที่สามคือการไม่มีข้อ จํากัด เกี่ยวกับทรัพยากรตอนแรกเมื่อออนไลน์ไม่ได้กําหนดขีด จํากัด บนของ CPU และหน่วยความจําสําหรับคอนเทนเนอร์ มีครั้งหนึ่งงานกําหนดเวลาของไซต์หนึ่งมีข้อบกพร่องครอบครอง CPU ของเซิร์ฟเวอร์ทั้งหมดทําให้ไซต์อื่น ๆ อีกสองไซต์ถูกแขวนทั้งหมด ต่อมามีการกําหนดขีด จํากัด บนของทรัพยากรสําหรับคอนเทนเนอร์แต่ละคอนเทนเนอร์แม้ว่าปัญหาของบริการเดียวจะไม่ส่งผลกระทบต่อภาพรวม

ควรจะใช้ Docker หรือไม่? เกณฑ์การตัดสินใจของเรานั้นง่ายมาก

สถานการณ์ที่ควรใช้: คุณต้องการนำแอปพลิเคชันเดียวกันไปติดตั้งบนเซิร์ฟเวอร์หลายเครื่อง มักจะต้องสลับระหว่างสภาพแวดล้อมการพัฒนา/ทดสอบ/การผลิต ทีมมีขนาดใหญ่กว่า 3 คน และแต่ละคนมีสภาพแวดล้อมการพัฒนาที่แตกต่างกัน การใช้ Docker จะช่วยเพิ่มประสิทธิภาพการทำงานได้

สถานการณ์ที่ไม่ควรใช้: หากคุณมีเพียงบล็อกเล็กๆ เท่านั้น และใช้งานบนเซิร์ฟเวอร์เพียงเครื่องเดียว โดยที่คุณอัปเดตโค้ดเพียงครั้งเดียวในช่วงครึ่งปี ก็ไม่จำเป็นเลยที่จะเสียเวลาเรียนรู้เกี่ยวกับ Docker การใช้โปรแกรม Paota หรือการติดตั้งด้วยตนเองจะง่ายกว่ามาก

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

Blue and yellow shipping containers aligned on a sandy beach with the ocean and sky in the background.

  • การบีบอัดภาพถ่ายเป็นครั้งแรกถึงครั้งที่สาม ให้ค้นหาเทมเพลตแนวทางปฏิบัติที่ดีที่สุดจากทางการโดยตรง อย่าพยายามเขียน Dockerfile ด้วยตัวเอง วิธีนี้จะช่วยหลีกเลี่ยงปัญหาต่างๆ เช่น ภาพถ่ายที่มีขนาดใหญ่เกินไปหรือข้อผิดพลาดด้านสิทธิ์การเข้าถึงได้ถึง 80%
  • ในช่วงเริ่มต้น ไม่จำเป็นต้องใช้เครื่องมือจัดการโครงสร้างระบบที่ซับซ้อนอย่าง K8s เพียงแค่ใช้ Docker Compose ในการจัดการบริการไม่เกิน 3 บริการก็เพียงพอแล้ว
  • ให้ใช้โหลดข้อมูลจากคลังภาพผ่านโหนดต่างประเทศของผู้ให้บริการคลาวด์เถอะ ไม่ต้องสร้างขึ้นมาเอง ช่วยประหยัดเวลาได้มากพอที่จะพัฒนาฟีเจอร์เพิ่มเติมอีกหลายอย่าง

คำตอบสำหรับปัญหาเล็ก ๆ ที่พบบ่อย

คำถาม: Docker จะทำให้เกิดการใช้งานทรัพยากรเซิร์ฟเวอร์เพิ่มขึ้นมากหรือไม่? เราได้ทดสอบแล้ว พบว่าการสูญเสียประสิทธิภาพนั้นน้อยกว่า 5% ซึ่งสำหรับทีมขนาดกลางและเล็กส่วนใหญ่แล้วแทบไม่สามารถรับรู้ได้เลย

คำถาม: แอปพลิเคชันเก่าที่มีอยู่ก่อนหน้านี้สามารถย้ายไปใช้งานบน Docker ได้หรือไม่? แน่นอนว่าได้ครับ เรามีโปรเจกต์ PHP เก่าที่ใช้งานมา 3 ปี และเราใช้เวลาเพียง 2 วันในการสร้างอิมเมจ (image) และย้ายมันไปใช้งานบน Docker ซึ่งเร็วกว่าการตั้งค่าสภาพแวดล้อมใหม่มาก

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

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