برنامهی منتشرشدهتان حالا هنگام انتشار مجدد آنلاین میماند
وقتی یک برنامه را در Mythex دوباره منتشر میکنید، سایت زندهتان حالا نسخهی قبلی را سرو میکند تا ساخت جدید آماده شود، و سپس جابهجا میشود. پیش از این تغییر، انتشار مجدد سایت را برای کل مدت ساخت از دسترس خارج میکرد — بازدیدکنندگان حدود یک دقیقه پیام «This published app is offline or the link was not found» را میدیدند، و بعد با رفرش همان صفحه دوباره کار میکرد. دو راه دیگر را هم که یک برنامهی زنده میتوانست بهاشتباه آفلاین به نظر برسد، رفع کردیم.
۱. انتشار مجدد دیگر سایتتان را از کار نمیاندازد
پشت صحنه، هر برنامهی منتشرشده یک رکورد دارد که میگوید کدام ساخت را سرو کند. انتشار مجدد همان رکورد را دوباره استفاده میکرد و آن را برای مدت ساخت «در حال ساخت» علامت میزد — و بخشی از لبهی ما که بازدیدکنندگان را مسیریابی میکند فقط رکوردهایی را سرو میکرد که «زنده» علامت خورده بودند. پس هر انتشار مجدد سایت را تا تمام شدن ساخت ناپدید میکرد. آن را روی یک برنامهی آزمایشی کوچک بازتولید کردیم: حدود ۵۰ ثانیه آفلاین برای هر انتشار مجدد.
حالا، وقتی انتشار مجدد روی یک برنامهی از قبل زنده شروع میشود، رکورد به یاد میآورد که یک ساخت قبلی وجود دارد و همچنان به آن اشاره میکند. لبهی سرویسدهندهی ساخت قبلی را در حین ساخت جدید سرو میکند، و اشارهگر فقط وقتی به ساخت جدید میرود که آن موفق باشد. اگر ساخت جدید شکست بخورد، بازدیدکنندگان شما هرگز متوجه نمیشوند — نسخهی قبلی همانطور بالا میماند.
یک انتشار اول، یا انتشار مجدد برنامهای که متوقف یا حذف شده بود، همچنان فقط وقتی زنده میشود که ساخت تمام شود — چون نسخهی قبلیای برای نشان دادن وجود ندارد.
۲. یک اختلال کوتاه دیگر شبیه «پیدا نشد» نیست
سرویسی که جلوی برنامهی منتشرشدهتان است از API ما میپرسد هر سایت کجاست. پیشتر هر پاسخ ناموفقی — یک خطای موقت سرور، یک اتصال قطعشده — را بهعنوان «این سایت وجود ندارد» میگرفت، و صفحهی آفلاین را نشان میداد. یک رفرش یک ثانیه بعد کار میکرد، که گیجکننده بود.
حالا فقط یک پاسخ واقعی «پیدا نشد» بهحساب میآید:
- هر خطای دیگری یک بار دوباره امتحان میشود.
- اگر باز هم شکست بخورد، لبه سایت را از آخرین پاسخ خوب شناختهشده تا یک ساعت سرو میکند.
- فقط اگر هرگز پاسخی نگرفته باشد، یک صفحهی «موقتاً در دسترس نیست» نشان میدهد — هرگز «پیدا نشد».
دامنههای سفارشی هم همزمان از سیستمهای تولیدی و staging ما میپرسند، پس یک سرور staging کند هرگز نمیتواند یک دامنهی تولیدی را معطل کند.
۳. برنامهی متوقفشده میگوید متوقف است
برنامههای منتشرشده با اعتبار حساب شما اجرا میشوند. اگر اعتبار تمام شود، برنامه تا وقتی شارژ کنید متوقف میشود — و وقتی شارژ کنید خودبهخود برمیگردد. اما یک برنامهی متوقفشده پیشتر دقیقاً مثل یک برنامهی حذفشده به نظر میرسید.
حالا بازدیدکنندهی یک برنامهی متوقفشده «This app is paused» را میبیند، همراه با راهی برای بازگشت برای صاحب آن، و پاسخ هرگز کش نمیشود، پس به محض ادامه یافتن برنامه دوباره در دسترس است. اگر برنامه به دلیلی دیگر در دسترس نباشد، بازدیدکنندگان «This app isn't available» را میبینند — بدون اینکه دلیلش گفته شود.
چرا این مهم است
یک برنامهی منتشرشده چیزی است که شما به اشتراک گذاشتهاید: در یک لینک بیو، روی یک کارت ویزیت، با اولین مشتریانتان. باید مثل یک وبسایت واقعی رفتار کند — وقتی بهبودش میدهید بالا بماند، یک اختلال را تحمل کند، و وقتی متوقف است صادق باشد.
بیشتر دربارهٔ انتشار در مستندات: چطور منتشر کنیم و محدودیتهای میزبانی. و بخش زیرساختی همان ایده: چطور استقرارهای خودمان را به صفر ۵۰۲ رساندیم.