2010-04-21 12 views
5

हमारे पास Google App Engine पर एक ऐप बनाने के कुछ अच्छे अनुभव हुए हैं, इस पहले ऐप के लक्षित दर्शक Google Apps उपयोगकर्ता हैं, इसलिए Google बुनियादी ढांचे पर होस्ट किए जाने के मामले में कोई समस्या नहीं है।Google ऐप इंजन के साथ उपलब्धता पर प्रतिक्रिया

हम इसे इतना पसंद करते हैं कि हम इसे किसी अन्य ऐप के लिए उपयोग करना चाहते हैं, हालांकि यह अगली परियोजना एक ऐसे ग्राहक के लिए है जो वास्तव में उस तकनीक में दिलचस्पी नहीं लेती है जो वह बैठती है, वे बस इसे काम करना चाहते हैं, और हर समय काम करो।

इस परिदृश्य में, यह देखते हुए कि हमारे पास प्रौद्योगिकी प्रयोज्यता और क्षमता पक्ष शामिल है, क्या कोई चिंता है कि यह सामान अभी भी अपेक्षाकृत नया है और हम जितना अधिक "नियंत्रण में नहीं हो सकते" जैसे हमने इसे किया था पारंपरिक होस्टिंग?

उत्तर

8

आप सही कर रहे हैं: आप पारंपरिक होस्टिंग बनाम के रूप में ज्यादा नियंत्रण में नहीं हैं। हालांकि, उम्मीद है कि लाभ नकारात्मकों को अधिक वजन देगा। ऐप इंजन बेहद स्केलेबल है - यह उसी हार्डवेयर पर चलता है जो Google को चलाता है। आपने कितनी बार http://google.com का दौरा किया है और क्या वह पृष्ठ या खोज परिणाम विफल हुआ है?

हालांकि आप Google को अपना कोड चलाने दे रहे हैं, फिर भी कोड आपके जैसा करना है। नई परियोजनाओं जैसे django-nonrel, आप सीधे मूल इंजन के शीर्ष पर देशी Django ऐप्स बना और चला सकते हैं, और यदि यह लाइन के नीचे आपकी ज़रूरतों को पूरा नहीं करता है, तो उस ऐप को आईएसपी में ले जाना काफी आसान है Django ऐप्स (और उनमें से बहुत सारे हैं)। नीचे इस परियोजना पर अधिक।

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

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

  • स्केलेबल वितरित वस्तु डेटासंग्रह (नीचे देखें)
  • Memcache
  • URLFetch
  • छवियों सेवा (आकार बदलने, फसल, आदि)
  • उपयोगकर्ताओं सेवा/पृष्ठभूमि प्रसंस्करण के लिए प्रमाणीकरण कार्य कतारों
  • बड़ी फ़ाइलों के लिए Django वेब templating
  • Blobstore
  • डिनायल ऑफ़ सेवा
  • transational कार्यों
  • डेटासंग्रह कर्सर
  • ईमेल के
  • भेजने (और/या प्राप्त) भेजने (और/या प्राप्त काली सूची में डालने) XMPP

के साथ चैट/आईएम/तत्काल संदेशों के आपके पास एक पूर्ण डैशबोर्ड प्रशासन कंसोल भी है जो आपको अपने ऐप के उपयोग की निगरानी करने देगा, यो आपकी बिलिंग सेटिंग्स और इतिहास, आपके कोटा उपयोग का एक पूर्ण डंप, और यहां तक ​​कि आपके एप्लिकेशन लॉग जिन्हें आप देख या डाउनलोड कर सकते हैं।

@Anurag से "मुख्य पीड़ादायक अंक" पता करने के लिए:

