मैनुअल तैनाती बनाम अमेज़ॅन इलास्टिक बीनस्टॉक


114

मैकाले ईसी 2 उदाहरण बनाने और एक विशिष्ट जावा वेब अप्लिकेशन के लिए टॉमकैट सर्वर और तैनाती आदि स्थापित करने पर इलास्टिक बर्नस्टॉक का उपयोग करके हमें क्या फायदे हैं। क्या लोड संतुलन, निगरानी और ऑटोसालिंग केवल फायदे हैं?

मेरे वेब अनुप्रयोग के लिए मान लीजिए जो डेटाबेस का उपयोग करता है मैंने EC2 उदाहरण में डेटाबेस स्थापित किया है। जब ऑटोस्कोपिंग होता है तो क्या डेटाबेस नए बनाए गए इंस्टेंस में बन जाता है या यह मास्टर उदाहरण में मेरे द्वारा बनाए गए डेटाबेस को एक्सेस कर रहा होगा ... यदि ऑटोकैलिंग होने पर यह सिर्फ एक प्रतिकृति बनाता है तो इंस्टेंस के बीच डेटा सिंक कैसे होगा?

जवाबों:


144

आपके द्वारा बताई गई सभी चीजें जैसे लोड बैलेंसिंग, मॉनिटरिंग और ऑटो-स्केलिंग निश्चित रूप से फायदे हैं।

हालाँकि, आपको इसके बारे में इस तरह से सोचना होगा: सेवा (PAAS) के रूप में एक सच्चे प्लेटफार्म में , एप्लिकेशन को प्लेटफॉर्म से अलग करना है। एक डेवलपर के रूप में, आप केवल अपने आवेदन के बारे में चिंता करते हैं। प्लेटफॉर्म आपको "किराए पर" दिया जाता है। प्लेटफ़ॉर्म "इंस्टेंस" आपके लिए स्वचालित रूप से अपडेट, प्रशासित, स्केल किए गए, संतुलित आदि हैं। आप बस अपनी WAR फ़ाइल अपलोड करें और यह सिर्फ (कम से कम सैद्धांतिक रूप से) काम करता है।

EC2 अपने आप में PAAS नहीं है। यह IAAS ( एक सेवा के रूप में अवसंरचना ) की तरह है। आपको अभी भी सर्वर इंस्टेंस का ध्यान रखना है, उन पर सॉफ्टवेयर इंस्टॉल करना है, उन्हें अपडेट रखना है, आदि।

इलास्टिक बीनस्टॉक एक PAAS प्रणाली है। तो कई अन्य लोगों के बीच ऐप इंजन और एज़्योर हैं।

एक सच्चे PAAS प्रणाली में, DBMS वेब एप्लिकेशन सर्वर (एस) से एक अलग घटक है। कारण स्पष्ट है: DBMS संभवतः उन इंस्टेंस पर स्थापित नहीं किया जा सकता है जो एप्लिकेशन सर्वर के लिए उपयोग किए जा रहे हैं, क्योंकि आपके ट्रैफ़िक के आधार पर इंस्टेंस बनाए और नष्ट किए जाते हैं, तो DBMS खो जाएगा! एक ही मशीन / उदाहरण पर DBMS और एप्लिकेशन सर्वर का होना आम तौर पर वैसे भी एक अच्छा विचार नहीं है।

PAAS प्रणाली में, DBMS एक अलग सेवा है। अमेज़न के लिए, यह अमेज़न आरडीएस होगा । इलास्टिक बीनस्टॉक की तरह, जहां आपको एप्लिकेशन सर्वर के बारे में चिंता करने की ज़रूरत नहीं है और आप अपनी WAR फ़ाइल को आरडीएस के साथ अपलोड करते हैं, आपको DBMS के बारे में चिंता करने की ज़रूरत नहीं है और आप बस अपना डेटाबेस तैनात करते हैं।

लोचदार बीनस्टॉक और आरडीएस एक साथ बहुत अच्छी तरह से काम करते हैं, खासकर जब एक ही उपलब्धता क्षेत्र में तैनात किया जाता है, जहां विलंबता बहुत कम होगी।

अंत में, Elastic Beanstalk का उपयोग करने से तैनात संसाधनों (EC2 इंस्टेंस और लोड बैलेंसर) से अधिक कुछ भी खर्च नहीं होता है। हालांकि, आरडीएस सस्ता नहीं है और निश्चित रूप से एप्लिकेशन सर्वर और डीबीएमएस दोनों के लिए एकल ईसी 2 उदाहरण का उपयोग करने की तुलना में अधिक महंगा होगा।


3
अच्छी तरह से डाल दिया। बस एक अतिरिक्त: आप प्रत्येक उदाहरण निर्माण के लिए आधार के रूप में सेवा करने के लिए एक कस्टम एएमआई निर्दिष्ट कर सकते हैं। इसलिए आप उदाहरण के लिए अपाचे छवि को सभी कॉन्फ़िगरेशन और आवश्यक ऐप्स के साथ कस्टमाइज़ कर सकते हैं और इसे आधार एएमआई के रूप में उपयोग कर सकते हैं (बीनस्टॉक पर्यावरण कॉन्फ़िगरेशन पर एक कस्टम एएमआई आईडी फ़ील्ड है) फिर भी, रनटाइम जनरेट किए गए डेटा को वास्तव में हर समाप्ति पर हटा दिया जाएगा। (और लोड बैलेंसर ऐसा करेगा!)।
एंड्रे फेलिप

1
एक बात जिसने मुझे चौकन्ना कर दिया, वह तथ्य यह था कि इलास्टिक बीनस्टॉक तैनात किए गए प्रत्येक वातावरण के लिए एक लोड बैलेंसर बनाता है। लोड बैलेंसर्स वास्तव में चलाने के लिए महंगे नहीं हैं, लेकिन वे एक सूक्ष्म उदाहरण के रूप में लगभग एक ही लागत हैं।
केन लियू

