डीबी प्रवास और एज़्योर तैनाती स्लॉट


16

मैं एक नए वेब एप्लिकेशन को Azure वेब ऐप सेवा (पूर्व Azure वेबसाइट) पर धकेलने की योजना बना रहा हूं। मैं तैनाती स्लॉट्स का उपयोग करना चाहता हूं ताकि उत्पादन पर जोर देने से पहले मेरी तैनाती का परीक्षण कर सकें। जब तक कोई DB स्कीमा परिवर्तन की आवश्यकता नहीं है तब तक सब ठीक है। लेकिन अगर कोई स्कीमा परिवर्तन है तो मैं एक ही db संस्करण पर दो सॉफ्टवेयर संस्करण को संचालित नहीं कर सकता। चूंकि मैं ईएफ माइग्रेशन का उपयोग कर रहा हूं, स्टेजिंग स्लॉट पर धक्का तुरंत नवीनतम संस्करण में डीबी अपडेट में परिणाम देगा।

तो मेरा सवाल यह है कि क्या डीबी प्रवास की आवश्यकता होने पर तैनाती स्लॉट का कोई उपयोग है?

यह बड़े सास प्रदाताओं के लिए कैसे किया जाता है। क्या वे नए संस्करण के साथ तुरंत DB प्रवास कर रहे हैं? यह निश्चित रूप से कुछ डाउनटाइम का कारण होगा।

मैं केवल इस समस्या के जटिल समाधान के बारे में सोच सकता हूं, क्या कुछ सरल है?


तो आप एक देव डेटाबेस नहीं है?
जेएफओ

हां, हमारे पास एक देव और क्यूए प्रणाली है। ऊपर वर्णित प्रणाली उत्पादन उद्देश्यों के लिए है।
सैम '

@ Sam7 क्या आपने इस समस्या का हल खोजने का प्रबंधन किया है? चीयर्स
वेस्टडिसकॉल्फ

मुझे डर नहीं लग रहा है। वर्तमान में हम एक अलग वातावरण में प्रवास परिवर्तनों का परीक्षण कर रहे हैं।
सैम '

@ सैम 7: मुझे लगता है कि आप इसे एक अलग .config-file द्वारा अपने db के कनेक्शन कनेक्शन स्ट्रिंग द्वारा प्रबंधित कर सकते हैं। लेकिन आप सही हैं, जब आप मंच से उत्पादन के लिए तैनात करते हैं, तो रोलबैक का लाभ अब काम नहीं करता है। डीबी परिवर्तन तुरंत लागू होंगे। मैं निकट भविष्य में एक समाधान के लिए उत्सुक हूँ ...
रोजर एस।

जवाबों:


3

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

कुछ नियम जो यह सुनिश्चित करते हैं:

  • कोई भी नया डेटाबेस कॉलम अशक्त होना चाहिए या डिफ़ॉल्ट मान होना चाहिए
  • कॉलम का नाम बदलने की अनुमति नहीं है
  • स्तंभ छोड़ने की अनुमति नहीं है

जब आपको स्तंभों को बदलने या छोड़ने के लिए विनाशकारी परिवर्तन करने की आवश्यकता होती है, तो आपको ऐसा करने के लिए 2 रिलीज़ की आवश्यकता होती है:

  1. वेब ऐप का नया संस्करण जारी किया जाना चाहिए, जो नामांकित / गिराए गए स्तंभों पर निर्भरता को हटाता है
  2. एक अतिरिक्त रिलीज़ किया जाता है जो विनाशकारी परिवर्तन करता है

हालांकि यह थोड़ा जटिल लगता है, व्यवहार में आप अक्सर विनाशकारी परिवर्तन नहीं करेंगे।


0

क्या आपने स्लॉट-विशिष्ट कॉन्फ़िगरेशन आइटम को देखा है? WebApp / Settings / Application Settings के तहत आप वेब ऐप के लिए सेटिंग्स निर्दिष्ट कर सकते हैं लेकिन यह भी परिभाषित कर सकते हैं कि क्या यह केवल इस स्लॉट पर लागू होता है।

इसलिए, आप अपने स्टेजिंग स्लॉट के लिए स्लॉट-विशिष्ट कनेक्शन स्ट्रिंग रख सकते हैं और स्वैपिंग स्लॉट पर माइग्रेशन भी लागू कर सकते हैं।


2
उत्पादन के रूप में सटीक डेटासेट (-> डेटाबेस) से काम करने वाली स्टेजिंग साइट होने के मेरे विचार के खिलाफ जाता है।
सैम '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.