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