Tích hợp API và kết nối hệ thống

Khi hai hệ thống phải trao đổi dữ liệu mà không có người ở giữa, cần viết một tích hợp. Việc đó xuất hiện trên website, trong chương trình Windows và trong tiện ích Office — nhưng ở đâu cũng là cùng một công việc và mang cùng một rủi ro: một nửa mã phụ thuộc vào hệ thống của người khác, thứ bạn không kiểm soát và có thể thay đổi mà không báo trước. Vì vậy đây là dịch vụ riêng, có phân tích riêng và giá riêng.

Phía bên kia

Một nửa công việc không nằm trong tay bạn

Mã do tôi viết thì tôi sửa được trong một giờ. Dịch vụ ở phía bên kia có quy tắc riêng, hạn mức riêng và sự cố riêng, và ở đó thì phải chờ. Mọi thứ tiếp theo trên trang này đều được viết vì câu đó.

Ở khắp nơi

Xuyên suốt mọi việc khác tôi làm

Cùng một tích hợp được đưa vào website, vào chương trình Windows hoặc vào tiện ích Office. Chỉ có màn hình xung quanh là khác, còn khối lượng công việc thì như nhau.

Bằng chứng

Nhìn thấy được đã gửi gì

Mỗi tích hợp đều có nhật ký: đã gửi gì, nhận về gì và vào lúc nào. Không có nó thì mọi tranh cãi đều thiếu bằng chứng; có nó thì trong một phút đã thấy lỗi thuộc về bên nào.

Tôi làm gì

Kết nối với dịch vụ bên ngoài

Phần mềm của bạn gọi phần mềm của người khác: thanh toán thẻ, dịch vụ kế toán, đơn vị vận chuyển, bảng giá của nhà cung cấp, SMS hoặc email. Tôi viết lệnh gọi, xử lý phản hồi, cách hành xử khi không có phản hồi, và nhật ký để kiểm tra về sau.

Đồng bộ hai chiều

Hai hệ thống giữ cùng một dữ liệu và cả hai đều sửa nó — website và ERP, cửa hàng và kho, CRM và kế toán. Phần khó nhất nằm ở câu hỏi thay đổi của bên nào mới hơn và phải làm gì khi cả hai cùng sửa một bản ghi.

Sửa tích hợp đã ngừng chạy

Nó chạy nhiều năm, rồi phía bên kia ngừng phiên bản cũ, đổi cách đăng nhập hoặc áp hạn mức số lệnh gọi. Tôi đi vào mã có sẵn, tìm ra điều gì đã thay đổi và đưa kết nối trở lại, bất kể ai là người đã viết.

API của riêng bạn

Khi phần mềm của người khác cần lấy dữ liệu từ bạn — đối tác, ứng dụng, website hay hệ thống của khách hàng — tôi xây API cho bạn: khóa truy cập, phân quyền, hạn mức lệnh gọi và tài liệu để lập trình viên bên kia làm việc mà không phải gọi điện.

Thanh toán và hóa đơn điện tử

Thanh toán thẻ, hoàn tiền và gói thuê bao, cũng như gửi lên hệ thống hóa đơn điện tử. Đây là trường hợp đặc biệt vì lỗi làm mất tiền chứ không chỉ mất thời gian, nên phải có cơ chế thử lại mà không thu tiền hai lần cho cùng một khoản.

Chuyển và nhập dữ liệu

Chuyển một lần từ hệ thống cũ sang hệ thống mới, hoặc nhập định kỳ bảng giá và tồn kho từ nhà cung cấp. Khi công việc chủ yếu nằm trong chính cơ sở dữ liệu — lược đồ, chỉ mục, làm sạch — thì đó là công việc với cơ sở dữ liệu.


Vì sao đây là việc riêng, không phải một phần của việc xây dựng

Khi tôi làm màn hình, cơ sở dữ liệu hay báo cáo, tôi biết mọi thành phần và sửa được tất cả. Với tích hợp thì không như vậy, nên việc ước tính, kiểm thử và tính phí đều khác. Sáu điều sau xuất hiện trong hầu hết mọi dự án loại này:

  • Tài liệu không khớp thực tế. Trường dữ liệu mà theo hướng dẫn luôn tồn tại đôi khi lại trống, còn ví dụ trong tài liệu thì trả về lỗi. Phần đầu của công việc là xác định dịch vụ thực sự hành xử thế nào.
  • Đăng nhập và khóa. Mật khẩu, token hết hạn, cửa sổ OAuth cần người bấm, chứng chỉ có thời hạn. Mỗi cách gia hạn một kiểu và cách nào cũng có thể làm đứt kết nối lúc ba giờ sáng.
  • Hạn mức số lệnh gọi. Các dịch vụ đếm lệnh gọi và hoặc tính tiền hoặc từ chối. Vì thế cần hàng đợi và ghi nhớ những gì đã lấy, thay vì mỗi lần tải lại toàn bộ.
  • Phía bên kia thay đổi không báo trước. Một phiên bản bị ngừng, một trường bị đổi tên, điều kiện siết lại. Tích hợp được viết sao cho điều đó lộ ra ngay và ở một chỗ, chứ không phải ba tháng sau qua khiếu nại của khách.
  • Lỗi lúc có lúc không. Dịch vụ sập hai phút. Công việc không được dừng mà cũng không được chạy hai lần — vì vậy cần thử lại và quy tắc một đơn hàng không thể gửi đi hai lần.
  • Môi trường thử không phải môi trường thật. Dịch vụ thử nghiệm thường chấp nhận thứ mà bản thật từ chối. Một phần công việc chỉ có thể khép lại trên dữ liệu và tài khoản thật của bạn.

