BAHUB.VN
Glossary

System Integration

Enterprise SystemsTích hợp hệ thống

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ểuCách chạyHợ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ịchHệ 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ếpBên cần gọi sang lấy hoặc đẩy dữ liệuTra cứu, tạo giao dịch cần phản hồi ngayPhụ thuộc bên kia còn sống
WebhookBên có dữ liệu bắn khi có sự kiệnBáo trạng thái, thanh toánCó thể trùng hoặc lọt gói
Hàng đợi tin nhắnĐẩy vào queue, bên kia đọc dầnLưu lượng lớn, chịu được độ trễ vài giâyCần hạ tầng và đội vận hành biết việc
Đọc thẳng cơ sở dữ liệuNối vào database bên kiaGầ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

  1. 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.
  2. 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ữ.
  3. 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.
  4. 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.
  5. 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.
  6. Đối soát: mỗi ngày so cái gì với cái gì, lệch thì ai xử lý.
  7. 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ì.