Twoja opublikowana aplikacja zostaje online podczas ponownej publikacji
Gdy ponownie publikujesz aplikację w Mythex, Twoja żywa strona nadal obsługuje poprzednią wersję, aż nowy build będzie gotowy, a potem następuje przełączenie. Wcześniej ponowna publikacja wyłączała stronę na cały czas budowania — odwiedzający widzieli „Ta opublikowana aplikacja jest offline lub nie znaleziono linku” przez minutę lub dwie, a potem ta sama strona działała po odświeżeniu. Naprawiliśmy też dwa inne sposoby, w jakie żywa aplikacja mogła błędnie wyglądać na offline.
1. Ponowna publikacja nie wyłącza już strony
Za kulisami każda opublikowana aplikacja ma rekord, który mówi, którego builda użyć. Ponowna publikacja używała tego rekordu i oznaczała go jako „budowany” na czas trwania — a część naszej sieci brzegowej, która kieruje odwiedzających, obsługiwała tylko rekordy oznaczone jako „aktywne”. Więc każda ponowna publikacja sprawiała, że strona znikała do czasu zakończenia builda. Odtworzyliśmy to na małej testowej aplikacji: ok. 50 sekund offline przy każdej ponownej publikacji.
Teraz, gdy ponowna publikacja startuje na już aktywnej aplikacji, rekord pamięta, że istnieje poprzedni build, i nadal na niego wskazuje. Sieć brzegowa obsługuje ten poprzedni build, gdy nowy się buduje, a wskaźnik przechodzi na nowy build dopiero wtedy, gdy ten się uda. Jeśli nowy build się nie uda, odwiedzający nic nie zauważą — stara wersja po prostu zostaje.
Pierwsza publikacja albo ponowne opublikowanie aplikacji, która była wstrzymana lub wycofana, nadal wchodzi na żywo dopiero po zakończeniu builda — bo nie ma poprzedniej wersji do pokazania.
2. Chwilowe potknięcie nie wygląda już na „nie znaleziono”
Usługa przed Twoją opublikowaną aplikacją pyta nasze API, gdzie znajduje się każda strona. Kiedyś traktowała każdą nieudaną odpowiedź — chwilowy błąd serwera, zerwane połączenie — jako „ta strona nie istnieje” i pokazywała stronę offline. Odświeżenie sekundę później działało, co było mylące.
Teraz tylko prawdziwa odpowiedź „nie znaleziono” się liczy jako nie znaleziono:
- Każda inna awaria jest ponawiana raz.
- Jeśli nadal się nie udaje, sieć brzegowa obsługuje stronę z ostatniej znanej dobrej odpowiedzi przez maksymalnie godzinę.
- Dopiero jeśli nigdy nie miała odpowiedzi, pokazuje stronę „tymczasowo niedostępne” — nigdy „nie znaleziono”.
Domeny własne pytają też nasze systemy produkcyjne i stagingowe równolegle, więc wolny serwer stagingowy nigdy nie może wstrzymać domeny produkcyjnej.
3. Wstrzymana aplikacja mówi, że jest wstrzymana
Opublikowane aplikacje działają z Twojego salda kredytów. Gdy się skończy, aplikacja jest wstrzymana, dopóki nie doładujesz — i wraca sama, gdy to zrobisz. Ale wstrzymana aplikacja wyglądała wcześniej dokładnie jak usunięta.
Teraz odwiedzający wstrzymaną aplikację widzi „Ta aplikacja jest wstrzymana”, wraz z drogą powrotu dla właściciela, a odpowiedź nigdy nie jest buforowana, więc aplikacja jest osiągalna w chwili wznowienia. Jeśli aplikacja jest niedostępna z innego powodu, odwiedzający widzą „Ta aplikacja nie jest dostępna” — bez podawania przyczyny.
Dlaczego to ma znaczenie
Opublikowana aplikacja to coś, czym się dzielisz: w bio linku, na wizytówce, z pierwszymi klientami. Powinna zachowywać się jak prawdziwa strona internetowa — zostawać online, gdy ją ulepszasz, przetrwać chwilowe potknięcie i być uczciwa, gdy jest wstrzymana.
Więcej o publikowaniu w dokumentacji: jak opublikować i limity hostingu. A część infrastrukturalną tej samej idei: jak doprowadziliśmy własne wdrożenia do zera błędów 502.