@KenLiu, लोड बैलेंसर एक माइक्रो उदाहरण से अधिक शक्तिशाली है।
बिगसैक

7
@BigSack - मैं जिस बिंदु को बनाने की कोशिश कर रहा था, वह यह है कि इलास्टिक बीनस्टॉक को मुक्त माना जाता है, लेकिन AWS यह स्पष्ट नहीं करता है कि प्रत्येक वातावरण एक लोड बैलेंसर आवंटित करेगा, जिसकी कीमत आपको $ 15 प्रति माह होगी। मैं एक माइक्रो उदाहरण के साथ तुलना नहीं कर रहा था।
केन लियू

जहां तक ​​मुझे पता है, आरडीएस इन दिनों ईसी 2 की कीमत के बराबर है, जबकि कहीं अधिक उपयोगिता, स्थिरता और विश्वसनीयता प्रदान करता है।
जस्टिन स्किअर

38

इलास्टिक बीनस्टाक लोड संतुलन, निगरानी और ऑटोसालिंग से अधिक करता है।

1) आपके एप्लिकेशन के विभिन्न संस्करणों को संग्रहीत और प्रबंधित करके एप्लिकेशन संस्करणों का प्रबंधन करता है, जिससे आप आसानी से अपने अनुप्रयोगों के विभिन्न संस्करणों के बीच आगे और पीछे स्विच कर सकते हैं।

2) प्रत्येक एप्लिकेशन के लिए "वातावरण" की अवधारणा है, जिससे आप प्रत्येक वातावरण में अपने एप्लिकेशन के विभिन्न संस्करणों को तैनात कर सकते हैं। उदाहरण के लिए यह आसान है यदि आप अलग-अलग QA और DEV वातावरण सेट करना चाहते हैं, और आप आसानी से DEV में पहले एक बिल्ड को तैनात करना चाहते हैं तो QA में एप्लिकेशन के उसी संस्करण को तैनात करें जब आपकी QA टीम अगले बिल्ड के लिए तैयार हो।

3) लोचदार बीनस्टॉक कंसोल और एपीआई के लिए महत्वपूर्ण कंटेनर कॉन्फ़िगरेशन गुण (उदाहरण के लिए टॉमकैट मेमोरी सेटिंग्स) को बाहरी करता है। इस वजह से आप आसानी से सेटिंग्स को सहेज सकते हैं और उन्हें पर्यावरण के बीच कॉपी कर सकते हैं।

4) कंसोल के माध्यम से एप्लिकेशन लॉग फाइलों को देखें और स्वचालित रूप से लॉग फाइल को S3 में रोल और आर्काइव करें। (निश्चित रूप से यह सुविधा वर्तमान में थोड़ी कमजोर है।)


मेरी अवधारणा में वैसे भी, मुझे लगता है कि वह प्रदर्शन के बारे में समझना चाहता है, जो मुझे बीनस्टॉक में पसंद नहीं है, तैनाती और आपदा मामलों में खराबी, और LAMBDA का उपयोग करके सब कुछ समान या बेहतर हो सकता है। कठिन है लेकिन यह आपके लिए उच्च उपलब्धता वाली चांदी की गोली है।
लुकास रॉड्रिक्स सेना

बस अंतिम बिंदु को जोड़ने के लिए: आप सभी एप्लिकेशन लॉग को CloudWatch में अच्छी तरह से शिप कर सकते हैं।
सेबागरा

6

मेरे पास EC2 समर्पित (Nginx & Gunicorn) और बीनस्टॉक पर्यावरण (CentOS & Apk2) दोनों में एक ऐप था।

मेरी टिप्पणियों:

  • बीनस्टॉक पाॅस है। मैन्युअल रूप से EC2 उदाहरण (IAAS) बनाना, खरोंच से सब कुछ करने जैसा है, लेकिन आपके पास ठोस नियंत्रण है।

  • बीनस्टॉक डिफ़ॉल्ट CentOS और Apache (Httpd) के साथ आता है। आप ओएस को समर्पित उदाहरण में चुन सकते हैं।

  • ये बातें जो मेरे लिए मायने रखती हैं,

    • बीनस्टॉक के वातावरण में बहुत सी 504 त्रुटियां दिखाई दे रही थीं।
    • बीनस्टॉक सर्वर के दुर्घटनाग्रस्त होने पर डिबग करना मुश्किल था, क्योंकि लॉग भी दिखाई नहीं देंगे और मशीन में ssh नहीं कर सकते हैं। यह बहुत महत्वपूर्ण है।
    • सेलेरी, रेडिस (किसी अन्य पोर्ट को चलाने की आवश्यकता) जैसे उपकरणों को स्थापित / कॉन्फ़िगर करना, आदि। समर्पित उदाहरण में और अधिक आसान है।
  • मेरे मामले में, मुझे कुछ पैकेजों (जैसे पैंडॉक) की स्थापना को चलाने के लिए (बीनस्टॉक) सर्वर को स्केल करना पड़ा। ये चीजें उबंटू में अधिक सरल हैं।

  • बीनस्टॉक में स्केलिंग बहुत आसान है। क्लोनिंग सर्वर बीनस्टॉक में सीधा है।

  • मैंने दोनों मामलों में माइक्रो (समर्पित और बीनस्टॉक) लिया था। मुझे लगा कि समर्पित माइक्रो उदाहरण बेहतर था।

  • बीनस्टॉक में स्वचालित तैनाती। मुझे उसी को स्वचालित करने के लिए स्क्रिप्ट लिखना था, जो ठीक है, क्योंकि यह केवल एक बार है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.