संपादन योग्य साइट सामग्री संग्रहीत करना?


9

हमारे पास एक Django- आधारित वेबसाइट है जिसके लिए हम कुछ सामग्री (पाठ, और व्यावसायिक तर्क जैसे मूल्य निर्धारण योजनाएं) को आसानी से संपादन योग्य बनाना चाहते थे , और इसलिए हमने इसे कोडबेस के बाहर संग्रहीत करने का निर्णय लिया। आमतौर पर इसका कारण निम्न में से एक है:

  • यह ऐसा कुछ है जिसे गैर-तकनीकी लोग संपादित करना चाहते हैं। एक उदाहरण एक वेबसाइट के लिए कॉपी राइटिंग है - प्रोग्रामर टेक्स्ट के साथ एक टेम्प्लेट तैयार करते हैं जो "लोरम इप्सम ..." के लिए डिफॉल्ट करता है, और वास्तविक सामग्री डेटाबेस में बाद में डाली जाती है।

  • यह कुछ ऐसा है जिसे हम नए कोड को तैनात करने की आवश्यकता के बिना जल्दी से बदलने में सक्षम होना चाहते हैं (जो हम वर्तमान में सप्ताह में दो बार करते हैं)। एक उदाहरण वर्तमान में मूल्य निर्धारण के विभिन्न स्तरों पर ग्राहकों के लिए उपलब्ध होगा। इन्हें हार्डकोड करने के बजाय, हमने इन्हें डेटाबेस से पढ़ा।

वर्णित समाधान लचीला है, लेकिन कुछ कारण हैं जो मुझे पसंद नहीं हैं।

  • क्योंकि सामग्री को डेटाबेस से पढ़ा जाना है, इसलिए एक प्रदर्शन ओवरहेड है

    हम एक कैशिंग योजना का उपयोग करके इसे कम करते हैं, लेकिन यह सिस्टम में कुछ जटिलता भी जोड़ता है।

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

    हम कभी-कभार (जैसे डेटा माइग्रेशन जोड़कर) रिपॉजिटरी में नए राज्य को कम करके इसे कम कर सकते हैं, लेकिन यह गलत दृष्टिकोण की तरह लगता है। क्या यह?

किसी भी विचार कैसे इन समस्याओं को हल करने के लिए सबसे अच्छा? क्या मैं जिस सामग्री को देख रहा हूं, उसे संभालने के लिए एक बेहतर तरीका है?


2
इस तरह की समस्याओं को हल करने का सबसे अच्छा तरीका 'विश्लेषण पक्षाघात' से बचना है। किसी भी तरह से आप ऐसा करने के लिए चुनते हैं ओवरहेड होगा, दूसरे या तीसरे से अधिक न जोड़ें अपने आप को अनुमान लगाते हुए।
निशाचर

हम यहां कितनी राज्य की तारीख के बारे में बात कर रहे हैं? कुछ केबीएस, megs?
अमित वधवा

जवाबों:


5

आपको एक पूर्ण सुविधा के रूप में संपादन योग्य सामग्री के बारे में सोचना चाहिए ।

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

लेकिन, आप सामग्री को संपादन योग्य बनाने के बजाय, उस तकनीकी लोगों को आपके विकास प्रवाह का हिस्सा बना सकते हैं। डेटा के विकास के बजाय -> परिनियोजन -> परिवर्तन, आप डेटा को बदल सकते हैं -> विकसित -> परिनियोजन। हो सकता है कि आप ऑक्टोप्रेस जैसे स्टैटिक ब्लॉगिंग प्लेटफॉर्म से कुछ आइडिया उधार ले सकें


0

यह आपके DevOps के लिए एक अच्छा काम है। :) आप निम्नलिखित कर सकते हैं:

  1. अलग-अलग विरूपण साक्ष्य / वीसीएस रिपॉजिटरी में संपादन योग्य संसाधन डालें (मैं यहाँ Git शब्दावली का उपयोग करूँगा)।
  2. अपनी निर्माण और परिनियोजन प्रक्रिया को लागू करें ताकि इन संसाधनों को केवल उस रिपॉजिटरी से सर्वर पर अलग स्थान पर खींच लिया जाएगा (आप विभिन्न वातावरणों के लिए कुछ सम्मेलन स्थापित कर सकते हैं, इसलिए आपको प्रत्येक के लिए अलग से इस स्थान को कॉन्फ़िगर करने की आवश्यकता नहीं होगी)।
  3. जब उपयोगकर्ता वेब साइट पर कुछ बदलता है, तो परिवर्तन केवल संसाधन फ़ाइल में सहेजा जाता है। दूरस्थ रिपॉजिटरी पर पुश प्रत्येक परिवर्तन पर एसिंक्रोनस रूप से निष्पादित किया जाता है।
  4. किसी भी परिवर्तन को लागू करने के लिए, डेवलपर संपादन कार्यक्षमता को अक्षम करता है और अपने परिवर्तनों को दूरस्थ रिपॉजिटरी में विलय करता है। फिर, उत्पादन पर, वह दूरस्थ रेपो से मर्ज की गई फ़ाइलों को खींचता है। उसके बाद, संपादन कार्यक्षमता को फिर से सक्षम किया जा सकता है।

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


0

किसी भी विचार कैसे इन समस्याओं को हल करने के लिए सबसे अच्छा?

हमारी वही स्थिति थी। हमने निम्नलिखित Django ऐप्स का उपयोग करके समाप्त किया:

यह सही नहीं है, लेकिन यह आपको वह सब देता है जो आपको चाहिए:

  • गैर-तकनीकी लोग संपादित कर सकते हैं,
  • कोई कोड तैनाती की जरूरत है।
  • यदि आपको संस्करण नियंत्रण की आवश्यकता है, तो रिवर्सिंग ऐप आपको बस यही देगा।

डेवलपर्स के पास उत्पादन प्रणाली के समान पृष्ठों का अनुभव होता है, यदि वह वास्तविक आवश्यकता है, तो उत्पादन से विकास और निर्यात से जुड़नार का उपयोग करके परीक्षण करें।

क्या मैं जिस सामग्री को देख रहा हूं, उसे संभालने के लिए एक बेहतर तरीका है?

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.