ModernizationArchitectureEnterprise

Legacy System Migration
เมื่อไหรควรเปลี่ยน
และเริ่มต้นอย่างไร?

ระบบเก่าที่ "ยังทำงานได้" อาจกำลังดึงองค์กรให้ถอยหลังโดยไม่รู้ตัว 80% ของงบ IT ในหลายองค์กรถูกใช้ไปกับการ maintain ระบบเก่า แทนที่จะเป็น innovation บทความนี้ช่วยให้รู้ว่าเมื่อไหรถึงเวลา และควรเริ่มต้นจากจุดไหน

"ถ้ายังทำงานได้ ก็อย่าไปแตะมัน" — เป็นปรัชญาที่สมเหตุสมผลในระยะสั้น แต่ในระยะยาว legacy system คือ tax ที่องค์กรจ่ายซ้ำทุกเดือนผ่านค่า maintenance ที่สูงขึ้น velocity ที่ช้าลง และความเสี่ยงที่สะสมขึ้นเรื่อยๆ คำถามไม่ใช่ว่า "จะเปลี่ยนดีไหม" แต่คือ "จะเปลี่ยนอย่างไรให้ไม่ล้มเหลว"
80%
ของงบ IT ในองค์กร Fortune 500 ถูกใช้กับการ run และ maintain ระบบเดิม
McKinsey Digital, 2023
3.8ล้าน
บาทต่อชั่วโมง ค่าเฉลี่ย downtime cost ของ enterprise system ที่ล้มเหลว
Gartner, 2023
70%
ของ legacy migration project ล้มเหลวหรือเกินงบ — ส่วนใหญ่เพราะขาด strategy ที่ชัดเจน
Standish Group, 2022

Legacy System คืออะไร? — ไม่ใช่แค่เรื่องของอายุ

ระบบที่ "เก่า" ไม่ได้หมายความว่า legacy เสมอไป และระบบที่ "ใหม่" ก็อาจเป็น legacy ได้ในไม่กี่ปี คำจำกัดความที่ใช้งานได้จริงคือ: ระบบที่ยากต่อการเปลี่ยนแปลง มีราคาแพงในการ maintain และเป็นอุปสรรคต่อ business agility

Legacy ด้านเทคนิค

เทคโนโลยีที่ไม่มีผู้สนับสนุนแล้ว หา developer ยาก ไม่มี security patch ใหม่ ไม่รองรับ modern integration ต้องใช้ hardware เฉพาะที่หา spare parts ยาก

COBOL / RPGOracle FormsMonolith ที่ไม่มี testOn-premise AS/400

Legacy ด้านธุรกิจ

ระบบที่เป็นอุปสรรคต่อ business velocity แม้เทคโนโลยีจะยังไม่เก่าก็ตาม เช่น ระบบที่ใช้เวลา 6 เดือนในการเพิ่ม feature ใหม่ หรือระบบที่ไม่สามารถ integrate กับ partner ภายนอกได้

Time-to-market ช้าขยาย feature ไม่ได้Integration ยากความรู้อยู่กับคนไม่กี่คน

8 สัญญาณที่บ่งบอกว่าถึงเวลาต้องเปลี่ยน

Feature ใหม่ใช้เวลา "เดือน" ไม่ใช่ "วัน"

เมื่อทีม Dev ต้องใช้เวลาหลายเดือนในการเพิ่ม feature ที่ไม่ซับซ้อน นั่นคือสัญญาณว่า codebase มี technical debt สูงจนการเปลี่ยนแปลงแต่ละอย่างมี ripple effect ที่ควบคุมไม่ได้

Security patch ไม่มีให้แล้ว หรือ vendor หยุดสนับสนุน

ระบบที่ vendor ประกาศ EOL (End of Life) คือ liability ทางกฎหมาย โดยเฉพาะในอุตสาหกรรมที่มีกฎระเบียบ เช่น ธนาคารและประกัน ที่ต้องผ่าน audit ทุกปี

หา Developer ที่รู้ระบบได้ยากขึ้นเรื่อยๆ

ถ้า knowledge อยู่กับคน 1–2 คน และเมื่อเขาลาออกหรือเกษียณแล้วองค์กรไม่รู้จะทำอย่างไร นี่คือ single point of failure ที่อันตรายมาก

ต้นทุน maintain เพิ่มขึ้นทุกปีแต่ value ไม่เพิ่ม

เมื่อค่า maintain และค่า firefighting สูงกว่าค่า development ใหม่ องค์กรกำลังจ่ายค่า "ดูแลหนี้" โดยไม่ได้สร้างสินทรัพย์ใหม่ — นี่คือสัญญาณที่ชัดเจนที่สุด

ไม่สามารถ integrate กับ partner หรือ platform ใหม่ได้

ในยุค API economy ระบบที่ไม่มี modern API หรือมี integration แบบ point-to-point ที่เปราะบาง จะเป็นอุปสรรคต่อ digital ecosystem ทั้งหมดขององค์กร

