Câu chuyện của AI và COBOL

Hồi Tết tôi có lướt thấy tin từ Anthropic về việc mô hình Claude của họ bắt đầu tham gia sâu vào việc bảo trì và hiện đại hóa mã nguồn COBOL. Đây là một tin tức thực sự quan trọng đối với giới công nghệ, bởi COBOL là hệ thống huyết mạch đang vận hành nền tài chính toàn cầu. Tôi đã định viết bài này sớm hơn nhưng kẹt ăn tết. Nếu bạn chưa đọc qua bài đó, có thể đọc nó tại đây: How AI helps break the cost barrier to COBOL modernization.

Với nhiều anh em dev, COBOL nghe như một cái tên từ thời tiền sử, nhưng thực tế nó lại đang gánh vác cả nền tài chính toàn cầu. Dù đã hơn 60 tuổi, nhưng khoảng 95% các lần bạn quẹt thẻ ATM hay các giao dịch ngân hàng (core-banking) vẫn đang chạy trên những dòng code này. Ước tính có tới 800 tỷ dòng code COBOL đang vận hành. Nếu COBOL ngưng chạy, thế giới sẽ không thể rút tiền hay thanh toán bất cứ thứ gì.

Độ phức tạp của COBOL nằm ở chỗ nó cực kỳ cứng nhắc và thiếu cấu trúc hiện đại (ví dụ như function, object). Một ví dụ điển hình là quy tắc 80 cột. Bạn chỉ cần gõ lùi vào một dấu cách hay viết quá cột thứ 72 là chương trình lỗi. Kinh khủng hơn, COBOL không có các module hay thư viện tách biệt như bây giờ. Một thay đổi nhỏ ở dòng code số 1.000 có thể làm sập một tính năng ở dòng số 1.000.000. Đó là lý do tại sao các dự án hiện đại hóa COBOL bằng sức người thường có tỉ lệ thất bại cao

Để ví dụ cho bạn sự khủng khiếp của code COBOL, tôi sẽ ví dụ về tính toán số dư tài khoản kèm lãi suất (code này tôi kêu Claude viết chứ bản thân tôi cũng không biết COBOL)

IDENTIFICATION DIVISION.
       PROGRAM-ID. TINH-LAI-SUAT.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  KHACH-HANG.
           05 HO-TEN           PIC X(30) VALUE 'NGUYEN VAN A'.
           05 SO-DU            PIC 9(07)V99 VALUE 1500.50.
           05 LAI-SUAT         PIC 9(02)V99 VALUE 05.25.
       01  KET-QUA.
           05 TIEN-LAI         PIC 9(07)V99.
           05 TONG-CONG        PIC 9(07)V99.
       01  BIEN-DEM            PIC 9(02) VALUE 01.

       PROCEDURE DIVISION.
       BEGIN-CALC.
           DISPLAY "KHACH HANG: " HO-TEN.
           
           PERFORM CALCULATE-LOGIC 12 TIMES.
           
           STOP RUN.

       CALCULATE-LOGIC.
           COMPUTE TIEN-LAI = SO-DU * (LAI-SUAT / 100 / 12).
           ADD TIEN-LAI TO SO-DU.
           DISPLAY "THANG " BIEN-DEM " - SO DU: " SO-DU.
           ADD 1 TO BIEN-DEM.

Đoạn này nếu code trong Python tôi nghĩ nó sẽ tầm 5 dòng thôi. Bao nhiêu đây bạn cũng đã có thể hiểu được vì sao rất ít Dev hiện nay biết COBOL, nói gì tới maintain hệ thống COBOL.

Thực tế, quyền kiểm soát di sản khổng lồ này đang nằm trong tay hai thế lực chính. Một bên là các nhà sản xuất phần cứng như IBM đơn vị cung cấp các máy chủ Mainframe, môi trường duy nhất mà COBOL có thể vận hành ổn định. Bên còn lại là các đơn vị cung cấp dịch vụ outsource lớn như Infosys hay tại Việt Nam là FPT. Đội ngũ này sở hữu những chuyên gia COBOL lâu năm, những người hiểu rõ từng chi tiết của hệ thống. Tuy nhiên, thách thức lớn nhất hiện nay là lực lượng nhân sự này đang dần nghỉ hưu, trong khi các lập trình viên trẻ hầu như không còn mặn mà với việc học một ngôn ngữ có cấu trúc lỗi thời. Điều này dẫn đến một cuộc khủng hoảng nhân sự, buộc các ngân hàng phải chi trả mức lương rất cao để duy trì những chuyên gia hiếm hoi còn sót lại.

Nhiều người đặt câu hỏi tại sao không chuyển đổi toàn bộ sang Java hay Python. Vấn đề nằm ở độ phức tạp cực kỳ lớn của COBOL. Đây là ngôn ngữ thiếu các cấu trúc hiện đại, không có module tách biệt thiếu tài liệu hướng dẫn đi kèm. Mọi logic nghiệp vụ được bồi đắp qua hàng thập kỷ đan xen vào nhau chặt chẽ, dẫn đến việc chỉ cần một thay đổi nhỏ cũng có thể gây ra lỗi hệ thống nghiêm trọng. Minh chứng điển hình là Ngân hàng Commonwealth Úc (CBA) đã phải mất 5 năm và chi ra hơn 1 tỷ USD chỉ để chuyển đổi hệ thống từ COBOL sang nền tảng mới.

Commonwealth Bank Doubles Down on Core Transformation
(Image by AFP/Getty Images via @daylife) Constrained by 50-year-old systems and confronted with an imminent wave of untraditional competitors, Australia’s Commonwealth Bank has reached the halfway point in its sweeping $1.1-billion transformation aimed at enhancing customer experiences and creating more tech-driven products and services. Three and a half years ago, Commonwealth—which just reported record annual [...]

Đây là lúc AI như Claude thể hiện vai trò của mình. Với khả năng xử lý ngữ cảnh lớn, AI có thể phân tích toàn bộ cấu trúc hệ thống, tự động hiểu các quy tắc nghiệp vụ ngầm định và chuyển đổi chúng sang kiến trúc hiện đại. Theo báo cáo của Anthropic, AI giúp giảm tới 80% thời gian và chi phí cho giai đoạn phân tích hệ thống. Điều này trực tiếp đe dọa đến mô hình kinh doanh thâm dụng nhân công của các công ty outsource lớn. Lâu nay, các dự án bảo trì hệ thống cũ kéo dài nhiều năm là nguồn thu ổn định nhờ tính phí theo giờ công của lập trình viên. Khi AI có thể xử lý công việc đó trong vài tuần, luật chơi sẽ thay đổi hoàn toàn, buộc các doanh nghiệp như IBM hay FPT phải thay đổi chiến lược để không bị đào thải. Những biến động đó đã xuất hiện ngay lập tức và thể hiện qua giá trị cổ phiếu của IBM và FPT.

Đối với những dev như tôi, sự phát triển này mang lại cả sự lo lắng lẫn sự phấn khích. Lo lắng vì những kỹ năng mà chúng ta nghĩ là khó thay thế đang dần bị AI chinh phục. Nhưng thú vị là ở chỗ, chúng ta đang chứng kiến AI giải quyết những bài toán hóc búa nhất. Thay vì chỉ viết mã, vai trò của lập trình viên sẽ chuyển dịch sang việc giám sát và điều phối AI để quản trị những hệ thống phức tạp hơn. Việc thích nghi với sự thay đổi này không còn là lựa chọn, mà là yêu cầu bắt buộc để tồn tại trong thời đại công nghệ mới.