VPS पर Next.js को प्रोडक्शन में कैसे चलाते हैं
हमारे अपने Next.js प्रोडक्ट्स को होस्ट करने का असली सेटअप — प्रोसेस मैनेजर, रिवर्स प्रॉक्सी, ज़ीरो-डाउनटाइम डिप्लॉय, और रास्ते में की गई गलतियाँ।
लेखक: Anested Engineering
हर Anested प्रोडक्ट — यह वेबसाइट भी — उसी Anested Clouds इंफ्रास्ट्रक्चर पर चलता है जिसे हम ग्राहकों को बेचते हैं। यही बात हमें ईमानदार रखती है। अगर कोई डिप्लॉयमेंट पैटर्न हमारे अपने प्रोडक्ट्स के लिए नाज़ुक है, तो उसे किसी और के VPS पर डिफ़ॉल्ट बनने का कोई हक नहीं।
हमारा प्रोडक्शन Next.js स्टैक जान-बूझकर 'बोरिंग' है, और हम इसे तारीफ मानते हैं। एक VPS जिस पर तयशुदा Node.js LTS वर्ज़न, फेल होने पर ऐप को दोबारा शुरू करने वाला प्रोसेस मैनेजर, और सामने TLS संभालने वाला रिवर्स प्रॉक्सी। कोई ऑर्केस्ट्रेशन क्लस्टर नहीं, कोई सर्विस मेश नहीं। हमारे किसी वर्कलोड ने अभी वह जटिलता कमाई नहीं है, और दिखावा करने का मतलब होता रात दो बजे टूटने वाली चीज़ें ज़्यादा होना।
ज़ीरो-डाउनटाइम डिप्लॉयमेंट ही वह जगह है जहाँ हम असली इंजीनियरिंग मेहनत लगाते हैं। हर रिलीज़ अलग डायरेक्टरी में बनती है जबकि पुराना वर्ज़न ट्रैफ़िक संभालता रहता है। नए बिल्ड पर आंतरिक पोर्ट से हेल्थ चेक चलते हैं, और सही जवाब मिलने पर ही प्रॉक्सी का अपस्ट्रीम बदला जाता है। दस मिनट बाद कुछ गड़बड़ लगे तो रोलबैक बस एक symlink बदलना है — घबराहट में दोबारा डिप्लॉय करना नहीं।
शुरुआत में हमारी सबसे बड़ी गलती थी लॉग्स को बाद की चीज़ समझना। कुछ टूटता तो हम सर्वर में SSH करके बिखरी फ़ाइलें खंगालते थे। आज हर ऐप्लिकेशन पहले दिन से स्ट्रक्चर्ड लॉग्स एक केंद्रीय स्टोर में भेजता है, और ऑन-कॉल इंजीनियर एक मिनट से कम में बता सकता है कि 'क्या बदला था?'। इस एक आदत ने किसी भी टूल की खरीद से ज़्यादा हमारा इंसिडेंट समय घटाया है।
कैशिंग का ज़िक्र ज़रूरी है क्योंकि Next.js इसकी कई परतें देता है — बिल्ड-टाइम स्टैटिक पेज, इंक्रीमेंटल रीवैलिडेशन, CDN हेडर। हमारा नियम: अनाम ट्रैफ़िक के लिए एज पर जमकर कैश करो, लॉगिन वाले पेजों के लिए कभी नहीं। साफ़ और सीधे नियम उन चालाक नियमों से बेहतर हैं जिन्हें आप आउटेज के दौरान समझा नहीं सकते।
अगर आप यही सेटअप खुद बनाए बिना चाहते हैं, तो Anested Clouds यही बेचता है। इस पोस्ट में बताए पैटर्न हर नए VPS के डिफ़ॉल्ट हैं — क्योंकि हम अपनी कंपनी भी इन्हीं पर चलाते हैं।
इस पोस्ट से जुड़ी किसी चीज़ में मदद चाहिए?
हमारे इंजीनियर सीधे जवाब देते हैं — होस्टिंग, डेटाबेस, कोड, या इस पोस्ट से जुड़ा कुछ भी।