มี bug ที่ "รู้ว่ามี" แต่แก้ไม่ได้

เมื่อทีมรู้ว่ามีปัญหา แต่กลัวที่จะแตะโค้ดเพราะไม่รู้ว่าจะ break อะไร แสดงว่าระบบขาด test coverage และ architecture ที่ดี — สัญญาณว่า maintainability ต่ำมาก

ต้องใช้ process manual เพื่อ workaround ข้อจำกัดของระบบ

เมื่อพนักงาน export Excel แล้วนำไป import อีกระบบ หรือมี "step พิเศษ" ที่ต้องทำทุกเดือนเพราะระบบทำเองไม่ได้ นั่นคือ technical debt ที่กำลังกลายเป็น operational cost

ระบบกลายเป็น "black box" ที่ไม่มีใครเข้าใจทั้งหมด

ถ้าไม่มีใครในองค์กรสามารถ explain ได้ว่าระบบทำงานอย่างไรตั้งแต่ต้นจนจบ นั่นหมายถึง business logic ที่สำคัญกำลังอยู่ในความเสี่ยงสูง


5 กลยุทธ์การ Migrate — เลือกให้เหมาะกับความเสี่ยง

ไม่มีกลยุทธ์ที่ "ดีที่สุด" สำหรับทุกสถานการณ์ การเลือกกลยุทธ์ขึ้นอยู่กับความซับซ้อนของระบบ, tolerance ต่อความเสี่ยง, budget, และเวลาที่มี
กลยุทธ์ที่ 1 — แนะนำสำหรับระบบซับซ้อน
Strangler Fig Pattern — ค่อยๆ แทนที่ทีละส่วน
Risk ต่ำสุด

ตั้งชื่อตามต้นไม้ที่ค่อยๆ เติบโตล้อมต้นเดิมจนแทนที่ในที่สุด ระบบใหม่และเก่าทำงานคู่กัน โดย route traffic ผ่าน facade layer ค่อยๆ ย้าย functionality ทีละ module จนในที่สุดระบบเก่าก็ถูกปลด — วิธีนี้ให้ business continuity ตลอดเวลา

เหมาะกับ
Monolith ขนาดใหญ่, Core banking, ERP, ระบบที่ downtime แม้แต่ชั่วโมงเดียวก็ยอมไม่ได้
ข้อควรระวัง
ใช้เวลานาน (1–3 ปี), ต้องดูแล 2 ระบบพร้อมกัน, ต้องการ data sync strategy ที่ดี
Low RiskAPI FacadeIncrementalBusiness Continuity
กลยุทธ์ที่ 2
Lift and Shift (Rehost) — ย้ายขึ้น Cloud โดยไม่แก้โค้ด
เร็วที่สุด

ย้าย application ไปรันบน cloud infrastructure โดยไม่แก้โค้ด เร็วที่สุดและเสี่ยงน้อยที่สุดในระยะสั้น แต่ไม่ได้แก้ปัญหา technical debt — ได้แค่ประโยชน์จาก cloud ด้าน availability และ management มักเป็น "first step" ก่อนจะ optimize ในขั้นต่อไป

เหมาะกับ
ระบบที่ต้องการออกจาก on-premise เร็ว, มี deadline ชัดเจน, หรือต้องการลดค่า hardware ก่อน
ข้อควรระวัง
ไม่ได้แก้ technical debt, อาจแพงกว่า on-premise ถ้าไม่ optimize, ต้อง plan ขั้นต่อไปเสมอ
IaaS MigrationVM to CloudFast ROI
กลยุทธ์ที่ 3
Re-platform — ย้ายพร้อม Optimize บางส่วน
สมดุลดีที่สุด

ย้ายไป cloud พร้อมกับ optimize บางส่วนของ architecture โดยไม่ต้อง rewrite ทั้งหมด เช่น เปลี่ยนจาก self-managed DB เป็น managed RDS, เปลี่ยน on-premise cache เป็น ElastiCache หรือเปลี่ยน deployment จาก VM เป็น containers — ได้ประโยชน์ cloud โดยใช้ effort น้อยกว่า refactor เต็มรูปแบบ

เหมาะกับ
Application ที่ architecture ยังพอ OK แต่ใช้ infrastructure แบบเก่า, ต้องการ managed services
ผลลัพธ์
ลดค่า ops, เพิ่ม availability, ลด maintenance burden โดยไม่ต้อง rewrite ทั้งหมด
Managed ServicesContainerizationModerate Effort
กลยุทธ์ที่ 4
Refactor / Re-architect — สร้างใหม่ทีละส่วนอย่างมีแผน
Investment สูง

