जैसा कि अन्य ने कहा है, 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 समय नहीं है। कच्चे प्रदर्शन तुलनाओं पर अपने ऐप की तैनाती के लिए आपको आसानी से उपयोग और रखरखाव पर विचार करना चाहिए, भले ही सर्वश्रेष्ठ प्रदर्शन करने वाली तैनाती कॉन्फ़िगरेशन प्ले के मामले में तर्कसंगत रूप से सबसे आसान विकल्प भी हो।
स्रोत
2013-07-01 23:13:28
धन्यवाद, बहुत विस्तृत उत्तर ... :) वैसे, मैं इस आवेदन के साथ जाने के लिए MongoDB का उपयोग कर रहा हूं। – popcoder
धन्यवाद! इसके अलावा, मोंगोडीबी बहुत अच्छा है, लेकिन, किसी भी डेटाबेस के साथ, अभी भी प्रदर्शन में इसकी सीमाएं हैं। कुछ प्रकार के प्रश्न एक रिलेशनल डेटाबेस से अधिक समय लेते हैं, लेकिन स्केलेबिलिटी के लिए शेडिंग इतना आसान है। इस पर निर्भर करता है कि आपके डेटा को संरचित/संरचित कैसे किया गया है। सब कुछ प्रौद्योगिकी में एक व्यापार है :-) –