กลับ
2026/10/12
โครงการย้ายระบบส่วนใหญ่เริ่มต้นจากการตัดสินใจ เช่น การย้ายจาก Oracle Java SE ไปยัง OpenJDK การเปลี่ยนดิสทริบิวชัน Linux ที่หมดอายุการสนับสนุน หรือการรวมเซิร์ฟเวอร์เข้าสู่คลาวด์ส่วนตัว บนกระดาษแผนงานมักดูเรียบง่าย แต่แล้วทีมโครงการกลับพบรันไทม์ Java ที่ไม่มีใครรู้ว่ามีอยู่ เซิร์ฟเวอร์ที่ไม่มีผู้รับผิดชอบ และแอปพลิเคชันที่พึ่งพาเวอร์ชันเก่าอยู่โดยไม่มีใครสังเกต กำหนดการจึงล่าช้าและงบประมาณก็บานปลาย
วิธีหลีกเลี่ยงปัญหานี้คือการเริ่มต้นด้วยการสำรวจ นั่นคือการจัดทำบัญชีรายการที่ครบถ้วนและอิงข้อเท็จจริงของสิ่งที่ติดตั้งอยู่จริง บทความนี้อธิบายว่าควรเก็บข้อมูลอะไร เก็บอย่างไรบน Windows และ Linux ควรเตรียมรับมือกับเรื่องที่ไม่คาดคิดอะไรบ้าง และจะนำผลลัพธ์ไปจัดทำแผนการย้ายระบบได้อย่างไร
ประเด็นสำคัญ
- จัดทำบัญชีรายการ Java และ Linux ให้ครบถ้วนก่อนวางแผนการย้ายระบบใด ๆ
- สำหรับรันไทม์แต่ละตัว ให้บันทึกเวอร์ชันแบบเต็ม ผู้จำหน่าย พาธ และผู้รับผิดชอบ
- ค้นหาในระบบไฟล์ด้วย ไม่ใช่ดูเพียงรายการแพ็กเกจ เพราะรันไทม์จำนวนมากถูกแตกไฟล์ไว้โดยตรงหรือมาพร้อมกับแอปพลิเคชัน
- จัดผลลัพธ์ออกเป็นสี่กลุ่ม (ถอนออก, แทนที่, ประสานงาน, ตรวจสอบ) แล้ววางแผนต่อจากนั้น
เหตุใดการสำรวจจึงต้องมาก่อนการย้ายระบบ
การย้ายระบบจะดีได้เพียงใดขึ้นอยู่กับข้อมูลที่ใช้เป็นพื้นฐาน หากไม่มีบัญชีรายการ คุณจะต้องประเมินขอบเขตจากความทรงจำ สเปรดชีตเก่า และบันทึกด้านไลเซนส์ ซึ่งไม่มีแหล่งใดสะท้อนสิ่งที่ทำงานอยู่จริงในปัจจุบัน
บัญชีรายการที่ดีจะให้สามสิ่งแก่คุณ:
- ขอบเขต: มีเครื่อง รันไทม์ และแอปพลิเคชันกี่รายการที่ได้รับผลกระทบ เพื่อให้คุณประเมินแรงงานและต้นทุนได้อย่างสมจริง
- ความเสี่ยง: ระบบใดใช้เวอร์ชันที่ไม่ได้รับการสนับสนุนหรือยังไม่ได้แพตช์ และระบบใดมีความสำคัญต่อธุรกิจ
- ความเป็นเจ้าของ: ใครเป็นผู้รับผิดชอบแต่ละระบบ เพื่อให้การทดสอบและการอนุมัติมีผู้รับผิดชอบที่ชัดเจน
นอกจากนี้ บัญชีรายการยังช่วยปกป้องคุณในการเจรจาเรื่องไลเซนส์ด้วย หากผู้จำหน่ายถามว่าคุณมีการติดตั้งอยู่กี่ชุด บัญชีรายการที่เป็นปัจจุบันจะช่วยให้คุณตอบได้ด้วยข้อเท็จจริงแทนการคาดเดา
ข้อมูลที่ต้องเก็บ: เวอร์ชัน ผู้จำหน่าย พาธ และผู้รับผิดชอบ
สำหรับการติดตั้ง Java แต่ละรายการ ให้เก็บข้อมูลอย่างน้อยดังต่อไปนี้:
- โฮสต์: ชื่อเครื่อง ที่อยู่ IP และประเภทของเครื่องว่าเป็นเซิร์ฟเวอร์ เครื่องเสมือน หรือเครื่องเดสก์ท็อป
- เวอร์ชัน: สตริงเวอร์ชันแบบเต็ม เช่น 1.8.0_202 หรือ 17.0.10 ไม่ใช่เพียง “Java 8” หรือ “Java 17”
- ผู้จำหน่าย: ผู้ที่บิลด์รันไทม์นั้น เช่น Oracle หรือดิสทริบิวชัน OpenJDK ต่าง ๆ ลำพังหมายเลขเวอร์ชันไม่ได้บอกข้อมูลนี้
- ประเภทและพาธ: เป็น JDK แบบเต็มหรือเป็นเพียง JRE และติดตั้งอยู่ในไดเรกทอรีใด
- การใช้งาน: แอปพลิเคชันหรือบริการใดที่ใช้รันไทม์นั้น หากสามารถตรวจสอบได้
- ผู้รับผิดชอบ: ทีมหรือบุคคลที่รับผิดชอบเครื่องหรือแอปพลิเคชันนั้น
สำหรับเซิร์ฟเวอร์ Linux ให้เก็บข้อมูลดิสทริบิวชันและเวอร์ชัน เวอร์ชันเคอร์เนล แพ็กเกจหลักที่ติดตั้ง และบริการที่กำลังทำงานอยู่เพิ่มเติมด้วย ข้อมูลนี้จะบอกคุณว่าเซิร์ฟเวอร์ใดอยู่ในขอบเขตของการย้ายระบบ Linux นอกเหนือจากการย้าย Java
Windows, Linux และเครื่องเดสก์ท็อป: แนวทางที่แตกต่างกัน
แต่ละสภาพแวดล้อมต้องใช้วิธีการที่ต่างกันเล็กน้อย คำสั่งด้านล่างเป็นเพียงจุดเริ่มต้น ในทางปฏิบัติ ทีมงานมักนำคำสั่งเหล่านี้ไปรวมไว้ในสคริปต์และรันบนเครื่องทั้งหมดผ่านเครื่องมือบริหารจัดการที่มีอยู่แล้ว
เซิร์ฟเวอร์ Windows
รันไทม์ Java ที่ติดตั้งไว้มักลงทะเบียนตัวเองไว้ใต้รีจิสทรีคีย์ HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft ของ Windows แต่ไม่ใช่ทุกตัวที่ทำเช่นนั้น การค้นหาในระบบไฟล์จึงเชื่อถือได้มากกว่า:
Get-ChildItem -Path C:\ -Filter java.exe -Recurse -ErrorAction SilentlyContinue |
Select-Object FullName, @{n='Version'; e={$_.VersionInfo.ProductVersion}}
ควรตรวจสอบทุกไดรฟ์ ไม่ใช่เฉพาะไดรฟ์ C: เพราะแอปพลิเคชันเซิร์ฟเวอร์มักติดตั้งไว้บนไดรฟ์ข้อมูลแยกต่างหาก
เซิร์ฟเวอร์ Linux
บน Linux ให้ใช้ตัวจัดการแพ็กเกจร่วมกับการค้นหาไฟล์ เพราะรันไทม์ Java จำนวนมากถูกแตกไฟล์จากไฟล์บีบอัดแทนที่จะติดตั้งเป็นแพ็กเกจ:
cat /etc/os-release
rpm -qa | grep -i -E 'jdk|jre|java'
find / -xdev -type f -name java -perm -u+x 2>/dev/null
บน Debian หรือ Ubuntu ให้ใช้ dpkg -l | grep -i -E 'jdk|jre' แทน rpm สำหรับไฟล์ไบนารี java แต่ละตัวที่พบ การรันด้วยตัวเลือก -version จะแสดงเวอร์ชันและโดยทั่วไปจะแสดงผู้จำหน่ายด้วย ไดเรกทอรี JDK ส่วนใหญ่ยังมีไฟล์ release ที่ระบุชื่อผู้พัฒนา (implementor) ไว้
เครื่องเดสก์ท็อป
เครื่องเดสก์ท็อปเป็นส่วนที่มักถูกมองข้ามมากที่สุดในการจัดทำบัญชีรายการ นักพัฒนามักติดตั้ง JDK ของตนเอง และบางครั้งแอปพลิเคชันทางธุรกิจก็ติดตั้งรันไทม์ Java ไว้โดยที่ผู้ใช้ไม่รู้ตัว เนื่องจากมีเครื่องเดสก์ท็อปจำนวนมาก ควรใช้ข้อมูลบัญชีซอฟต์แวร์จากเครื่องมือบริหารจัดการอุปกรณ์ปลายทางหากทำได้ และรันสคริปต์ขนาดเล็กเฉพาะในจุดที่ยังขาดข้อมูล
เรื่องที่ไม่คาดคิดที่พบบ่อย (JRE ที่มาพร้อมแอปพลิเคชัน, เซิร์ฟเวอร์ที่ถูกลืม)
แทบทุกโครงการสำรวจจะพบสิ่งที่ไม่มีใครคาดคิด สิ่งที่พบบ่อยที่สุด ได้แก่:
- รันไทม์ที่มาพร้อมแอปพลิเคชัน: แอปพลิเคชันเชิงพาณิชย์จำนวนมากรวมรันไทม์ Java ส่วนตัวไว้ในไดเรกทอรีการติดตั้งของตนเอง ซึ่งอาจไม่ปรากฏในรีจิสทรีหรือในรายการแพ็กเกจใด ๆ
- หลายเวอร์ชันในเครื่องเดียว: รันไทม์เก่ามักไม่ถูกถอนออกเมื่อมีการติดตั้งตัวใหม่ เซิร์ฟเวอร์หนึ่งเครื่องจึงอาจมีถึงสามหรือสี่เวอร์ชัน
- เซิร์ฟเวอร์ที่ถูกลืม: เครื่องทดสอบ เซิร์ฟเวอร์ประมวลผลแบบแบตช์รุ่นเก่า และเครื่องเสมือนที่ไม่เคยถูกปลดระวาง ซึ่งมักใช้เวอร์ชันที่ล้าสมัยและยังไม่ได้แพตช์
- ไม่ทราบผู้รับผิดชอบ: เครื่องที่ไม่มีใครยอมรับว่าเป็นของตน ต้องมีการตัดสินใจเกี่ยวกับเครื่องเหล่านี้ก่อนเริ่มการย้ายระบบ แม้ว่าการตัดสินใจนั้นจะเป็นการปิดเครื่องก็ตาม
เคล็ดลับ: รันไทม์ที่มาพร้อมแอปพลิเคชันมักต้องจัดการผ่านผู้จำหน่ายแอปพลิเคชัน ไม่ใช่แทนที่โดยตรง ดังนั้นควรบันทึกแยกไว้ต่างหากจากรันไทม์ที่คุณบริหารจัดการเอง
จากบัญชีรายการสู่แผนการย้ายระบบ
เมื่อเก็บข้อมูลครบแล้ว ให้รวบรวมไว้ในที่เดียวและทบทวนร่วมกับผู้รับผิดชอบระบบ จากนั้นจัดกลุ่มการติดตั้งออกเป็นประเภทต่าง ๆ:
| กลุ่ม | สิ่งที่อยู่ในกลุ่ม | สิ่งที่ต้องทำ |
|---|---|---|
| ถอนออก | รันไทม์ที่ไม่ได้ใช้งานแล้ว | ถอนการติดตั้งทันทีเพื่อลดความเสี่ยงและภาระด้านไลเซนส์ |
| แทนที่ | รันไทม์ที่คุณบริหารจัดการเอง | ย้ายไปใช้บิลด์ OpenJDK ที่ได้รับการสนับสนุนหลังจากทดสอบแล้ว |
| ประสานงาน | รันไทม์ที่มาพร้อมแอปพลิเคชันของบุคคลที่สาม | ขอคำยืนยันการสนับสนุนจากผู้จำหน่ายแอปพลิเคชันก่อน |
| ตรวจสอบ | ทุกอย่างที่ไม่มีผู้รับผิดชอบหรือไม่มีวัตถุประสงค์ที่ชัดเจน | หาผู้รับผิดชอบ หรือตัดสินใจปิดระบบ |
จากกลุ่มเหล่านี้ คุณสามารถวางกำหนดการที่สมจริงได้ โดยเริ่มจากระบบที่มีความเสี่ยงต่ำเพื่อพิสูจน์กระบวนการ แล้วจึงขยับไปยังระบบที่สำคัญต่อธุรกิจพร้อมแผนย้อนกลับ (rollback) ที่ผ่านการทดสอบแล้ว
เคล็ดลับ: ควรสแกนสำรวจซ้ำอีกครั้งก่อนการสลับระบบขั้นสุดท้าย เพราะสภาพแวดล้อมเปลี่ยนแปลงไปในระหว่างโครงการที่ใช้เวลานาน และจะมีการติดตั้งใหม่เกิดขึ้น
LOGIQ ช่วยคุณได้อย่างไร
LOGIQ ดำเนินโครงการสำรวจและย้ายระบบสำหรับสภาพแวดล้อม Java และ Linux โดยใช้สคริปต์และขั้นตอนที่ได้รับการปรับปรุงจากโครงการจริงของลูกค้าบนเซิร์ฟเวอร์ Windows เซิร์ฟเวอร์ Linux และเครื่องเดสก์ท็อป หากคุณต้องการความช่วยเหลือในการจัดทำบัญชีรายการหรือนำไปจัดทำแผนการย้ายระบบ ติดต่อ LOGIQ
Global
Japan
Korea
China
Taiwan
Vietnam
Indonesia
Portugal
Spain
France
Germany
Egypt
Russia