- डेवलपमेंट और टेस्टिंग के लिए डेटाबेस चलाते समय लागत और जटिलता की समस्या हल करने की एक तरकीब
- VPS, cloud VM, managed service आदि में लगातार लागत और storage शुल्क लगता है
- configuration का काम जटिल होता है और उपयोग न होने पर भी resource लागत चुकानी पड़ती है
- विकल्प: GitHub Actions और S3 का उपयोग करके डेटाबेस चलाना
- ज़रूरत पड़ने पर ही GitHub Actions से अस्थायी डेटाबेस चलाना
- AWS S3 या S3-compatible storage का उपयोग करके डेटा को स्थायी रूप से स्टोर करना
- workflow समाप्त होने पर डेटा बना रहता है और execution environment हट जाता है, जिससे लागत कम की जा सकती है
- tunneling के ज़रिए डेटाबेस को इंटरनेट पर अस्थायी रूप से public access दिया जा सकता है
- उपयोग करते समय सावधानियाँ
- यह तरीका केवल अल्पकालिक integration test, अस्थायी demo, और सरल development कार्यों के लिए उपयुक्त है
- GitHub Actions का लंबे समय की service platform के रूप में दुरुपयोग न करें
- अगर लगातार और दीर्घकालिक डेटाबेस होस्टिंग चाहिए, तो Self-Hosted Runner या अलग डेटाबेस service सेट करना अधिक उचित है
- GitHub की उपयोग नीतियों का पालन करते हुए इसका संचालन करना चाहिए
मुख्य विचार
- GitHub Actions के अस्थायी computing environment का उपयोग
- CI/CD या test workflow के हिस्से के रूप में केवल ज़रूरत पड़ने पर MySQL-compatible डेटाबेस चलाना
- S3-compatible storage के माध्यम से डेटा का स्थायी संरक्षण
- AWS S3 या Cloudflare R2 जैसे object storage में डेटा स्टोर करना
- अस्थायी environment समाप्त होने पर भी डेटा object storage में सुरक्षित बना रहता है
- public access के लिए tunneling
- test या demo के लिए डेटाबेस को इंटरनेट पर अस्थायी रूप से expose करना
- अल्पकालिक उपयोग के लिए उपयुक्त
- डेटाबेस केवल workflow चलने की अवधि तक ही काम करता है
- workflow समाप्त होने के बाद अस्थायी computing resource मुक्त हो जाते हैं, और यह स्थायी hosting solution नहीं है
- पूरी तरह मुफ्त में उपयोग करने के लिए
- Cloudflare R2 जैसी free tier देने वाली S3-compatible service पर विचार करें
उपयोग के मामले
- CI/CD integration test: MySQL-compatible environment को वास्तव में चलाकर test के बाद बंद करना
- अस्थायी demo: जल्दी साझा किए जा सकने वाले डेटाबेस instance को अल्पकालिक रूप से बनाना
- अल्पकालिक development कार्य: लगातार maintenance के बिना वास्तविक डेटाबेस environment में test करना
- अनुशंसित नहीं किए जाने वाले उपयोग के मामले:
- दीर्घकालिक डेटाबेस होस्टिंग
- हमेशा सक्रिय public डेटाबेस endpoint बनाए रखना
- GitHub Actions की उपयोग नीतियों को दरकिनार करना
- महत्वपूर्ण: GitHub Actions कोई स्थायी service platform नहीं है, बल्कि CI/CD के लिए डिज़ाइन किया गया है। अगर दीर्घकालिक डेटाबेस होस्टिंग चाहिए, तो Self-Hosted Runner सेटअप पर विचार करना चाहिए
13 टिप्पणियां
यह अनपेक्षित उपयोग जैसा लगता है। सिर्फ तकनीकी रूप से संभव होने के कारण जानबूझकर ऐसे तरीके का इस्तेमाल करना, जिसकी सिफारिश नहीं की जाती, उससे बचना चाहिए।
"डेवलपमेंट और टेस्टिंग के लिए डेटाबेस चलाते समय लागत और जटिलता की समस्या हल करने की जुगाड़" ऐसा लिखा है, इसलिए जिनमें सामान्य समझ है वे खुद ही ठीक से निर्णय ले लेंगे।
Hyrum's Law (https://www.hyrumslaw.com/) के बारे में सोचें तो,
मुझे लगता है कि यह ऐसा तरीका है जो कभी न कभी किसी के दिमाग में आ ही सकता था.
लेकिन जैसा कि आपमें से दूसरे लोग कह रहे हैं, इस तरह का दुरुपयोग आखिरकार और बड़ी असुविधा लेकर आता है.
GitHub के free tier में GitHub Actions हट जाए तो… आह… तब समझ आता है… यह कितनी अच्छी चीज़ थी…
मुझे नहीं लगता कि यह abuse है
एक DB चलाने से सर्वर पर भला कितना लोड पड़ेगा.. और पोस्ट के मुताबिक, इसे सिर्फ थोड़ी देर के लिए ही चलाया जाता है।
CI प्रक्रिया में टेस्ट DB चलाना भी नहीं, बल्कि जानबूझकर workflow को delay करके उसे hosted DB बना देना समस्या भरा लगता है। 'थोड़ी देर' की परिभाषा भी अस्पष्ट है।
"यानी केवल तब, जब CI/CD या test workflow के हिस्से के रूप में इसकी ज़रूरत हो?"
अगर पेड यूज़र हैं, तो क्या यह ठीक नहीं होगा? आखिरकार, वे दिए गए usage limit के भीतर ही इसका इस्तेमाल करेंगे।
उससे ज़्यादा होने पर charge किया जाएगा।
https://docs.github.com/en/site-policy/…
"ठीक है" की सीमा कहाँ तक है, यह तो पता नहीं, लेकिन दस्तावेज़ में स्पष्ट रूप से लिखा है कि शुल्क लगेगा या नहीं यह बताए बिना इसे केवल program testing के उद्देश्य से इस्तेमाल करने की सिफारिश की गई है। और service का दुरुपयोग होने पर account terminate करने जैसे अधिकार स्वाभाविक रूप से Github के पास हैं।
हाहाहा, मज़ेदार है। ये करके पता नहीं कितना बचाया जा सकता होगा..
यह abuse है। मेरा मानना है कि ऐसे कामों में जितने resources खर्च होते हैं, वे अच्छे इरादे वाले व्यक्तियों और open source के लिए इस्तेमाल होने चाहिए; इससे GitHub की मुफ्त सेवा चलाने की लागत बढ़ती है और आखिरकार उसका बोझ हम सब पर पड़ता है।
जैसा कि Actions का इस्तेमाल करके crypto mining करने के समय हुआ था, अगर इस तरह की गतिविधियां बढ़ती रहीं तो नीतियां धीरे-धीरे और सख्त होती जाएंगी।
टनेलिंग को रोकने के लिए outbound पर पाबंदी लगानी पड़ेगी, और उसका नतीजा यह होगा कि आम users के लिए चीजें और भी असुविधाजनक हो जाएंगी।
सहमत हूँ
Hacker News की टिप्पणियाँ देखने पर यह आलोचना भी है कि यह अपने-आप में abuse है.
https://news.ycombinator.com/item?id=42397167
यह पहले से ही सार्वजनिक पोस्ट है, और बस इस स्तर पर कि अरे, ऐसा भी संभव है? सोचकर एक बार साझा कर रहा/रही हूँ.