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