Một nhóm đặt một chuỗi bỏ qua duy nhất vào tệp môi trường dùng chung. curl đi trực tiếp, một ứng dụng khác dùng proxy, và container lại hành xử khác đi. Tệp dùng chung đã phân phối cùng các ký tự. Nó không phân phối một bộ phân tích cú pháp dùng chung.

Đối tượng bền vững là chính sách: đích nào nên đi trực tiếp, trong điều kiện nào? Hãy tách nó khỏi chuỗi mà mỗi chương trình cần.

Viết các tuyến mong đợi trước

Dùng các địa chỉ đại diện, bao gồm cả các trường hợp biên chứ không chỉ những thành công dễ dàng:

Dạng đíchCâu hỏi cho chủ sở hữu chính sách
Tên miền chaCó nên bỏ qua nó, hay chỉ các tên miền con?
Một tên miền conNó có kế thừa cùng tuyến không?
Một IP riêng viết trực tiếpĐịa chỉ đó có truy cập trực tiếp được từ máy khách này không?
Cùng dịch vụ dưới một tên máy chủCác yêu cầu theo tên và theo địa chỉ có nên khớp nhau không?
Một cổng dịch vụ khácNgoại lệ bao phủ máy chủ hay chỉ một bộ lắng nghe?

Sau đó xác định các đối tượng sử dụng: daemon tải image, chương trình bên trong container, thư viện HTTP của một ngôn ngữ và trình duyệt tương tác đều có thể là các mục riêng. Cấu hình proxy của máy khách Docker có thể điền các giá trị môi trường của container mà không buộc mọi máy khách bên trong phải triển khai cùng các quy tắc khớp.

Dịch thay vì sao chép mù quáng

Một ví dụ được ghi lại về khác biệt thực sự là ranh giới tên miền cha. Việc loại trừ tên miền của curl bao gồm tên miền được đặt tên và các tên miền con khớp. Chính sách môi trường của .NET phân biệt tên trần với dạng tên miền con có dấu chấm ở đầu. Một quy tắc phổ quát „luôn thêm dấu chấm ở đầu“ không thể diễn đạt cả hai chính sách một cách đáng tin cậy.

Hỗ trợ dải IP cũng phụ thuộc vào đối tượng sử dụng và phiên bản của nó. Một máy có curl độc lập mới vẫn có thể chạy ứng dụng liên kết với libcurl cũ hơn, hoặc một máy khách dùng thư viện hoàn toàn khác. Bản phát hành hệ điều hành không phải là bản kiểm kê máy khách đầy đủ.

Với mỗi đối tượng sử dụng, hãy ghi lại giao diện cấu hình được hỗ trợ và biểu đạt nhỏ nhất của các tuyến dự định. Một danh sách máy chủ ngắn gọn, rõ ràng có thể tốt hơn một mẫu thông minh mà không ai giải thích được ý nghĩa.

Tách bằng chứng cấu hình khỏi bằng chứng kết nối

Một thiết lập đã phân tích hoặc API quyết định định tuyến có thể cho thấy chương trình đã chọn gì. Kết quả yêu cầu sau đó cho thấy tuyến đó có dùng được không. Trong .NET, HttpClient.DefaultProxy.IsBypassed cung cấp kiểm tra phía cấu hình đó khi proxy mặc định là chính sách đang dùng. Đừng chẩn đoán một dịch vụ trực tiếp không truy cập được là lỗi của bộ phân tích bỏ qua chỉ vì yêu cầu đã hết thời gian.

Giữ các đích biên khi cập nhật máy khách hoặc image nền. Chúng làm cho các thay đổi tương thích trong tương lai trở nên dễ thấy mà không buộc cả nhóm phải khám phá lại vì sao tệp chứa hai mục tên miền trông giống nhau.

Bài viết liên quan