1 क। मुक्त कोटा काफी उदार हैं ... 5 एमएम विचार/माह प्राप्त करने वाली वेबसाइट को सशक्त करने के लिए पर्याप्त है। साथ ही, यदि आप उन्हें अपने क्रेडिट कार्ड देने के लिए Google पर भरोसा करते हैं, तो वे मुफ्त कोटा स्तरों को भी उच्च पर टक्कर देंगे। their quota page और "फ्री डिफ़ॉल्ट कोटा" और "बिलिंग सक्षम डिफ़ॉल्ट कोटा" कॉलम दोनों में संख्याओं का संदर्भ लें ... यहां कुछ उदाहरण दिए गए हैं: ए) अनुरोधों के #: 1.3 एमएम डिफ़ॉल्ट, 43 एमएम डब्ल्यू/बिलिंग सक्षम (डब्ल्यूबीई), बी) डेटास्टोर एपीआई कॉल: 10 एमएम डिफ़ॉल्ट, 140 एमएम डब्ल्यूबीई, सी) यूआरएल प्राप्त करता है: 657 के डिफ़ॉल्ट, 46 एमएम डब्ल्यूबीई

1 बी। अनुरोधों के लिए अधिकतम 30: यह आपके लिए अधिक सुरक्षा है, क्योंकि आपका ऐप अब दूसरों के साथ एक खेल के मैदान में है। Google को यह सुनिश्चित करना है कि सभी क्लाउड पड़ोसियों एक-दूसरे के साथ अच्छी तरह से खेलते हैं और सीपीयू को हॉग नहीं करते हैं। हालांकि, ऐप इंजन टीम लंबे समय तक चलने वाले पृष्ठभूमि कार्यों की अनुमति देने के लिए काम कर रही है ... अभी तक कोई समय सारिणी नहीं है, लेकिन it is on the public roadmap

1 सी। ऐप इंजन पर एक चैट सर्वर लिखना न केवल संभव है, लेकिन यह काफी सरल है। यहाँ एक का उपयोग कर बनाया है App इंजन के XMPP API - यह बहुत गूंगा है और बस वापस इस क्या वे हमें को प्रेषित करने के लिए गूँज (ध्यान रखें कि आप पहले से ही होनी चाहिए उपयोगकर्ता को आमंत्रित चैट करने के लिए हो सकता है):

from google.appengine.api import xmpp 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 

class XMPPHandler(webapp.RequestHandler): 
    def post(self): 
     msg = xmpp.Message(self.request.POST) 
     msg.reply("I got your msg: '%s'" % msg.body) 

