18 triệu tài khoản đã dạy chúng tôi điều gì về việc rời mainframe
Một cuộc chuyển đổi không gián đoạn chủ yếu là chuyện sổ sách. Đây là cách chúng tôi đưa sổ cái lõi rời khỏi mainframe mà không ai phải ngừng giao dịch cuối tuần.
Bắt đầu từ sổ cái, không phải ngôn ngữ
Viết lại hàng chục năm mã COBOL là phần việc dễ thấy, nên mọi ước lượng đều đổ vào đó. Nhưng rủi ro nằm ở chỗ yên tĩnh hơn: chính sổ cái. Số dư là thứ duy nhất ngân hàng không thể ước chừng, và mọi quy tắc chạm tới nó — làm tròn, ngày giá trị, thứ tự đảo bút toán — thường được mã hóa hai lần: một lần trong mã nguồn, một lần trong thói quen của những người vận hành. Sáu tuần đầu tiên chúng tôi không viết một dòng mã sản xuất nào, chỉ trích xuất các quy tắc đó thành những bài kiểm thử chạy được. Sau đó, mọi thứ đều có thước đo.
Chạy song song cho tới khi các con số khớp nhau
Sổ cái mới chạy song song trong bốn tháng. Mỗi bút toán được ghi vào cả hai hệ thống, và một tác vụ đối soát so sánh chúng theo từng tài khoản mỗi đêm, ghi nhận mọi chênh lệch như một lỗi. Đêm đầu tiên cho ra khoảng mười một nghìn điểm lệch. Gần như tất cả đều xuất phát từ một lỗi duy nhất: quy tắc làm tròn được áp dụng ở một điểm khác trong giao dịch. Đó chính là giá trị của việc chạy song song — nó biến nỗi lo mơ hồ về di chuyển hệ thống thành một con số lỗi giảm dần mỗi tuần, và cho câu trả lời trung thực cho câu hỏi "chúng ta đã sẵn sàng chưa".
Chuyển đổi vào giờ yên tĩnh
Bản thân việc chuyển đổi mất chín phút. Vì cả hai hệ thống đã cùng ghi dữ liệu suốt nhiều tháng, đây không phải là một cuộc di chuyển dữ liệu mà chỉ là thay đổi xem hệ thống nào trả lời các truy vấn đọc. Chúng tôi chuyển lưu lượng theo từng giai đoạn, giữ mainframe sẵn sàng ghi thêm ba tuần nữa, và chưa từng phải dùng đến. Kết quả là chi phí vận hành giảm 40% và dư địa thông lượng tăng khoảng sáu lần, nhưng con số đáng nhắc lại trong nội bộ là con số còn lại: không có cửa sổ bảo trì, và không một khách hàng nào bị yêu cầu quay lại vào thứ Hai.