आपका published ऐप अब रीपब्लिश करते समय भी चालू रहता है
जब आप Mythex पर कोई ऐप रीपब्लिश करते हैं, तो आपकी लाइव साइट अब नया build तैयार होने तक पिछला संस्करण चलाती रहती है, फिर बदल जाती है। इस बदलाव से पहले, रीपब्लिश पूरे build के दौरान साइट को बंद कर देता था: विज़िटर को लगभग एक मिनट के लिए "This published app is offline or the link was not found" दिखता था, और फिर रीलोड करने पर वही पेज काम करने लगता था। हमने उन दो और तरीकों को भी ठीक किया जिनसे लाइव ऐप गलती से offline दिख सकता था।
1. रीपब्लिश से आपकी साइट बंद नहीं होती
पर्दे के पीछे, हर पब्लिश किए गए ऐप का एक रिकॉर्ड होता है जो बताता है कि कौन-सा build सर्व करना है। रीपब्लिश उसी रिकॉर्ड को दोबारा इस्तेमाल करता था और उसे पूरे समय के लिए "building" चिह्नित करता था। और हमारे edge का वह हिस्सा जो विज़िटर्स को रूट करता है, केवल "live" चिह्नित रिकॉर्ड सर्व करता था। तो हर रीपब्लिश build पूरा होने तक साइट गायब कर देता था। हमने इसे एक छोटे test ऐप पर दोहराया: हर रीपब्लिश पर लगभग 50 सेकंड का offline समय।
अब, जब किसी पहले से लाइव ऐप पर रीपब्लिश शुरू होता है, तो रिकॉर्ड याद रखता है कि एक पिछला build मौजूद है, और उसी की ओर इशारा करता रहता है। नया build बनने के दौरान edge पिछला build सर्व करता है, और पॉइंटर केवल तब नए build पर जाता है जब वह सफल हो। अगर नया build विफल हो, तो आपके विज़िटर्स को कभी पता नहीं चलता: पुराना संस्करण बस चालू रहता है।
पहला publish, या वह ऐप जो पॉज़ या unpublish था, उसे रीपब्लिश करना अब भी तभी लाइव होता है जब build पूरा हो, क्योंकि वहाँ दिखाने के लिए कोई पिछला संस्करण नहीं है।
2. थोड़ी-सी गड़बड़ "not found" जैसी नहीं दिखती
आपके published ऐप के सामने की सेवा हमारे API से पूछती है कि हर साइट कहाँ है। पहले वह किसी भी असफल उत्तर को, जैसे एक क्षणिक सर्वर त्रुटि या टूटा कनेक्शन, "यह साइट मौजूद नहीं" मानती थी, और offline पेज दिखाती थी। एक सेकंड बाद रीलोड करने पर सब ठीक चलता था, जिससे भ्रम होता था।
अब केवल वास्तविक "not found" उत्तर को not found माना जाता है:
- कोई भी दूसरी विफलता एक बार दोबारा कोशिश की जाती है।
- अगर फिर भी विफल हो, तो edge आखिरी ज्ञात अच्छे उत्तर से साइट को एक घंटे तक सर्व करता है।
- केवल तभी "temporarily unavailable" पेज दिखता है जब उसे कभी कोई उत्तर न मिला हो, और वह कभी "not found" नहीं होता।
कस्टम domains भी हमारे production और staging सिस्टम से एक साथ पूछते हैं, ताकि धीमा staging सर्वर कभी production domain को न रोके।
3. पॉज़ किया गया ऐप कहता है कि वह पॉज़ है
पब्लिश किए गए ऐप्स आपके क्रेडिट बैलेंस पर चलते हैं। अगर वह खत्म हो जाए, तो ऐप तब तक पॉज़ रहता है जब तक आप टॉप-अप न करें, और आपके टॉप-अप करते ही वह खुद वापस आ जाता है। लेकिन पॉज़ किया गया ऐप पहले बिल्कुल हटाए गए ऐप जैसा दिखता था।
अब पॉज़ किए गए ऐप का विज़िटर "This app is paused" देखता है, मालिक के लिए वापस लौटने का रास्ता साथ में, और वह उत्तर कभी कैश नहीं होता, इसलिए ऐप के फिर चालू होते ही वह तुरंत पहुँच में होता है। अगर ऐप किसी और कारण से उपलब्ध नहीं है, तो विज़िटर्स को "This app isn't available" दिखता है, बिना यह बताए कि क्यों।
यह क्यों मायने रखता है
पब्लिश किया गया ऐप ऐसी चीज़ है जो आपने साझा की है: एक bio link में, एक visiting card पर, अपने पहले ग्राहकों के साथ। उसे एक असली वेबसाइट की तरह व्यवहार करना चाहिए: आप उसे बेहतर बनाते रहें तब भी चालू रहे, एक छोटी गड़बड़ से बचे, और पॉज़ होने पर ईमानदार हो।
Publishing के बारे में और docs में: how to publish और hosting limits। और उसी विचार का infrastructure पक्ष: हमने अपने deploys को zero 502s तक कैसे पहुँचाया।