System Integration
Việc nối các hệ thống rời rạc lại để dữ liệu chảy qua nhau mà không cần người ngồi copy paste. Phần khó nằm ở thoả thuận nghiệp vụ giữa hai bên chứ không ở đoạn code.
Định nghĩa
Doanh nghiệp nào chạy tới năm thứ mười cũng có một mớ hệ thống mua ở các thời điểm khác nhau, của các nhà cung cấp khác nhau, và không cái nào biết cái nào tồn tại. Tích hợp là công việc nối chúng lại. Nghe kỹ thuật, nhưng phần tốn thời gian nhất lại là thống nhất xem một khách hàng được định nghĩa thế nào ở mỗi bên.
Tích hợp hỏng hiếm khi vì code sai. Nó hỏng vì hai bên hiểu khác nhau về cùng một trường dữ liệu.
Các kiểu hay dùng
| Kiểu | Cách chạy | Hợp cảnh nào | Điểm yếu |
|---|---|---|---|
| Trao đổi file theo lô | Xuất CSV/XML, đẩy qua SFTP, bên kia đọc theo lịch | Hệ thống cũ, khối lượng lớn, không cần tức thì | Trễ tới hàng giờ, khó xử lý lỗi từng dòng |
| Gọi API trực tiếp | Bên cần gọi sang lấy hoặc đẩy dữ liệu | Tra cứu, tạo giao dịch cần phản hồi ngay | Phụ thuộc bên kia còn sống |
| Webhook | Bên có dữ liệu bắn khi có sự kiện | Báo trạng thái, thanh toán | Có thể trùng hoặc lọt gói |
| Hàng đợi tin nhắn | Đẩy vào queue, bên kia đọc dần | Lưu lượng lớn, chịu được độ trễ vài giây | Cần hạ tầng và đội vận hành biết việc |
| Đọc thẳng cơ sở dữ liệu | Nối vào database bên kia | Gần như luôn là phương án tệ | Vỡ ngay khi bên kia đổi cấu trúc bảng |
Kiểu đọc thẳng cơ sở dữ liệu vẫn xuất hiện trong đời thực, thường vì gấp. Nếu buộc phải làm, hãy ghi vào tài liệu là nợ kỹ thuật kèm ngày trả nợ.
BA phải chốt gì trong tài liệu tích hợp
- Bối cảnh nghiệp vụ: nối để làm gì, ai hưởng lợi, không có nó thì hiện tại người ta xoay xở ra sao.
- Sơ đồ luồng: hệ thống nào khởi xướng, đi qua đâu, dừng ở đâu. Một hình vẽ trên draw.io tiết kiệm ba trang chữ.
- Bảng mapping trường: tên trường bên gửi, tên trường bên nhận, kiểu dữ liệu, độ dài, bắt buộc hay không, quy tắc chuyển đổi. Ví dụ giới tính bên A là
M/F, bên B là1/2, và bên A có giá trị rỗng còn bên B thì không cho phép. - Tần suất và khối lượng: bao nhiêu bản ghi mỗi ngày, cao điểm bao nhiêu.
- Xử lý lỗi: thử lại mấy lần, bản ghi lỗi đi đâu, ai được thông báo, nghiệp vụ chạy tiếp hay dừng.
- Đối soát: mỗi ngày so cái gì với cái gì, lệch thì ai xử lý.
- Bảo mật: xác thực bằng gì, dữ liệu cá nhân có bị đẩy qua không, có phải che bớt trường nhạy cảm không.
Ví dụ thực tế
Ngày thứ ba sau go-live, phía thẩm định gọi sang: có hồ sơ khách hàng tên bị cắt cụt. Tích hợp này nối hệ thống bán hàng với hệ thống thẩm định của một công ty bảo hiểm, 1.240 hồ sơ mỗi ngày, mapping làm cẩn thận, SIT chạy sạch. Nguyên nhân hoá ra rất tầm thường: trường họ tên bên bán hàng dài 100 ký tự, bên thẩm định chỉ 50, và tài liệu có ghi độ dài nhưng không ai nghĩ tới trường hợp tên kèm học vị, thêm dấu tiếng Việt được mã hoá dài hơn.
Việc sửa mất 30 phút. Việc rà lại 3.720 hồ sơ đã trôi qua và liên hệ khách để xác nhận lại tên mất hai tuần của bốn người.
Lỗi hay gặp
- Không có môi trường test của bên đối tác, kiểm thử bằng dữ liệu tự bịa rồi tự tin.
- Bỏ qua múi giờ. Bên trả về giờ UTC, bên mình hiểu là giờ Việt Nam, báo cáo cuối ngày lệch 7 tiếng.
- Không thống nhất khoá định danh. Bên A dùng số điện thoại, bên B dùng mã khách, và không ai giữ bảng ánh xạ giữa hai cái.
- Quên tình huống bên kia bảo trì. Cần biết trước lịch bảo trì và hành vi hệ thống mình trong lúc đó.
- Coi tích hợp là việc của dev nên không viết tài liệu, tới lúc bạn dev đó nghỉ việc thì không ai biết luồng chạy thế nào.
Trong buổi họp đầu tiên với đối tác, xin luôn ba thứ — tài liệu API, tài khoản môi trường test, và tên một người có thể trả lời câu hỏi kỹ thuật. Thiếu thứ ba thì hai thứ đầu cũng chẳng để làm gì.
Liên quan
Chia sẻ
Thông tin
- Danh mục
- 🏢 Enterprise Systems
- Cập nhật
- 15/08/2026
Đóng góp bởi
Phan Minh Hoàng