osFoundry / Platform
कंटेनर कम्प्यूट
स्थायी प्रोसेस चाहिए? रनटाइम को कंटेनर में फ़्लिप करें। वही ऐप, अलग मोड।
यह क्या है
कंटेनर कंप्यूट osFoundry में बनाए गए ऐप्स के लिए एक रनटाइम मोड है। ज़्यादातर ऐप्स अल्पकालिक, रिक्वेस्ट-आधारित प्रक्रियाओं के रूप में ठीक चलते हैं: वे शुरू होते हैं, जवाब देते हैं और बंद हो जाते हैं। लेकिन कुछ वर्कलोड को ऐसा कुछ चाहिए जो जीवित बना रहे: एक WebSocket सर्वर जो कनेक्शन खुले रखता है, एक बैकग्राउंड वर्कर जो कतार खाली करता रहता है, एक शेड्यूलर जो अपनी ही घड़ी पर चलता है, या एक बैकएंड जो रिक्वेस्ट के बीच मेमोरी में गर्म स्टेट बनाए रखता है। इनके लिए आप रनटाइम को कंटेनर पर बदल देते हैं और वही ऐप हर बार नए सिरे से शुरू होने के बजाय एक लंबे समय चलने वाली प्रक्रिया के रूप में चलता रहता है।
मुख्य बात यह है कि यह वही ऐप है। आप इसे न दोबारा लिखते हैं, न फ़ोर्क करते हैं, न किसी दूसरी सेवा पर ले जाते हैं। कोड, रूट और वायरिंग जहाँ हैं वहीं रहते हैं; आप बस यह बदलते हैं कि यह कैसे चलता है। इसीलिए कंटेनर मोड एक ऐसा निर्णय है जो आप तब लेते हैं जब कोई फ़ीचर उसकी माँग करता है, न कि ऐसा आर्किटेक्चर जिसे आप शुरू से ही अपना लेते हैं। ऐप को हल्के, अल्पकालिक मोड में शुरू करें, और जिस पल आप वह हिस्सा जोड़ें जिसे बने रहना ज़रूरी है, उसे कंटेनर पर बदल दें।
यह osFoundry के उस तरीके से मेल खाता है जिसमें चैट, एजेंट, ऐप्स, कोड और डेटा को अलग-अलग होस्टिंग अकाउंट में बिखेरने के बजाय एक ही वर्कस्पेस में रखा जाता है। चूँकि osFoundry bring-your-own-key और local-first है, आप अपना ऐप अपनी शर्तों पर चलाते हैं, बिना किसी per-seat SaaS परत के जो उसे लपेट ले। कंटेनर कंप्यूट इसे बैकएंड तक बढ़ाता है: जब आपका ऐप एक स्टेटलेस सहायक से बढ़कर ऐसी चीज़ बन जाता है जिसे चलते रहना ज़रूरी है, तो वर्कस्पेस में उसके रहने के लिए जगह पहले से मौजूद है।
मुख्य क्षमताएँ
- किसी भी osFoundry ऐप को उसका कोड बदले बिना अल्पकालिक और कंटेनर रनटाइम के बीच स्विच करें
- लंबे समय चलने वाली प्रक्रियाएँ चलाएँ: WebSocket सर्वर, बैकग्राउंड वर्कर, शेड्यूलर और डेमन
- हर कॉल पर कोल्ड-स्टार्ट के बजाय रिक्वेस्ट के बीच मेमोरी में गर्म स्टेट बनाए रखें
- रनटाइम प्रति ऐप चुनें, ताकि आप स्थायी प्रक्रिया की कीमत सिर्फ़ वहीं चुकाएँ जहाँ किसी फ़ीचर को उसकी ज़रूरत हो
- बैकएंड उसी वर्कस्पेस में रहता है जहाँ आपकी चैट, एजेंट, कोड और डेटा हैं
उपयोग के मामले
- डेवलपर: एक ऐप ने लाइव अपडेट के लिए WebSocket फ़ीचर जोड़ा, इसलिए कनेक्शन खुले रखने के लिए उसका रनटाइम कंटेनर पर बदल दिया गया
- ऑटोमेशन बिल्डर: एक बैकग्राउंड वर्कर जो जॉब कतार खाली करता है और शेड्यूल पर चलता है, उसे ऐसी प्रक्रिया चाहिए जो कभी न सोए
- टीम लीड: एक प्रोटोटाइप स्टेटलेस शुरू हुआ और जब उसे गर्म कैश और स्थायी बैकएंड की ज़रूरत पड़ी, तो बिना दोबारा बनाए कंटेनर मोड में चला गया
सामान्य प्रश्न
मुझे किसी ऐप को डिफ़ॉल्ट रनटाइम के बजाय कंटेनर कंप्यूट पर कब स्विच करना चाहिए?
तब स्विच करें जब आपके ऐप को रिक्वेस्ट के बीच कुछ जीवित रखने की ज़रूरत हो: खुले कनेक्शन (जैसे WebSockets), बैकग्राउंड या शेड्यूल किए वर्कर, एक डेमन प्रक्रिया, या मेमोरी में ऐसी स्टेट जिसे आप हर कॉल पर खोना नहीं चाहते। अगर ऐप सिर्फ़ रिक्वेस्ट का जवाब देकर बंद हो जाता है, तो हल्का अल्पकालिक रनटाइम बेहतर बैठता है।
क्या इसे कंटेनर के रूप में चलाने के लिए मुझे अपना ऐप दोबारा लिखना होगा?
नहीं। यह वही ऐप है, बस अलग मोड में। आप रनटाइम सेटिंग बदलते हैं और मौजूदा कोड एक स्थायी प्रक्रिया के रूप में चलता है। पूरा विचार यही है, ताकि आप ऐप को सरल शुरू करें और किसी फ़ीचर को सचमुच ज़रूरत पड़ने पर ही कंटेनर पर जाएँ।
इसका osFoundry के bring-your-own-key और local-first होने से क्या संबंध है?
कंटेनर कंप्यूट इस बारे में है कि आपके ऐप का बैकएंड कहाँ चलता है, इसलिए यह osFoundry के बाकी हिस्से के साथ-साथ चलता है: आपकी कीज़, आपके मॉडल और आपका डेटा आपके नियंत्रण में रहते हैं, और ऐप का बैकएंड किसी अलग होस्टिंग अकाउंट के बजाय उसी वर्कस्पेस में रहता है जहाँ आपकी चैट, एजेंट, कोड और डेटा हैं।