เขียนส่วนที่สำคัญขึ้นมาใหม่โดยรักษา business logic เดิม แต่เปลี่ยน architecture เช่น แยก monolith เป็น microservices, เปลี่ยน database paradigm, หรือ redesign data model ใช้เวลาและต้นทุนสูงกว่า แต่ได้ระบบที่ maintainable และ scalable จริงๆ ในระยะยาว

เหมาะกับ
Core system ที่เป็น competitive advantage, ต้องการ scale สูง, หรือ business logic ที่ต้องเปลี่ยนบ่อย
ข้อควรระวัง
ต้องมี requirement ที่ชัดเจนก่อนเริ่ม, ใช้เวลานาน, ต้องมี test suite ที่ครอบคลุม
MicroservicesDDDHigh ROI ระยะยาว
กลยุทธ์ที่ 5 — ใช้ด้วยความระมัดระวัง
Big Bang Rewrite — เขียนใหม่ทั้งหมดพร้อมกัน
Risk สูงสุด

กลยุทธ์ที่ล้มเหลวมากที่สุด แต่ก็เป็นที่นิยมในองค์กรที่ต้องการ "เริ่มต้นใหม่" การ rewrite ทั้งหมดพร้อมกันใช้เวลานาน ระหว่างนั้น business ยังเดินหน้า requirement เปลี่ยน และระบบใหม่ที่ deliver มักพบว่า feature บางส่วนขาดหายไปเพราะไม่มีใครรู้ว่ามีอยู่ใน legacy

ควรใช้เมื่อ
ระบบขนาดเล็กมาก, domain เข้าใจดีทุกมิติ, สามารถ run ทั้งสองระบบคู่กันได้ระยะหนึ่ง
หลีกเลี่ยงเมื่อ
Core system ขนาดใหญ่, Business logic ที่ไม่มีใครรู้ครบ, ไม่มี test coverage บน legacy
High RiskSmall Systems OnlyAvoid for Core

จะเริ่มต้นอย่างไร? — 4 ขั้นตอนแรกที่ต้องทำ

ขั้นตอนที่ 1

System Inventory & Assessment

รู้จักระบบตัวเองก่อน — map ออกมาว่ามีระบบอะไรบ้าง, แต่ละระบบมี dependency อะไร, business criticality ระดับไหน, และ technical debt มากแค่ไหน

Dependency MappingTechnical Debt ScoreBusiness Impact
ขั้นตอนที่ 2

Prioritize ด้วย Risk vs. Value Matrix

ไม่ต้อง migrate ทุกระบบพร้อมกัน เลือกเริ่มจากระบบที่ pain สูงแต่ complexity ต่ำก่อน เพื่อสร้าง confidence และ build capability ของทีมก่อนรับมือระบบหลัก

Quick Wins FirstRisk MatrixPortfolio Approach
ขั้นตอนที่ 3

Document Business Logic ก่อนเขียนโค้ดใหม่

ความรู้ที่อยู่ใน legacy system (โดยเฉพาะที่ไม่มีใครรู้) ต้อง extract ออกมาก่อน ผ่านการ interview ผู้ใช้, อ่าน code, และทดสอบ edge case ที่ไม่มีเอกสาร

Event StormingDomain Expert InterviewBDD Specification
ขั้นตอนที่ 4

Implement Parallel Run & Gradual Cutover

Run ระบบใหม่และเก่าควบคู่กัน เปรียบเทียบผลลัพธ์ ค่อยๆ ย้าย traffic ทีละส่วน มี rollback plan ที่ชัดเจนทุก phase อย่ากำหนด "cutover date" แบบ hard deadline โดยไม่มีข้อมูล

Shadow ModeFeature FlagsCanary Release
Mistake ที่พบบ่อยที่สุด: migration project ที่ล้มเหลวมักเกิดจากการ underestimate ความซับซ้อนของ business logic ที่อยู่ใน legacy ซึ่งไม่มีใครรู้ครบ การลงทุนเวลาใน discovery phase อย่างน้อย 20–30% ของ project timeline คือความแตกต่างระหว่างการ migrate สำเร็จและการ migrate แล้วต้องเริ่มใหม่

Migration ที่ดีคือ Migration ที่ไม่มีใครสังเกตว่าเกิดขึ้น

เป้าหมายสูงสุดของ legacy migration ไม่ใช่การ "ได้ระบบใหม่" แต่คือการที่ business ยังเดินหน้าต่อได้ระหว่างกระบวนการ และหลังจาก migration เสร็จ ผู้ใช้รู้สึกว่าระบบดีขึ้น ไม่รู้สึกว่าต้อง learn ใหม่ทั้งหมด

Tensora มีประสบการณ์ตรงในการ migrate core banking system, hospital MIS, และ ERP ที่ใช้งานมานานกว่า 15 ปี เราเชื่อว่า migration ที่ดีต้องเริ่มจาก understanding ธุรกิจก่อน architecture เสมอ

กำลังประเมิน legacy system ที่ต้องการ modernize?

พูดคุยกับทีม Tensora →