Upgradeดูแลระบบ PHP / Laravel เดิม
แพ็กเกจนี้คืออะไร
แพ็กนี้สำหรับระบบที่ยังใช้เวอร์ชันที่หมดการดูแลไปแล้ว ซึ่งเป็นสภาพที่อันตรายกว่าที่คนส่วนใหญ่คิด เพราะเมื่อไม่มีใครออกแพตช์ให้แล้ว ช่องโหว่ที่ถูกประกาศออกมาหลังจากนั้นจะอยู่กับคุณตลอดไปโดยไม่มีทางปิด และเป็นข้อมูลสาธารณะที่ใครก็อ่านได้
ผมอัปเกรดให้ทีละขั้น ไม่ใช่กระโดดข้ามหลายเวอร์ชันทีเดียวแล้วลุ้น แต่ละขั้นมีชุดทดสอบยืนยันว่าระบบยังทำงานเหมือนเดิม พร้อมกันนั้นก็ปิดช่องโหว่ที่พบ ย้ายขึ้นระบบส่งงานอัตโนมัติเพื่อไม่ต้องอัปไฟล์ด้วยมืออีก และขยายชุดทดสอบให้ครอบส่วนสำคัญของระบบ ไม่ใช่แค่ส่วนที่แก้
งานนี้จบด้วยการสอนทีมคุณใช้ของใหม่หนึ่งรอบ พร้อมวิดีโอบันทึกไว้ให้เปิดดูซ้ำ เพราะของที่ไม่มีใครในทีมใช้เป็น สุดท้ายก็กลับไปทำแบบเดิม
ลองดูของจริง
| จากเวอร์ชัน | PHP 7.2 · Laravel 6 |
|---|---|
| ไปเวอร์ชัน | PHP 8.3 · Laravel 12 |
| จังหวะสลับ | คืนวันอาทิตย์ · ระบบหยุดไม่เกิน 25 นาที |
| วิธี | ไปทีละขั้น ไม่กระโดด |
01 แผนอัปเกรดทีละขั้น
การข้ามหลายเวอร์ชันทีเดียวแปลว่าถ้าพัง คุณไม่รู้ว่าพังเพราะขั้นไหน ต้องไล่ย้อนทั้งหมด แผนนี้แบ่งเป็นสี่ขั้น แต่ละขั้นมีเทสต์ยืนยันว่าระบบยังทำงานเหมือนเดิมก่อนไปขั้นถัดไป และย้อนกลับได้ทุกขั้น
02 ขั้นตอน และสิ่งที่ปิดในแต่ละขั้น
- ขั้นที่ 1PHP 7.2 → 7.4
ปิดช่องโหว่ระดับสูง 3 จุดที่มากับเวอร์ชันเก่า · เทสต์ผ่าน 34/34 - ขั้นที่ 2Laravel 6 → 9
แทนไลบรารีที่เจ้าของเลิกทำแล้ว 2 ตัว · เทสต์ผ่าน 34/34 - ขั้นที่ 3PHP 7.4 → 8.3
ปิดช่องโหว่ระดับกลาง 5 จุด · เทสต์ผ่าน 41/41 - ขั้นที่ 4Laravel 9 → 12
ย้ายขึ้นระบบส่งงานอัตโนมัติ · เทสต์ผ่าน 41/41
03 ของที่ต้องเฝ้าเป็นพิเศษ
| ปลั๊กอินออกใบกำกับภาษี | ไม่มีคนอัปเดตมา 3 ปี ต้องหาตัวแทนในขั้นที่ 2 |
| รายงานที่เขียน SQL ตรง | ไม่ได้ใช้ผ่าน Laravel ต้องทดสอบมือเพิ่มทุกขั้น |
แผนฉบับเต็มมีวันที่ของแต่ละขั้น ขั้นตอนย้อนกลับ และรายการช่องโหว่ที่ปิดทั้งหมด
นี่คือเอกสารตัวอย่างที่ย่อมาจากของจริง ตัวเลขและชื่อระบบเป็นของสมมติ แต่รูปแบบ หัวข้อ และวิธีเขียนเป็นแบบเดียวกับที่ส่งให้ลูกค้าจริงทุกประการ
สิ่งที่คุณจะได้ ทั้งหมด
รายการนี้คือขอบเขตงานทั้งหมดของแพ็กเกจนี้ ไม่มีข้อไหนซ่อนไว้ในสัญญา
- ทุกอย่างในแพ็กเกจ Fix
- อัปเกรด PHP และ Laravel ขึ้นเวอร์ชันที่ยังได้รับการดูแล
- ปิดช่องโหว่ที่พบ พร้อมรายงานอธิบายทีละข้อ
- ย้ายขึ้นระบบ deploy อัตโนมัติ ไม่ต้องอัปไฟล์ด้วยมืออีก
- ชุดทดสอบครอบส่วนสำคัญของระบบ ไม่ใช่แค่ส่วนที่แก้
- สอนทีมคุณใช้ระบบใหม่ 1 รอบ พร้อมวิดีโอบันทึกไว้ดูซ้ำ
- การรื้อเขียนใหม่ทั้งระบบด้วยเทคโนโลยีอื่น ถ้าตรวจแล้วเห็นว่าควรรื้อจริง ผมจะบอกตรงๆ และเสนอเป็นงานสร้างใหม่แยกต่างหาก ไม่ยัดเข้ามาในงานดูแล
- งาน WordPress ปลั๊กอินและธีม เป็นคนละสายกับ Laravel ตอนนี้ผมยังไม่รับ
- การกู้ระบบที่ถูกแฮ็กไปแล้ว ต้องประเมินเป็นรายกรณีก่อน เพราะขอบเขตความเสียหายต่างกันมาก
- ค่าเซิร์ฟเวอร์และบริการภายนอกที่ระบบใช้ จ่ายตรงกับผู้ให้บริการ ผมแจ้งราคาให้ก่อนเสมอ
คำถามที่พบบ่อยของแพ็กเกจนี้
อัปเกรดแล้วหน้าตาระบบเปลี่ยนไหม
ไม่เปลี่ยนครับ งานนี้เป็นการเปลี่ยนของที่อยู่ข้างใต้ คนที่ใช้งานทุกวันควรรู้สึกเหมือนเดิมทุกอย่าง ยกเว้นเร็วขึ้น ถ้าคุณอยากเปลี่ยนหน้าตาด้วย นั่นเป็นงานคนละก้อนและผมแยกราคาให้ ไม่รวมมาเงียบๆ
ทำไมต้องอัปทีละขั้น ข้ามไปตัวล่าสุดเลยไม่ได้เหรอ
ได้ แต่ความเสี่ยงต่างกันมาก การข้ามหลายเวอร์ชันทีเดียวแปลว่าถ้าพัง คุณไม่รู้ว่าพังเพราะขั้นไหน ต้องไล่ย้อนทั้งหมด การไปทีละขั้นพร้อมชุดทดสอบทำให้รู้ทันทีว่าปัญหาเกิดตรงไหน ใช้เวลามากกว่านิดหน่อยแต่แลกกับการไม่ต้องลุ้น
ระบบ deploy อัตโนมัติจำเป็นด้วยเหรอ
จำเป็นเมื่อคุณอยากให้คนอื่นดูแลต่อได้ครับ ตราบใดที่การขึ้นระบบยังเป็นการอัปไฟล์ด้วยมือ มันจะมีแค่คนที่รู้ลำดับขั้นเท่านั้นที่ทำได้ และวันที่คนนั้นไม่อยู่คือวันที่ระบบอัปเดตไม่ได้ พอเป็นระบบอัตโนมัติ ใครก็กดได้ และมันย้อนกลับได้ถ้ามีอะไรผิด
ปิดช่องโหว่แล้วมีอะไรยืนยันไหม
มีรายงานอธิบายทีละข้อว่าเจออะไร ปิดยังไง และเหลือความเสี่ยงอะไรพร้อมข้อเสนอ เป็นเอกสารแบบเดียวกับที่ผมส่งให้ลูกค้าบริการตรวจความปลอดภัย ซึ่งเป็นทางหลักของผมอยู่แล้ว ดูตัวอย่างฉบับเต็มได้จากหน้าตัวอย่างรายงานบนเว็บนี้
งานใช้เวลา 30 วัน ระหว่างนั้นระบบยังใช้ได้ไหม
ใช้ได้ตามปกติครับ ผมทำงานบนสำเนาแยกและมีที่ทดสอบของตัวเอง ระบบจริงของคุณยังวิ่งอยู่เหมือนเดิมจนถึงจังหวะสลับ ซึ่งเรานัดเวลากันไว้ล่วงหน้าและใช้เวลาสั้นที่สุดเท่าที่ทำได้