คำตอบสั้น ๆ: เช็กลิสต์ Go-live ก่อนเปิดระบบบนเซิร์ฟเวอร์ใหม่ ตรวจความปลอดภัย Backup ที่กู้ได้ Monitoring DNS และ SSL ทดสอบโหลดด้วย k6 เกณฑ์ Go/No-go และแผนถอยกลับ
คู่มือนี้อธิบาย Go-live ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Go-live คือช่วงที่ระบบบนเซิร์ฟเวอร์ใหม่เริ่มรับผู้ใช้จริง เช่น เปิดเว็บร้านค้าใหม่ ย้าย ERP ขึ้นคลาวด์ หรือสลับ DNS จากเครื่องเก่ามาเครื่องใหม่ ปัญหาที่เกิดในวัน Go-live ส่วนใหญ่ไม่ใช่เรื่องยาก แต่เป็นเรื่องที่ไม่มีใครตรวจ เช่น ใบรับรอง SSL ไม่ครอบคลุมโดเมน www, Backup ยังไม่เคยกู้ หรือการแจ้งเตือนส่งไปที่อีเมลที่ไม่มีใครเปิด
คู่มือนี้เป็นเช็กลิสต์ Go-live สำหรับผู้ดูแลระบบและหัวหน้าโครงการ ใช้ได้ทั้ง Linux และ Windows Server เมื่อทำครบ คุณจะมีเซิร์ฟเวอร์ที่ผ่านการตรวจความปลอดภัย มี Backup ที่กู้ได้จริง มีการแจ้งเตือนที่ไปถึงคน มี DNS และ SSL ที่ทดสอบก่อนสลับ ผ่านการทดสอบโหลด มีเกณฑ์ตัดสิน Go-live หรือเลื่อน มีแผนถอยกลับ และรู้ว่าต้องติดต่อใครเมื่อมีปัญหา
สิ่งที่ต้องเตรียม
- วันและเวลา Go-live ที่ผู้บริหารและเจ้าของระบบอนุมัติ ควรเป็นช่วงที่ผู้ใช้น้อย และไม่ใช่วันศุกร์เย็นหรือก่อนวันหยุดยาว
- รายการ URL, โดเมน, IP, พอร์ต และบริการทั้งหมดของระบบ รวมถึงระเบียน DNS ปัจจุบัน
- สิทธิ์ผู้ดูแลเซิร์ฟเวอร์ สิทธิ์แก้ DNS และสิทธิ์ในพอร์ทัลของผู้ให้บริการคลาวด์
- ผลทดสอบการทำงานจากผู้ใช้หลัก (UAT) ที่ผ่านแล้วบนเครื่องใหม่
- ข้อความแจ้งผู้ใช้สำหรับก่อน ระหว่าง และหลัง Go-live
ขั้นตอนที่ 1: ตรวจความปลอดภัยของเซิร์ฟเวอร์
เครื่องที่เปิดสู่อินเทอร์เน็ตจะถูกสแกนภายในไม่กี่นาทีหลังได้ IP สาธารณะ ก่อน Go-live ให้ตรวจอย่างน้อยรายการเหล่านี้
sudo apt update && apt list --upgradable # ต้องไม่เหลือ Security update ค้าง
sudo ss -tlnp # พอร์ตที่เปิดฟังอยู่ทั้งหมด
sudo sshd -T | grep -Ei '^(passwordauthentication|permitrootlogin)'
sudo systemctl --failed
- เปิดเฉพาะพอร์ตที่ระบบต้องใช้ เช่น 80 และ 443 พอร์ตจัดการอย่าง SSH, RDP และฐานข้อมูลให้จำกัด IP ต้นทาง ถ้าใช้ THAI DATA CLOUD ตั้งได้ที่ Security Group
- SSH ใช้คีย์ ปิดการล็อกอินด้วยรหัสผ่าน รายการเต็มของ Linux อยู่ใน เช็กลิสต์ความปลอดภัยหลังเปิด Linux Server ใหม่ ส่วน Windows ดู Windows Server Hardening
- ลบบัญชีทดสอบ รหัสผ่านเริ่มต้นของแอป และหน้า phpinfo หรือหน้าติดตั้งที่ค้างอยู่
- เปิด 2FA ให้บัญชีพอร์ทัลคลาวด์และบัญชีผู้ดูแลแอป
ขั้นตอนที่ 2: ยืนยันว่า Backup กู้ได้จริงก่อน Go-live
Backup รอบแรกต้องเกิดขึ้นก่อนวัน Go-live ไม่ใช่หลังจากนั้น และต้องลองกู้แล้ว ตรวจสามเรื่อง คือ งานสำรองรันตามเวลาและสำเร็จ ชุดสำรองมีทั้งฐานข้อมูล ไฟล์อัปโหลด และค่าตั้งระบบ และกู้ขึ้นเครื่องทดสอบได้ภายในเวลาที่เจ้าของระบบยอมรับ วิธีวางแผนทั้งหมดอยู่ใน คู่มือ Backup Plan ตามกฎ 3-2-1
ก่อนเริ่มสลับระบบในวัน Go-live ให้สั่ง Backup พิเศษอีกหนึ่งรอบทั้งเครื่องเดิมและเครื่องใหม่ ชุดนี้คือจุดถอยกลับถ้าการย้ายข้อมูลรอบสุดท้ายผิดพลาด
ขั้นตอนที่ 3: ตั้ง Monitoring ก่อน Go-live และทดสอบว่าการแจ้งเตือนถึงคน
- ภายนอก: ตรวจ URL หลักจากนอกเครือข่ายทุก 1–5 นาที แจ้งเมื่อเว็บล่มหรือตอบช้า ตาม คู่มือตั้งระบบแจ้งเตือนเมื่อเว็บไซต์ล่ม
- ทรัพยากร: ดิสก์ใกล้เต็ม RAM หมด CPU ค้างสูง ดูได้จากกราฟ Monitoring ของแพลตฟอร์มหรือเครื่องมือที่ติดตั้งเอง
- งานตั้งเวลา: Backup และงาน cron สำคัญต้องแจ้งเมื่อไม่ทำงานตามเวลา
- ใบรับรอง: แจ้งก่อน SSL หมดอายุอย่างน้อย 14 วัน
ทดสอบให้การแจ้งเตือนเกิดจริงอย่างน้อยหนึ่งครั้ง เช่น หยุด Nginx บนเครื่องใหม่ก่อน Go-live สองนาที แล้วดูว่ามีข้อความเข้าโทรศัพท์ของคนเวรหรือไม่ การแจ้งเตือนที่ส่งไปกล่องอีเมลรวมที่ไม่มีใครเปิดเท่ากับไม่มี
ขั้นตอนที่ 4: ทดสอบ DNS และ SSL ก่อนวัน Go-live
ลด TTL ของระเบียนที่จะเปลี่ยนเหลือ 300 วินาทีล่วงหน้าอย่างน้อยเท่ากับ TTL เดิม (ถ้าเดิมเป็น 86400 ให้ลดก่อนหนึ่งวัน) ตาม คู่มือ TTL และการย้าย DNS จากนั้นทดสอบเครื่องใหม่ด้วยโดเมนจริงโดยไม่ต้องรอเปลี่ยน DNS ด้วยตัวเลือก --resolve ของ curl
curl -sI --resolve www.example.com:443:203.0.113.10 https://www.example.com/
curl -sI --resolve example.com:80:203.0.113.10 http://example.com/ # ต้อง Redirect ไป HTTPS
echo | openssl s_client -connect 203.0.113.10:443 -servername www.example.com 2>/dev/null | openssl x509 -noout -dates -ext subjectAltName
dig +short www.example.com A @1.1.1.1
ตรวจว่าใบรับรองครอบคลุมทุกชื่อที่ผู้ใช้เข้า ทั้งมีและไม่มี www วันหมดอายุยังอีกนาน และตั้งต่ออายุอัตโนมัติแล้ว วิธีอ่านค่าใบรับรองอยู่ใน คู่มือตรวจสอบ SSL Certificate ตอนแก้ DNS ให้แตะเฉพาะระเบียนของเว็บ อย่าแก้ MX, SPF หรือ TXT ของอีเมลถ้าไม่ได้ย้ายระบบอีเมลด้วย