मैं एक मोनोलिथ आर्किटेक्चर में एक अखंड रीस्ट एपीआई को स्थानांतरित करने पर विचार कर रहा हूं, और मैं डेटा स्टोरेज के बारे में थोड़ा भ्रमित हो रहा हूं। जैसा कि मैंने इसे देखा है, माइक्रोसिस्टम के कुछ लाभ होंगे:
- क्षैतिज रूप से स्केलेबल - मैं लोड और / या नीचे जाने वाले सर्वर के साथ सामना करने के लिए एक माइक्रोस सर्विस की कई निरर्थक प्रतियां चला सकता हूं।
- ढीले-ढाले जोड़े - मैं दूसरों को बदलने के लिए बिना माइक्रोसॉफ़्ट के आंतरिक कार्यान्वयन को बदल सकता हूं, और मैं स्वतंत्र रूप से तैनात कर सकता हूं और उन्हें बदल सकता हूं ... आदि।
मेरी समस्या डेटा स्टोरेज को लेकर है। जैसा कि मैंने देखा कि इसके कई विकल्प हैं:
- सभी माइक्रोसर्विसेज द्वारा साझा की गई एक एकल डाटाबेस सेवा - यह ढीली कपलिंग के किसी भी लाभ को पूरी तरह से समाप्त करने वाली प्रतीत होगी।
- प्रत्येक microservice पर एक स्थानीय रूप से स्थापित डेटाबेस उदाहरण - मैं इसे क्षैतिज रूप से स्केल करने का एक तरीका नहीं देख सकता, इसलिए मुझे नहीं लगता कि यह एक विकल्प होगा।
- प्रत्येक microservice की खुद की डेटाबेस सेवा है - यह सबसे अधिक आशाजनक लगता है, क्योंकि यह ढीले युग्मन और क्षैतिज स्केलिंग के लाभों को सुरक्षित रखता है (निरर्थक डेटाबेस प्रतियों का उपयोग और / या कई में पैनापन)
मेरे लिए, तीसरा विकल्प एकमात्र विकल्प प्रतीत होता है, लेकिन यह मेरे लिए अविश्वसनीय रूप से हेवीवेट लगता है, और एक बहुत ही कठिन समाधान है। अगर मैं इसे सही समझ रहा हूं, तो 4-5 माइक्रोसर्विसेज के साथ एक साधारण एप्लिकेशन के लिए मुझे 16-20 सर्वर चलाना होगा - प्रति माइक्रोसेवक (सर्वर की विफलता के मामले में, और डाउनटाइम के बिना तैनाती के लिए) दो डेटाबेस सेवा प्रति माइक्रोसॉर्स सेवा (सर्वर की विफलता आदि के मामले में ...)।
यह, काफी स्पष्ट रूप से, थोड़ा हास्यास्पद लगता है। एक साधारण एपीआई को चलाने के लिए 16-20 सर्वर, यह ध्यान में रखते हुए कि एक यथार्थवादी परियोजना में संभवतः 4-5 से अधिक सेवाएं होंगी? क्या कुछ मौलिक अवधारणा है जो मुझे याद आ रही है जो इसे बताएगी?
उत्तर देते समय कुछ चीजें जो मदद कर सकती हैं:
- मैं इस परियोजना का एकमात्र विकासकर्ता हूं, और भविष्य के भविष्य के लिए होगा।
- मैं Node.js और MongoDB का उपयोग कर रहा हूं, लेकिन मुझे भाषा-अज्ञेय उत्तरों में दिलचस्पी होगी - एक उत्तर यह भी हो सकता है कि मैं सिर्फ गलत तकनीकों का उपयोग कर रहा हूं!