Serverless Transactions Serve Customers
Bài tóm tắt CapitalOne 2017 4. Điều chỉnh Độ khó: Trung bình
CapitalOne · 2017 · 4. Điều chỉnh · Độ khó: Trung bình — bài gốc
Bài của một VP Engineering, ít số liệu; mô tả hướng đi và bài học, không nêu kết quả đo được.
Bối cảnh
- Core banking chạy trên mainframe nguyên khối: chu kỳ release dài, giá mỗi GB và mỗi MIPS cao, scale phải nâng cấp đắt, capacity mua theo đỉnh, phụ thuộc chằng chịt nên khó thử cái mới.
- Mọi thay đổi trên mainframe phải phân tích một mạng phụ thuộc sâu, nên không thể chuyển hết một lần.
Thay đổi chính
- Chọn phần để chuyển trước: khoảng 80% lưu lượng của hệ cũ là đọc giao dịch. Đích đầu tiên: một hệ trên cloud chỉ phục vụ traffic đọc, được mainframe nạp dữ liệu theo batch và gần real-time.
- CQRS: mainframe vẫn giữ mô hình ghi; cloud giữ mô hình đọc riêng (DynamoDB). Cái giá là phải giữ hai mô hình khớp nhau, tức chấp nhận eventual consistency.
- Thành phần serverless: Lambda bắt file giao dịch từ mainframe, theo dõi trạng thái file, đọc và nạp vào DynamoDB, chỉnh WCU/RCU động; một hạ tầng messaging giữ hai bên đồng bộ gần real-time; API
getTransactionsmới trên cloud; rồi chuyển traffic của mọi kênh sang. - Monitoring nghiệp vụ là công dân hạng nhất: CloudWatch cho log, SNS cho alert, Elastic/Kibana cho dashboard real-time.
Vì sao
- Tách phần đọc chiếm đa số tải ra khỏi mainframe giảm tải và chi phí mà không phải đụng vào logic ghi phức tạp; traffic đọc chuyển dần được theo kênh.
Bài học cho SWE (theo CapitalOne)
- Biết dữ liệu của mình: file từ mainframe đã sắp theo khoá chính, nạp tuần tự làm DynamoDB bị throttle vì hot partition. Sửa bằng cách xáo trộn dữ liệu trong file trước khi nạp để ghi rải đều nhiều partition song song.
- Luôn test ở quy mô thật: test nạp ban đầu không bị throttle; chỉ khi nạp ở quy mô lớn mới lộ hot partition, và họ phải xem lại thiết kế key.
- Biết access pattern từ trước: key của bảng và index trong DynamoDB không đổi được sau khi tạo; thiết kế sai thì phải tạo lại bảng và nạp lại toàn bộ.
Liên quan
- CapitalOne 2021 (bốn năm sau, một team khác chuyển system of record sang DynamoDB Global Tables) · CapitalOne 2020
- Migration không downtime · Hot partition và thundering herd
#Mainframe#Read offload#CQRS#Serverless#Lambda#DynamoDB#Batch + near real-time sync#Hot partition#Access pattern#Monitoring
Được nhắc tới trong
Công ty (1)