Tích hợp trí tuệ nhân tạo là một trường hợp đặc biệt của cùng câu chuyện: đó cũng là kết nối tới dịch vụ bên ngoài, chỉ khác ở chỗ câu trả lời cho cùng một câu hỏi không nhất thiết giống nhau hai lần, nên nó có trang riêng và phân tích riêng.


Công việc diễn ra thế nào

  • Bạn cho biết cần nối hai hệ thống nào và điều gì nên xảy ra — ví dụ „khi khách thanh toán trên website, hóa đơn phải vào phần mềm kế toán".
  • Phân tích API của bên kia. Tôi đọc tài liệu, gọi thử bằng tài khoản của bạn và xác định điều gì là khả thi. Đây là phần duy nhất không thể bỏ qua, vì thiếu nó thì không biết giá cũng không biết công việc có lời giải hay không.
  • Báo giá cho phạm vi đã thỏa thuận. Sau phân tích, bạn nhận giá cố định và danh sách các tình huống được bao gồm, kể cả việc phải làm gì khi phía bên kia không trả lời.
  • Làm trên tài khoản thử nghiệm ở những nơi dịch vụ bên ngoài có hỗ trợ, rồi kiểm tra trên dữ liệu của bạn trước khi đưa vào chạy thật.
  • Bàn giao. Bạn nhận mã nguồn, khóa đứng tên bạn, nhật ký lệnh gọi và hướng dẫn ngắn về việc phải làm khi phía bên kia đổi quy tắc.

Giá

Cùng cách sắp xếp như các dịch vụ khác: phân tích trước, sau đó là hạng mục công việc có giá khởi điểm rõ ràng, còn chỉnh sửa nhỏ thì tính theo giờ.

Bước đầu tiên

Phân tích được trả tiền và đặt trước, và sẽ được trừ vào giá công việc nếu chúng ta tiếp tục. Nếu hóa ra dịch vụ bên ngoài không cho phép điều bạn cần, bạn biết điều đó sau khi phân tích chứ không phải sau khi đã trả tiền phát triển.

Hạng mục công việc

Chỉnh sửa nhỏ trên tích hợp đang chạy không cần đi qua hạng mục riêng: với chúng có hình thức tính theo giờ. Bảng giá đầy đủ nằm ở trang giá.


Tôi cam kết những gì


Giá không bao gồm những gì


Cần chuẩn bị gì trước khi bắt đầu


Quyền sở hữu và lối ra

  • Tài khoản và khóa đứng tên bạn. Bạn là người mở quyền truy cập tới dịch vụ bên ngoài, nên kết nối vẫn chạy kể cả khi chúng ta không còn liên lạc.
  • Mã nguồn là của bạn, kèm mô tả mọi lệnh gọi được sử dụng.
  • Nhật ký ở lại với bạn. Bản ghi những gì đã gửi và nhận được lưu trên máy chủ của bạn, không phải chỗ tôi.
  • Không có bên trung gian. Phần mềm của bạn gọi thẳng dịch vụ bên ngoài; tôi không chen vào một máy chủ của mình để dữ liệu của bạn phải đi qua.

Câu hỏi thường gặp

Vì phần lớn sự bất định nằm đúng ở đó. Dịch vụ bên ngoài có cho dữ liệu bạn cần hay không, với điều kiện nào và hạn mức nào — điều đó chỉ xác định được bằng lệnh gọi thử, không phải bằng đọc tài liệu. Số tiền này được trừ vào giá công việc nếu chúng ta tiếp tục; nếu không, bạn vẫn giữ bản mô tả những gì khả thi và có thể mang tới bất kỳ đơn vị nào.

Điều đó vẫn xảy ra và không phải lỗi của phần đã bàn giao. Tích hợp được viết sao cho thay đổi như vậy lộ ra ngay, ở một chỗ và kèm thông báo rõ ràng trong nhật ký. Việc điều chỉnh được tính như một thay đổi mới, thường theo giờ, vì phụ thuộc vào phía bên kia đã đổi gì.

Đôi khi có, qua xuất và nhập tệp, qua email hoặc qua cơ sở dữ liệu dùng chung. Cách đó chậm và mong manh hơn API thật, và tôi sẽ nói thẳng như vậy, kèm ước tính giải pháp đó dùng được bao lâu trước khi gây phiền. Khi ngay cả điều đó cũng không khả thi thì tốt hơn là không bắt đầu.

Bạn, và tài khoản đứng tên bạn. Nhiều dịch vụ tính tiền theo lệnh gọi hoặc theo tháng, nên phần phân tích có kèm ước tính chi phí đó — nó có thể lớn hơn cả chi phí phát triển nếu dữ liệu được lấy về dày hơn mức cần thiết.

Được, và thường là như vậy. Nhưng nó vẫn là một mục riêng có giá riêng, vì mang rủi ro mà phần còn lại của công việc không có. Nhờ đó bạn cũng thấy rõ kết nối tới hệ thống bên ngoài tốn của bạn đúng bao nhiêu, thay vì bị giấu trong một khoản gộp.

Hai hệ thống nào cần nói chuyện với nhau?

Hãy viết ra đó là những hệ thống nào và điều gì nên xảy ra. Nếu kết nối khả thi, tôi sẽ nói cách làm và chi phí khoảng bao nhiêu; nếu không khả thi, tôi cũng sẽ nói trước khi bạn trả bất cứ khoản nào.

Gửi yêu cầu

Tôi thường trả lời trong ngày.

Tích hợp API và kết nối các hệ thống doanh nghiệp