公開済みのアプリは、再公開中も稼働し続けるようになりました
Mythexでアプリを再公開すると、ライブのサイトは、新しいビルドの準備ができるまで前のバージョンを配信し続け、準備ができたら切り替わるようになりました。この変更の前は、再公開のたびにビルドの間ずっとサイトがオフラインになっていました。訪問者には「この公開アプリはオフラインか、リンクが見つかりませんでした」と表示され、1分ほどたってから再読み込みすると、同じページが再び動きました。さらに、ライブのアプリが誤ってオフラインに見えてしまう、別の2つの経路も修正しました。
1. 再公開してもサイトは落ちなくなりました
舞台裏では、公開済みの各アプリに、どのビルドを配信すべきかを示すレコードがあります。再公開は、そのレコードを再利用し、ビルドの間、「ビルド中」としてマークしていました。また、訪問者をルーティングする私たちのエッジの部分は、「ライブ」とマークされたレコードしか配信していませんでした。そのため、再公開のたびに、ビルドが終わるまでサイトが消えていたのです。小さなテストアプリで再現したところ、再公開のたびに約50秒間オフラインになっていました。
今では、すでにライブのアプリで再公開が始まると、レコードは前のビルドが存在することを記憶し、そのビルドを指し続けます。エッジは、新しいビルドが作られている間、前のビルドを配信します。ポインターが新しいビルドに移るのは、それが成功したときだけです。新しいビルドが失敗しても、訪問者は気づきません。古いバージョンはそのまま稼働し続けます。
初回の公開や、一時停止または公開取り下げになっていたアプリの再公開では、ビルドが終わって初めてライブになります。表示できる前のバージョンがないからです。
2. 一時的な不調が「見つからない」に見えなくなりました
公開済みのアプリの前にあるサービスは、各サイトがどこにあるかを私たちのAPIに問い合わせます。以前は、成功しなかった回答をすべて、たとえば一時的なサーバーエラーや接続の切断を、「このサイトは存在しない」と解釈し、オフラインのページを表示していました。その1秒後に再読み込みすると動いたため、混乱を招いていました。
今では、本当に「見つからない」という回答だけが、見つからないとして扱われます。
- それ以外の失敗は、1回だけ再試行されます。
- それでも失敗した場合、エッジは、最後に得られた正常な回答を最大1時間、サイトの配信に使います。
- まだ一度も回答が得られていない場合にだけ、「一時的に利用できません」というページを表示します。「見つかりません」とは決して表示しません。
カスタムドメインは、本番とステージングの両方のシステムに並行して問い合わせるので、ステージングのサーバーが遅くても、本番のドメインが待たされることはありません。
3. 一時停止中のアプリは、一時停止中と表示されるように
公開済みのアプリは、あなたのクレジット残高で動いています。残高がなくなると、アプリは追加のチャージがされるまで一時停止され、チャージされると自動的に再開します。しかし以前は、一時停止中のアプリは、削除されたアプリとまったく同じように見えていました。
今では、一時停止中のアプリを訪れると、**「このアプリは一時停止中です」**と表示され、オーナーが戻るための案内も表示されます。また、そのレスポンスはキャッシュされないので、再開された瞬間にアプリへ再びアクセスできます。ほかの理由でアプリが利用できない場合、訪問者には「このアプリは利用できません」と表示され、理由は伝えられません。
なぜ大事なのか
公開済みのアプリは、あなたが共有したものです。プロフィールのリンク、名刺、最初のお客様に渡すもの。そのため、実際のウェブサイトのように振る舞うべきです。改善している間も稼働し続け、一時的な不調にも耐え、一時停止しているなら正直にそう伝えるべきです。
詳しくはドキュメントの公開の方法とホスティングの制限をご覧ください。同じ考え方のインフラ側の話は、デプロイで502をゼロにした方法です。