Ваш опублікований застосунок тепер лишається онлайн під час перепублікації
Коли ви перепублікуєте застосунок на Mythex, ваш живий сайт тепер продовжує показувати попередню версію, доки нова збірка не буде готова, і лише тоді перемикається. Раніше перепублікація вимикала сайт на всю тривалість збірки: відвідувачі бачили «Цей опублікований застосунок офлайн або посилання не знайдено», а потім та сама сторінка знову працювала після оновлення. Ми також виправили два інших випадки, коли живий застосунок помилково виглядав офлайн.
1. Перепублікація більше не вимикає ваш сайт
У фоні кожен опублікований застосунок має запис, який каже, яку збірку подавати. Перепублікація використовувала той самий запис і позначала його як «збирається» на весь час збірки — а частина нашої edge-мережі, що маршрутизує відвідувачів, подавала лише записи, позначені як «живі». Тож кожна перепублікація робила сайт зниклим, доки збірка не завершиться. Ми відтворили це на маленькому тестовому застосунку: близько 50 секунд офлайн на кожну перепублікацію.
Тепер, коли перепублікація починається для вже живого застосунку, запис пам'ятає, що існує попередня збірка, і продовжує вказувати на неї. Edge подає попередню збірку, поки нова будується, а вказівник переходить на нову збірку лише тоді, коли вона успішна. Якщо нова збірка не вдалася, ваші відвідувачі нічого не помітять — стара версія просто лишається онлайн.
Перша публікація або перепублікація застосунку, який був призупинений або знятий з публікації, як і раніше стає живою лише після завершення збірки — показувати попередньої версії немає.
2. Короткий збій більше не виглядає як «не знайдено»
Сервіс перед вашим опублікованим застосунком запитує наш API, де живе кожен сайт. Раніше він вважав будь-яку невдалу відповідь — тимчасову помилку сервера, розірване з'єднання — як «такого сайту не існує» і показував сторінку офлайн. Оновлення секундою пізніше працювало, і це плутало.
Тепер лише справжня відповідь «не знайдено» вважається «не знайдено»:
- Будь-яка інша невдача повторюється один раз.
- Якщо і це не вдалося, edge подає сайт з останньої відомої доброї відповіді до однієї години.
- Лише якщо відповіді ніколи не було, він показує сторінку «тимчасово недоступно» — ніколи «не знайдено».
Власні домени також паралельно запитують наші продакшн і staging-системи, тож повільний staging-сервер ніколи не може затримати продакшн-домен.
3. Призупинений застосунок каже, що він призупинений
Опубліковані застосунки працюють за рахунок вашого балансу кредитів. Якщо він закінчується, застосунок призупиняється, доки ви не поповните баланс, — і він повертається сам, щойно ви це робите. Але призупинений застосунок раніше виглядав точно так само, як видалений.
Тепер відвідувач призупиненого застосунку бачить «Цей застосунок призупинено» із способом для власника повернутися, а відповідь ніколи не кешується, тож застосунок доступний одразу після відновлення. Якщо застосунок недоступний з іншої причини, відвідувачі бачать «Цей застосунок недоступний» — без пояснення причини.
Чому це важливо
Опублікований застосунок — це те, чим ви поділилися: у біо-посиланні, на візитці, з першими клієнтами. Він має поводитися як справжній вебсайт — лишатися онлайн, поки ви його покращуєте, витримувати короткий збій і чесно повідомляти, коли він призупинений.
Більше про публікацію в документації: як опублікувати і ліміти хостингу. А інфраструктурна сторона тієї самої ідеї: як ми досягли нуля помилок 502 під час власних деплоїв.