App đã publish của bạn giờ vẫn hoạt động trong lúc publish lại
Khi bạn publish lại một app trên Mythex, site đang chạy của bạn giờ tiếp tục phục vụ phiên bản trước cho đến khi bản build mới sẵn sàng, rồi mới chuyển sang. Trước thay đổi này, việc publish lại làm site ngừng hoạt động trong suốt quá trình build — khách truy cập thấy “This published app is offline or the link was not found” trong khoảng một phút, rồi trang đó lại hoạt động sau khi tải lại. Chúng tôi cũng sửa hai cách khác khiến một app đang chạy có thể bị coi sai là ngoại tuyến.
1. Publish lại không còn làm site ngừng hoạt động
Ẩn sau hậu trường, mỗi app đã publish có một bản ghi cho biết cần phục vụ bản build nào. Một lần publish lại tái sử dụng bản ghi đó và đánh dấu nó là “đang build” trong suốt thời gian đó — còn phần của edge chúng tôi định tuyến khách truy cập chỉ phục vụ các bản ghi được đánh dấu “live”. Vì vậy mỗi lần publish lại làm site biến mất cho đến khi build xong. Chúng tôi tái hiện điều này trên một app thử nghiệm nhỏ: khoảng 50 giây ngoại tuyến mỗi lần publish lại.
Giờ, khi một lần publish lại bắt đầu trên một app đang live, bản ghi ghi nhớ rằng có một bản build trước và tiếp tục trỏ vào nó. Edge phục vụ bản build trước trong lúc bản mới đang build, và con trỏ chỉ chuyển sang bản build mới khi nó thành công. Nếu bản build mới thất bại, khách truy cập của bạn không hề nhận ra — phiên bản cũ đơn giản vẫn tiếp tục hoạt động.
Một lần publish đầu tiên, hoặc publish lại một app đã bị tạm dừng hoặc hủy publish, vẫn chỉ lên sóng khi bản build hoàn tất — vì không có phiên bản trước để hiển thị.
2. Một trục trặc thoáng qua không còn trông như “không tìm thấy”
Dịch vụ đứng trước app đã publish của bạn hỏi API của chúng tôi xem mỗi site nằm ở đâu. Trước đây, nó coi bất kỳ phản hồi không thành công nào — một lỗi máy chủ nhất thời, một kết nối bị rớt — là “site này không tồn tại”, và hiển thị trang ngoại tuyến. Tải lại một giây sau thì lại hoạt động, nên điều này gây bối rối.
Giờ chỉ một phản hồi “không tìm thấy” thực sự mới được coi là không tìm thấy:
- Bất kỳ lỗi nào khác được thử lại một lần.
- Nếu vẫn thất bại, edge phục vụ site từ câu trả lời đúng gần nhất đã biết trong tối đa một giờ.
- Chỉ khi chưa từng có câu trả lời nào, nó mới hiển thị trang “temporarily unavailable” — không bao giờ là “not found”.
Các tên miền tùy chỉnh cũng hỏi hệ thống production và staging của chúng tôi song song, nên một máy chủ staging chậm không bao giờ có thể làm chậm một tên miền production.
3. App bị tạm dừng sẽ nói rằng nó bị tạm dừng
Các app đã publish chạy bằng số dư credit của bạn. Nếu số dư hết, app sẽ bị tạm dừng cho đến khi bạn nạp thêm — và nó tự hoạt động lại khi bạn nạp. Nhưng một app bị tạm dừng trước đây trông hệt như một app đã bị xóa.
Giờ khách truy cập vào một app bị tạm dừng sẽ thấy “This app is paused”, kèm một cách để chủ sở hữu quay lại, và phản hồi đó không bao giờ được cache, nên app có thể truy cập lại ngay khi được tiếp tục. Nếu một app không khả dụng vì lý do khác, khách truy cập sẽ thấy “This app isn't available” — mà không được cho biết lý do.
Vì sao điều này quan trọng
Một app đã publish là thứ bạn đã chia sẻ: trong một liên kết tiểu sử, trên một danh thiếp, với những khách hàng đầu tiên. Nó nên hành xử như một website thật — luôn hoạt động trong lúc bạn cải thiện nó, sống sót qua một trục trặc thoáng qua, và trung thực khi bị tạm dừng.
Thêm về publish trong tài liệu: cách publish và giới hạn hosting. Và phía hạ tầng của cùng ý tưởng: cách chúng tôi đưa deploy của mình về không còn lỗi 502.