2013-07-01 8 views
7

मैंने अपना पहला प्ले एप्लिकेशन बनाया है। उत्पादन के लिए सबसे उपयुक्त तैनाती विधि कौन सा है? क्या मुझे पूरे प्रोजेक्ट को उत्पादन सर्वर पर कॉपी करना चाहिए और नाटक शुरू करना चाहिए? या क्या मुझे अपने आवेदन से युद्ध करना चाहिए और टॉमकैट/जेबॉस में तैनात करना चाहिए? सबसे अनुशंसित तरीका कौन सा है? इसके रेलों के व्यवहार की तुलना में इसके साथ भ्रमित हो रहा है। ध्यान दें कि यह एक बड़ा डेटा एप्लिकेशन माना जाता है और यह सर्वर बाद में अनुरोधों को लोड कर सकता है। तो हम स्केलेबिलिटी, उपलब्धता, प्रदर्शन पहलुओं के बारे में भी सोच रहे हैं। इस एप्लिकेशन को क्लाउड में तैनात करने का निर्णय लिया गया है।प्ले फ्रेमवर्क 2.1 एप्लिकेशन परिनियोजन

धन्यवाद।

उत्तर

20

जैसा कि अन्य ने कहा है, dist कमांड का उपयोग एक-ऑफ एप्लिकेशन के लिए Play को तैनात करने का सबसे आसान तरीका है। हालांकि, विस्तृत करने के, मैं यहाँ कुछ अन्य विकल्पों और उनके साथ मेरा अनुभव है:

  • मुझे लगता है कि मैं अक्सर अद्यतन वाला ऐप, मैं आमतौर पर प्ले सर्वर पर स्थापित करने और Git के माध्यम से अपडेट करते हैं। ऐसा करने के बाद, प्रत्येक अपडेट के बाद, मैं बस play stop चलाता हूं (चलने वाले सर्वर को रोकने के लिए), कभी-कभी मैं किसी भी संभावित दूषित पुस्तकालयों या बाइनरी को साफ़ करने के लिए play clean चलाता हूं, फिर मैं सभी पूर्वापेक्षाएँ मौजूद हैं और संकलन करने के लिए play stage चलाता हूं, और फिर अपडेट किए गए ऐप के लिए सर्वर चलाने के लिए अंत में play start। यह बहुत कुछ लगता है, लेकिन त्वरित बैश स्क्रिप्ट के माध्यम से स्वचालित करना आसान है।

  • एक और तरीका अपाचे, निगेंक्स इत्यादि जैसे फ्रंट-एंड वेब सर्वर के पीछे प्ले को तैनात करना है। यह अधिक उपयोगी है यदि आप कुछ प्रकार के लोड संतुलन करना चाहते हैं, लेकिन इसकी आवश्यकता नहीं है क्योंकि Play इसके साथ बंडल हो जाता है स्वयं का सर्वर डॉक्स: http://www.playframework.com/documentation/2.1.1/HTTPServer

  • play2war प्लगइन एक और तरीका तैनात करने के लिए उपयोग कर रहा है एक युद्ध संग्रह बनाना है, लेकिन मैं यह सिफारिश नहीं होगा जब तक आप इसे कोई है जो पहले से ही एक प्रमुख बुनियादी सुविधाओं के इन सर्वलेट कंटेनर आप का उल्लेख पर बनाया गया है करने के लिए दे रहे हैं (जैसा कि कई बड़ी कंपनियां करते हैं)। एक सर्वलेट कंटेनर का उपयोग जटिलता का स्तर जोड़ता है जिसे Play प्रकृति (इसलिए एकीकृत सर्वर) से निकालना है। कोई उल्लेखनीय प्रदर्शन लाभ नहीं है कि मैं पहले बताए गए दोनों पर इस विधि का उपयोग करने के बारे में जानता हूं।

  • बेशक, हमेशा play dist होता है जो आपके लिए पैकेज बनाता है, जिसे आप अपने सर्वर पर अपलोड करते हैं और वहां से play start चलाते हैं। यह शायद सबसे आसान विकल्प है। डॉक्स: http://www.playframework.com/documentation/2.1.1/ProductionDist

प्रदर्शन और scalability के लिए, प्ले में Netty सर्वर तुम क्या आवश्यकता के लिए बहुत असाधारण करने के लिए पर्याप्त रूप से कार्य करेंगे।यहां एक प्रतिष्ठित लिंक है जो सभी ढांचे के सबसे तेज़ प्रदर्शन और "स्टॉक" प्ले ऐप को क्षेत्र के मध्य में कहीं भी आने के साथ दिखाता है, लेकिन प्रदर्शन के संदर्भ में रेल/Django से आगे रास्ता: http://www.techempower.com/blog/2013/04/05/frameworks-round-2/

