<aside>
©️ IT: Từ A tới Á cho người ngoài ngành by @Rose Trinh
</aside>
Ngành IT luôn chứng kiến những thay đổi chóng mặt về công nghệ. Dù có nhiều giải pháp hiện đại, không phải lúc nào các doanh nghiệp cũng nhanh chóng chuyển đổi. Nhiều công ty vẫn giữ lại những phần mềm cũ để đảm bảo hoạt động liên tục và không làm gián đoạn quy trình kinh doanh.

Làm trong ngành IT này, hẳn là bạn đã phải ít nhất một lần nghe thấy khái niệm “legacy system”, nhất là những công ty outsource thì còn có thể nhận được request đập đi xây lại legacy systems. Vậy legacy system là gì? Legacy system là những phần mềm hoặc hệ thống đã lỗi thời nhưng vẫn phục vụ nhu cầu thiết yếu của doanh nghiệp. Kiểu như tới tuổi về hưu rồi những vẫn phải cân con cháu.
- Nhà cung cấp có thể là không còn hỗ trợ phần mềm. Ví dụ như nhiều tổ chức vẫn sử dụng Windows XP, mặc dù đã ngừng hỗ trợ từ năm 2014, do sự ổn định và thân thiện với người dùng của nó.
- hoặc khi công nghệ trở nên lỗi thời. Ví dụ như COBOL một ngôn ngữ lập trình được phát triển từ những năm 1960, vẫn được sử dụng trong nhiều hệ thống ngân hàng và bảo hiểm. Tuy nhiên, việc tìm kiếm lập trình viên COBOL ngày càng khó khăn, vì nhiều người trẻ không được đào tạo về ngôn ngữ này, khiến việc duy trì và cập nhật hệ thống trở nên khó khăn.
Do bất kỳ lý do nào thì, chi phí bảo trì của legacy system tăng lên theo thời gian, và bất kỳ cách giải quyết nào được áp dụng để đạt được chức năng mới có thể không hoạt động như mong muốn.
Vậy tại sao các doanh nghiệp vẫn sử dụng legacy system? Một phần là do những hệ thống này đã được tích hợp sâu vào quy trình làm việc và văn hóa công ty. Việc chuyển đổi sang một hệ thống mới không chỉ tốn kém về tài chính mà còn đòi hỏi thời gian và công sức để đào tạo nhân viên. Bên cạnh đó, có những chức năng mà legacy system cung cấp vẫn còn phù hợp với nhu cầu hiện tại của doanh nghiệp.
Tuy nhiên, việc tiếp tục sử dụng legacy system có thể gây cản trở cho sự phát triển và đổi mới trong tương lai. Vì vậy, việc đánh giá và lên kế hoạch cho quá trình chuyển đổi công nghệ là điều cần thiết, giúp tổ chức không chỉ duy trì hoạt động mà còn phát triển bền vững trong môi trường cạnh tranh hiện nay.

Legacy System Modernization: When and How to Do It Right | Euristiq
Dưới đây là một số chiến lược phổ biến để đối phó với legacy systems:
- Giữ lại hoặc đóng gói (Retain or encapsulate):
- Giữ nguyên phần mềm cũ và kết nối với các ứng dụng khác thông qua API. Thay vì viết lại hoàn toàn, team dev chỉ cần tạo một giao diện (API) để các hệ thống khác có thể giao tiếp với hệ thống cũ. Cách tiếp cận này giúp bảo toàn các chức năng hiện tại trong khi vẫn mở ra cơ hội tích hợp và nâng cấp dễ dàng hơn.
- Triển khai lại (Rehosting):
- Chuyển ứng dụng sang một hạ tầng mới (như đám mây) mà không cần thay đổi mã nguồn hay chức năng. Lý do rời lên cloud thì có thể do nhiều lý do. Như việc cloud đi kèm với các công cụ quản lý hiện đại, giúp việc theo dõi và quản lý ứng dụng trở nên dễ dàng hơn.
- Chuyển nền tảng (Re-platforming):
- Di chuyển mã nguồn sang nền tảng mới nhưng vẫn giữ nguyên cấu trúc và chức năng của nó. Bạn chỉ cần sửa đổi một chút để nó hoạt động tốt hơn, dễ dàng tăng cường tài nguyên khi cần thiết, giúp ứng dụng hoạt động mượt mà hơn.
- Tái cấu trúc (Refactoring):
- Tối ưu hóa mã nguồn, làm sạch các phần không cần thiết để giảm thiểu các vấn đề trong ứng dụng cũ. Giống như dọn dẹp ngôi nhà của bạn để nó gọn gàng hơn.
- Tái kỹ thuật (Re-engineering):
- Thay đổi đáng kể mã nguồn để chuyển sang một kiến trúc mới với khả năng tốt hơn. Đây là bước tiếp theo của tái cấu trúc.
- Tái xây dựng (Rebuild):
- Viết lại ứng dụng từ đầu nhưng vẫn giữ nguyên các yêu cầu và chức năng quan trọng. Đây là cách tạo ra một ứng dụng hoàn toàn mới (To-Be), còn Legacy system sẽ là As-Is, và lúc này có thể cần tới migration.
Tham khảo bài về migration: Migration: dump data, dual-write…
- Thay thế (Replace):
- Khi hệ thống cũ không còn phù hợp, vì vậy công ty quyết định loại bỏ và thay thế bằng một ứng dụng mới, phù hợp với nhu cầu hiện tại.