2017-01-25 7 views
7

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

मैं निम्नलिखित प्रश्न हैं:

Serverless का उपयोग कर

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

एसईएस के माध्यम से ईमेल भेजने के संबंध में। जब आप किसी विशेष खाते की प्रेषण सीमा तक पहुंचते हैं तो आप थ्रॉटलिंग को कैसे संभालेंगे? क्या आप घातीय बैकऑफ करते हैं? मुझे कोड बेस में यह प्रतीत नहीं होता है। यदि आप मुझे ऐसा करते हैं तो रेपो में सामान्य क्षेत्र में मुझे इंगित कर सकते हैं तो मैं बहुत आभारी रहूंगा।

उत्तर

5
  1. चंद्रमाइल के टेबल नाम s-templates.json में संग्रहीत हैं। यह फ़ाइल शायद ही कभी छूती है और इसलिए टीम ने अभी तक इस समस्या का अनुभव नहीं किया है, लेकिन यह सच है कि खतरे अभी भी है, और मैं एडब्ल्यूएस टीम से सवाल पूछूंगा कि सीएफ में इसे नामित करके टेबल छोड़ने से कैसे बचें।
  2. यह Cloud Watch invocation के साथ सीमा केस भेजने में पुनः प्रयास करता है (अगर मैं गलत हूं तो एमएम टीम मुझे सही करे, लेकिन 99% यकीन है कि मैं नहीं हूं)।
+1

@ जूलियन सवाल थ्रॉटलिंग प्रश्न के संबंध में, जब यह भेजने की दर से अधिक है तो हम सिर्फ कतार पर ईमेल रखते हैं, और यह होगा कतार खाली होने तक स्वचालित रूप से पुनः प्रयास किया जाता है (अधिक देखें [यहां] (https://github.com/microapps/MoonMail/blob/master/events/lib/send_email_service.js#L134))। यदि हम दैनिक सीमा को दबाते हैं, तो हम केवल भेजने की प्रक्रिया को रोकते हैं, क्योंकि कोटा अगले दिन तक बहाल नहीं किया जाता है, लेकिन हम इसे पहुंचने से बचने के लिए अभियान भेजने से पहले कुछ चेक करते हैं। – davids

5

क्लाउड फॉर्मेशन द्वारा गलती से हटाए जाने से रोकने के लिए आप अपनी डायनेमोडीबी टेबल बनाते समय DeletionPolicy: Retain सेट कर सकते हैं।

यदि आपका लैम्ब्डा एसएनएस द्वारा बुलाया जाता है तो एसईएस सीमा पार होने पर आप बस असफल हो सकते हैं। एसएनएस फिर बैक-ऑफ का उपयोग करके डिलीवरी को दोबारा हटा देगा।

3

इस समय मेरा दृष्टिकोण डायनेमोड को एक अलग प्रक्रिया में बनाना है। तो मेरा सर्वर रहित सेटअप केवल पढ़ने के लिए, कोई डीबी निर्माण नहीं है। क्योंकि मुझे नहीं लगता कि मैं अक्सर अपने डीबी को फिर से बनाउंगा :)