भूलें, अगर आप अधिक भार संतुलन की आवश्यकता है और उपलब्धता के लिए ऊपर वर्णित एक फ्रंट-एंड सर्वर के पीछे दौड़ने के लिए सड़क पर अपनी तैनाती वास्तुकला को हमेशा बदल सकते हैं। यह प्ले के साथ एक छोटा सा बदलाव है। मैं अभी भी WAR परिनियोजन विकल्प की अनुशंसा नहीं करता, जब तक मैंने कहा, आपके पास पहले से ही सर्वलेट कंटेनर का एक बड़ा स्थापित आधार है जिसका उपयोग आप किसी के साथ अपने ऐप की सेवा करने के लिए मजबूर कर रहे हैं।

स्केलेबिलिटी और प्रदर्शन के साथ-साथ अन्य कारकों के साथ भी बहुत कुछ करना पड़ता है, जैसे कि कैशिंग, डेटाबेस कॉन्फ़िगरेशन, कॉन्सुरेंसी का उपयोग (जो प्ले अच्छा है) और अंतर्निहित हार्डवेयर या क्लाउड की गुणवत्ता मंच। उदाहरण के लिए, Instagram और Pinterest प्रत्येक दिन पाइथन/Django स्टैक पर लाखों लोगों की सेवा करते हैं, जिनमें सभी लोकप्रिय मानकों द्वारा औसत प्रदर्शन होता है। वे बहुत कम कैशिंग और उच्च प्रदर्शन डेटाबेस (जो आम तौर पर बड़े अनुप्रयोगों में बाधा है) के साथ कम करते हैं।

इस उत्तर को बहुत लंबा बनाने के जोखिम पर, मैं बस एक आखिरी चीज़ जोड़ूंगा। मैं भी, प्रदर्शन और स्केलेबिलिटी पर परेशान था, सोच रहा था कि मुझे अपने ऐप्स चलाने के लिए सबसे शक्तिशाली स्टैक और कॉन्फ़िगरेशन की आवश्यकता है। यह तब तक मामला नहीं है जब तक कि आप Google या फेसबुक स्केल की तरह बात नहीं कर रहे हैं, जहां प्रत्येक एल्गोरिदम को बारीकी से ट्यून किया जाना चाहिए क्योंकि इसे प्रतिदिन एक बिलियन बार बमबारी कर दिया जाएगा। हार्डवेयर (या क्लाउड) संसाधन सस्ते हैं लेकिन डेवलपर/sysadmin समय नहीं है। कच्चे प्रदर्शन तुलनाओं पर अपने ऐप की तैनाती के लिए आपको आसानी से उपयोग और रखरखाव पर विचार करना चाहिए, भले ही सर्वश्रेष्ठ प्रदर्शन करने वाली तैनाती कॉन्फ़िगरेशन प्ले के मामले में तर्कसंगत रूप से सबसे आसान विकल्प भी हो।

+1

धन्यवाद, बहुत विस्तृत उत्तर ... :) वैसे, मैं इस आवेदन के साथ जाने के लिए MongoDB का उपयोग कर रहा हूं। – popcoder

+1

धन्यवाद! इसके अलावा, मोंगोडीबी बहुत अच्छा है, लेकिन, किसी भी डेटाबेस के साथ, अभी भी प्रदर्शन में इसकी सीमाएं हैं। कुछ प्रकार के प्रश्न एक रिलेशनल डेटाबेस से अधिक समय लेते हैं, लेकिन स्केलेबिलिटी के लिए शेडिंग इतना आसान है। इस पर निर्भर करता है कि आपके डेटा को संरचित/संरचित कैसे किया गया है। सब कुछ प्रौद्योगिकी में एक व्यापार है :-) –

4

आपको एप्लिकेशन चलाने के लिए Play's console का उपयोग करने की आवश्यकता नहीं है, यह कुछ संसाधनों का उपभोग करता है और इसका मुख्य लक्ष्य विकास चरण के दौरान तेज़ लॉन्च होता है।

सबसे अच्छा विकल्प दस्तावेज़ में वर्णित dist command का उपयोग कर रहा है। इसके लिए धन्यवाद, आपको लक्ष्य मशीन पर Play इंस्टॉल करने की भी आवश्यकता नहीं है, क्योंकि dist स्टैंड-अलोन एप्लिकेशन का उपयोग करने के लिए तैयार है जिसमें सभी आवश्यक तत्व शामिल हैं (सर्वर में भी बिल्ड करें, इसलिए आपको इसे युद्ध के साथ तैनात करने की आवश्यकता नहीं है किसी भी कंटेनर में)।

यदि आप क्लाउड का उपयोग करने की योजना बना रहे हैं तो आपको ऑफ़र भी जांचना चाहिए। हेरोकू, या क्लाउडबीज से, जो आपको केवल अपने आवेदन को तैनात करने की अनुमति देता है ... गिट रिपोजिटरी के माध्यम से परिवर्तन को दबाकर, जो बहुत ही आरामदायक तरीका है, documentation's home देखें, लिंक पर नीचे स्क्रॉल करें: अधिक जानकारी के लिए पर तैनाती।

संबंधित मुद्दे