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