application = webapp.WSGIApplication([ 
    ('/_ah/xmpp/message/chat/', XMPPHandler), 
], debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == '__main__': 
    main() 

1d। the public roadmap पर एक और आइटम ब्राउज़र पुश (धूमकेतु) संचार के लिए "[समर्थन] भविष्य है", तो यह भी आ रहा है।

2 ए। "एसक्यूएल नहीं" Google App Engine की सबसे बड़ी ताकत है! रिलेशनल डेटाबेस स्केल नहीं करते हैं और आरडीबीएमएस को गिरने से रोकने के लिए किसी बिंदु पर शर्मिंदा होना चाहिए।यह सच है, हालांकि यह बंदरगाह के लिए थोड़ा और मुश्किल है क्योंकि यह पारंपरिक नहीं है! Google Bigtable के आधार पर, आप ऐप इंजन डेटास्टोर को स्केलेबल वितरित ऑब्जेक्ट डेटाबेस के रूप में सोच सकते हैं। App इंजन आप query the datastore using a Query object मॉडल की सुविधा देता है, या अगर आप जोर देते हैं, वे भी एक SQL-like GqlQuery interface प्रदान करते हैं।

2 बी। django-nonrel जैसी नई अवंतगार्डे परियोजनाओं के साथ, यदि आप एक Django ऐप बनाते हैं और इसके ओआरएम का उपयोग करते हैं, तो आप एक शुद्ध Django ऐप ले सकते हैं और इसे सीधे ऐप इंजन के शीर्ष पर चला सकते हैं। इसी तरह, आप इसे ऐप इंजन से बंद कर सकते हैं और सीधे इसे अधिक पारंपरिक आईएसपी विक्रेता के पास ले जा सकते हैं जो Django अनुप्रयोगों को होस्ट करता है। प्रश्न बिल्कुल वही रहते हैं, और यदि आपको एसक्यूएल करता है या नहीं तो आपको परवाह नहीं है।

3 ए। लंबी चल रही प्रक्रियाओं को पहले से ही 1 बी में संबोधित किया गया है। Google इस आवश्यकता के बारे में जागरूक है और इस पर काम कर रहे हैं।

3 बी। TaskQueue API 100k कॉल का समर्थन करता है, लेकिन यह 1 एमएम डब्लूबीई तक पहुंच गया है ... और यह दैनिक आधार पर है।

3 सी। Google कई उप-कार्य में कार्यों को तोड़ने के लिए दृढ़ता से प्रोत्साहित करता है। कम विलंबता ऐप्स को "सिस्टम को हॉग" नहीं किया जाता है और उन लोगों की तुलना में बेहतर उपचार दिया जाता है जो धीमे होते हैं और अपने क्लाउड पड़ोसियों से अधिक संसाधनों का उपभोग करते हैं।

+0

इसके लिए धन्यवाद, हालांकि मैं तकनीकी सीमा/वरीयता/आवश्यकता को पहले से ही समझता हूं और उनसे बहुत खुश हूं। मेरी सबसे बड़ी चिंता इस https://groups.google.com/group/google-appengine/browse_thread/thread/a7640a2743922dcf जैसी चीजें हैं। यद्यपि Google समस्या की व्याख्या करने के लिए शायद सबसे अधिक बेहतर रहा है, और जैसा कि आपने कहा था, यह असंभव होगा। लेकिन अगर ऐसा कुछ ऐसा होता है, तो डाउनटाइम के दौरान आपको कॉल करने और प्रतीक्षा करने के लिए कोई भी नहीं है। उस पर आपके विचार क्या हैं? –

+0

आपके पास एक अच्छा बिंदु है, और हम क्लाउड कंप्यूटिंग के दिनों में अभी भी शुरुआती हैं। हालांकि, मुझे लगता है कि उनका पोस्ट-मॉर्टम काफी व्यापक था, और टीम यह सुनिश्चित करने के लिए काम कर रही है कि भविष्य में यह सामान शायद ही कभी (यदि कभी) होता है। डाउनटाइम होने पर , आपको किसी को किसी को कॉल करने की आवश्यकता नहीं होगी * * को * पेज़ किया गया है ... इस तरह की एक प्रणाली Google के बिना नीचे नहीं जाती है, इसके बारे में नहीं जानती। अगर आपको Google से संपर्क करने की आवश्यकता महसूस होती है, तो आप यहां एक नया उत्पादन समस्या बना सकते हैं: http://code.google.com/p/googleappengine/issues/entry – wescpy

2

हां, आप पारंपरिक होस्टिंग के साथ जितना अधिक नियंत्रण में नहीं होंगे। GAE के मुख्य पीड़ादायक अंक

  1. कोटा आदि, एक अनुरोध के लिए 30 सेकंड के अधिकतम, इसलिए धूमकेतु/ajax आदि रिवर्स खिड़की या बहुत मुश्किल से बाहर हैं। Google ऐप इंजन पर चैट सर्वर लिखने का प्रयास करें।

  2. एसक्यूएल डेटाबेस नहीं, यदि आवश्यक हो तो अन्य सर्वर को बंदरगाह करना मुश्किल है और Google डेटाबेस के साथ कुछ समय सीमा एक क्वेरी को सॉर्ट करने का प्रयास करें जिसमें क्रमबद्ध एक के अलावा अलग-अलग कॉलम पर तुलना हो।

  3. लंबी चल रही प्रक्रिया, एक कार्य एपीआई है लेकिन यदि आप लंबे समय तक चलने वाली पृष्ठभूमि प्रसंस्करण करना चाहते हैं तो यह पर्याप्त नहीं है, अन्यथा आपको अपना कार्य सबटास्क में तोड़ना होगा, इसलिए चीजें जटिल हो जाती हैं और यहां तक ​​कि कोटा भी हैं प्रति सेकेंड कितने कार्य आप चला सकते हैं।

जीएई अच्छा है यदि आप ऐप को छोटे पृष्ठभूमि प्रसंस्करण के साथ अनुरोध-प्रतिक्रिया रजिस्ट्री के रूप में मॉडलिंग किया जा सकता है।

देखें यह भी Feedback on using Google App Engine?