Freeable 3.11.0 — ย้ายทั้งระบบมารันบน Linux
รีลีสนี้เปลี่ยนฐานที่ระบบรันอยู่ทั้งหมด จาก Windows Server มาเป็น Linux ซึ่งเป็นการเปลี่ยนที่ลึกกว่าที่ฟัง เพราะทุกอย่างที่เกี่ยวกับการติดตั้ง เว็บเซิร์ฟเวอร์ ใบรับรอง และสิทธิ์ไฟล์ ต้องเขียนใหม่หมด
ทำไมต้องย้าย
เหตุผลหลักคือต้นทุน — ค่าลิขสิทธิ์ Windows Server ต่อเครื่องเป็นค่าใช้จ่ายคงที่ที่คูณตามจำนวนเครื่อง และเมื่อโมเดลธุรกิจคือรับลูกค้าหลายรายบนหลายเครื่อง ต้นทุนนี้กินกำไรอย่างมีนัยสำคัญ
รื้อเครื่องมือดูแลเซิร์ฟเวอร์ใหม่ทั้งชุด
เครื่องมือติดตั้งและดูแลระบบเดิมผูกกับเว็บเซิร์ฟเวอร์ของ Windows ทั้งหมด จึงต้องเขียนใหม่ให้ทำงานกับเว็บเซิร์ฟเวอร์และระบบจัดการบริการของ Linux แทน
ใบรับรอง HTTPS อัตโนมัติ
ขอ ติดตั้ง และต่ออายุใบรับรองให้เองอัตโนมัติ พร้อมสั่งเว็บเซิร์ฟเวอร์โหลดใบรับรองใหม่ให้ด้วย โดยระบบอ่านวันหมดอายุจากใบรับรองจริงเพื่อรู้ว่าถึงเวลาต่ออายุหรือยัง
เรื่องนี้สำคัญมากเมื่อมีลูกค้าหลายราย เพราะแต่ละรายมีโดเมนของตัวเอง ถ้าต่ออายุด้วยมือ วันหนึ่งจะมีใบรับรองหมดอายุแล้วเว็บของลูกค้าขึ้นเตือนว่าไม่ปลอดภัย
แยกบัญชีระบบต่อโดเมน
งานที่สำคัญที่สุดด้านความปลอดภัยของรีลีสนี้ — ลูกค้าแต่ละรายรันด้วยบัญชีระบบของตัวเอง
ผลคือถึงแม้จะอยู่บนเครื่องเดียวกัน ข้อมูลของรายหนึ่งก็เข้าถึงอีกรายไม่ได้ในระดับระบบปฏิบัติการ ไม่ใช่แค่ระดับโปรแกรม ซึ่งเป็นการป้องกันที่แข็งแรงกว่ามาก
ปิดช่องโหว่ที่เคยอ่านไฟล์ข้ามผู้เช่าได้
ระหว่างทำงานนี้พบว่าการตั้งค่าเว็บเซิร์ฟเวอร์เดิมเสิร์ฟไฟล์จากโฟลเดอร์ข้อมูลออกไปตรง ๆ ซึ่งหมายความว่าถ้ารู้เส้นทางก็เปิดไฟล์ของผู้เช่ารายอื่นได้ ปิดช่องนี้พร้อมกับตั้งสิทธิ์ไฟล์ให้กันการอ่านข้ามกันในทุกระดับ ทั้งไฟล์ข้อมูล กุญแจเข้ารหัส และกุญแจของผู้เช่า
เครื่องมือใหม่สำหรับผู้ดูแล
- ตรวจและซ่อมสิทธิ์ไฟล์ — ตรวจว่าสิทธิ์ถูกต้องตามที่ควรเป็นหรือไม่ และซ่อมให้ได้ พร้อมเอกสารอธิบายว่าสิทธิ์ควรเป็นอย่างไรและทำไม
- ดูทรัพยากรและความจุเครื่อง — พื้นที่ดิสก์แยกระบบกับข้อมูล หน่วยความจำ ซีพียู และจำนวนบริการที่รันอยู่ ใช้ตอบคำถามว่าเครื่องนี้รับลูกค้าได้อีกกี่ราย
- วงจรชีวิตของผู้เช่า — ระงับบริการได้โดยเก็บข้อมูลไว้ 12 เดือนและหยุดต่ออายุใบรับรอง แล้วเปิดกลับมาใช้ใหม่ได้ เหมาะกับลูกค้าที่หยุดใช้ชั่วคราวหรือค้างชำระ
- สภาพแวดล้อมพัฒนาแบบ Linux — จำลองเครื่องจริงบนเครื่องนักพัฒนา เจอปัญหาตั้งแต่ตอนพัฒนาแทนที่จะไปเจอตอนขึ้นระบบ
- คู่มือการย้าย — เอกสารขั้นตอนตั้งแต่ทดลองกับลูกค้ากลุ่มแรก ย้ายจริง จนถึงปิดเครื่องเก่า
บทเรียนจากการซ้อมย้ายจริง
การซ้อมย้ายแบบครบวงจรทำให้เจอช่องโหว่ที่ไม่มีทางเจอจากการอ่านโค้ด
- ต้องหยุดบริการก่อนคัดลอกไฟล์โปรแกรม — ไม่งั้นไฟล์ถูกล็อกอยู่
- ข้ามบริการที่ยังตั้งค่าไม่ครบ — เดิมพยายามเริ่มทุกบริการ พอมีตัวที่ยังไม่ได้ตั้งค่าก็พังวนซ้ำแล้วรายงานว่าเริ่มเว็บไม่สำเร็จทั้งที่ตัวเว็บไม่มีปัญหา
- เก็บกุญแจเข้ารหัสให้คงอยู่ข้ามการติดตั้งใหม่ — ไม่งั้นผู้ใช้ถูกเตะออกจากระบบทุกครั้งที่อัปเดต
- ค่าตั้งต้นที่หายไปจากการติดตั้งใหม่ — เจอเฉพาะเมื่อทดลองติดตั้งจากศูนย์จริง ๆ
ตัดฝั่ง Windows ออกทั้งหมด
ลบโค้ดที่เกี่ยวกับเว็บเซิร์ฟเวอร์และที่เก็บใบรับรองของ Windows ออกทั้งชุด และเปลี่ยนเอกสารทั้งหมดให้อ้างอิง Linux อย่างเดียว
การไม่เก็บโค้ดเก่าไว้ “เผื่อ” เป็นการตัดสินใจที่ตั้งใจ — โค้ดสองทางที่ไม่มีใครทดสอบทางหนึ่งคือภาระที่ไม่มีวันได้ใช้
บริหารจัดการข้อมูลในองค์กร ครบในที่เดียว