Bỏ qua tới nội dung
Kiên

Sandbox không phải là supplier

· 3 phút đọc

cert xanh · prod khác

Môi trường test của supplier chạy hết bộ certification đều xanh, còn prod thì hành xử khác — kho phòng không bao giờ hết, lỗi không có trong tài liệu, rate limit chỉ tồn tại ở một bên, và độ trễ mà bạn không thể lấy làm căn cứ chỉnh timeout. Certification thật ra chứng minh cái gì, và mấy booking prod đầu tiên dùng để làm gì.

  • tích hợp
  • testing
  • supplier
  • vận hành
Nội dung
  1. Xanh là một lời khẳng định nhỏ hơn nó trông
  2. Kho phòng không bao giờ hết
  3. Tập lỗi trong tài liệu chỉ là tập con
  4. Rate limit chỉ tồn tại ở một bên
  5. Phân bố độ trễ thì không so được với nhau
  6. Coi mấy booking prod đầu tiên là bài test thật
  7. Luật

Xanh là một lời khẳng định nhỏ hơn nó trông

Tích hợp một supplier kết thúc bằng certification: một bộ testcase riêng cho provider đó, chạy qua trọn luồng, request và response của từng testcase cộng với lời gọi lên upstream được crawl vào một thư mục có tên. Cái thư mục đó là thứ đối tác ngồi review, và mình sẽ không đánh đổi nó lấy gì cả. Nhưng cũng nên nói cho chính xác: một bộ catalog xanh hết khẳng định rằng trên môi trường test của họ, với các kịch bản họ soạn sẵn, module của mình nói đúng thứ cần nói và hiểu đúng câu trả lời.

Prod là một hệ thống khác dùng chung schema. Cách nó lệch đi thì không có gì bí ẩn khi bạn đã đưa vài tích hợp lên sống; lần nào cũng đúng bốn cách đó.

Kho phòng không bao giờ hết

Kho hàng trên sandbox là tĩnh. Nó được seed một lần để các testcase còn lặp lại được, đúng thứ một môi trường test nên làm — và hệ quả là cái phòng bạn chọn lúc nào cũng còn nguyên ở đó khi bạn đi book.

Nghĩa là cả họ code xử lý cái offer bạn chọn không còn nữa chưa từng chạy lần nào. Không phải test dở — mà là chưa từng chạy. Khoảng giữa search và prebook mới là chỗ một supplier thật báo rằng mức giá đã bị rút, giá đã đổi, phần allocation đã về tay người khác. Trong certification, khoảng đó luôn rỗng, và tới ngày go-live thì nhánh code mình viết cho nó vẫn chỉ là một phỏng đoán chưa được test, do một người đọc PDF viết ra từ mấy tháng trước.

Tập lỗi trong tài liệu chỉ là tập con

Sandbox trả về đúng những lỗi mà tài liệu tích hợp mô tả, vì cùng một đội viết cả hai. Prod thêm vào những lỗi không ai chép lại: một timeout ở tầng trên lòi ra qua chính lớp bọc của supplier, một trang bảo trì, một trạng thái credential chỉ tồn tại với tài khoản live, một câu validate bằng thứ ngôn ngữ mà tài liệu không dùng.

Chỗ này đau hơn hẳn với những supplier trả HTTP 200 kèm lỗi nằm trong body — một pattern có thật, không phải ca hiếm. Một dáng lỗi lạ nằm trong một cái 200 thì không vỡ ra thành tiếng; nó parse ra một thứ rỗng rồi đi tiếp như một kết quả trông rất thành công.

Rate limit chỉ tồn tại ở một bên

Chẳng ai đi rate-limit sandbox cho tử tế. Search hotel và flight bung ra mỗi supplier một job qua queue, và cái mức concurrency mà sandbox nuốt gọn không một lời phàn nàn chính là con số prod bắt đầu đếm. Lần đầu bạn biết trần thật là bao nhiêu thường rơi vào lúc đang có traffic search thật, cũng là lúc tệ nhất để biết.

Phân bố độ trễ thì không so được với nhau

Sandbox trả lời sẵn từ một tập dữ liệu nhỏ. Prod thì tìm trong kho hàng thật, dưới tải thật. Trung vị đã khác nhau, còn cái đuôi — phần mà một cái timeout thật sự nói về — thì chẳng liên quan gì tới nhau. Search hotel nằm dưới một deadline tuyệt đối 30 giây, bên dưới nữa là ngân sách thời gian cho từng supplier, và bất kỳ ngân sách nào đặt theo số đo lúc certification cũng chỉ là một phỏng đoán mặc áo con số.

Coi mấy booking prod đầu tiên là bài test thật

Cách làm rút ra thì không có gì ly kỳ, nhưng chạy được. Giữ nguyên gói bằng chứng; nó vẫn là thứ trả lời câu hỏi của đối tác. Rồi coi mấy booking đầu tiên trên prod mới là bài test thật: chọn offer rẻ nhất có miễn phí huỷ, do một người ngồi canh lúc nó chạy, chứ không phải để lịch chạy tự động. Và log request với response của đúng lời gọi prod đầu tiên — mọi lời gọi provider đều được log cả hai chiều, và một lời gọi hỏng có thể bắn lại nguyên si bằng đúng cái curl nó đã gửi. Đó là khác biệt giữa một bất ngờ đầu tiên chẩn đoán được và một bất ngờ chỉ còn lại dưới dạng lời kể.

Mình không có con số bao nhiêu tích hợp trong tuần prod đầu tiên đã trả ra một dáng lỗi không hề có trong certification. Không ai theo dõi cái đó. Cái pattern đủ chắc để mình luôn tính trước cho nó, nhưng nói thẳng như vậy vẫn hơn là gắn vào đây một con số mình chưa từng thu thập.

Luật

Certification chứng minh bạn nói chuyện được với họ. Nó không chứng minh bạn làm việc được với họ. Vế đầu là một cuộc hội thoại trong điều kiện phòng thí nghiệm; vế sau bao gồm phòng hết chỗ, những lỗi không ai viết ra, một cái trần bạn chưa chạm tới, và một cái đuôi độ trễ chưa ai cho bạn xem.