सॉफ्टवेयर आर्किटेक्चर शैलियाँ
सॉफ्टवेयर आर्किटेक्चर शैलियाँ नामबद्ध, पुन: प्रयोज्य आयोजन योजनाएँ हैं जो उन घटकों और संयोजकों के प्रकारों को परिभाषित करती हैं जिनका एक सिस्टम उपयोग करता है और उन्हें कैसे संयोजित किया जा सकता है, इस पर लगे प्रतिबंधों को भी परिभाषित करती हैं।
Definition
एक आर्किटेक्चर शैली आर्किटेक्चर का एक परिवार है जिसकी विशेषता घटक और संयोजक प्रकारों की शब्दावली और उन प्रकारों के इंस्टेंस को कैसे कॉन्फ़िगर किया जा सकता है, इस पर प्रतिबंधों का एक सेट है।
Scope
यह विषय क्लासिक शैलियों जैसे लेयर्ड (layered), क्लाइंट-सर्वर (client-server), पाइप-एंड-फ़िल्टर (pipe-and-filter), रिपॉजिटरी (डेटा-केंद्रित) (repository (data-centered)), इवेंट-ड्रिवन (event-driven) और पब्लिश-सब्सक्राइब (publish-subscribe), माइक्रोकर्नेल (microkernel), और सर्विस-ओरिएंटेड (service-oriented) तथा माइक्रोसर्विस आर्किटेक्चर (microservice architectures) को शामिल करता है; नेटवर्क वाले सिस्टम के लिए REST आर्किटेक्चरल स्टाइल (REST architectural style); और गुणवत्ता-विशेषता ट्रेड-ऑफ (quality-attribute trade-offs) जो एक शैली को दूसरी शैली पर चुनने के लिए प्रेरित करते हैं।
Core questions
- घटकों और संयोजकों की कौन सी शब्दावली प्रत्येक शैली को परिभाषित करती है?
- दी गई शैली किन गुणवत्ता विशेषताओं को बढ़ावा देती है या बाधित करती है?
- एक ही सिस्टम के भीतर शैलियों को कैसे संयोजित किया जाता है?
- REST और माइक्रोसर्विस जैसी नेटवर्क वाली और वितरित शैलियाँ क्लासिक शैलियों से कैसे भिन्न हैं?
Key theories
- घटक-संयोजक शब्दावली के रूप में शैलियाँ
- शॉ और गार्लन ने संबंधित बाधाओं के साथ घटकों और संयोजकों के आवर्ती पैटर्न द्वारा आर्किटेक्चर को चित्रित किया, जिससे इस क्षेत्र को पाइप-एंड-फ़िल्टर, लेयर्ड और रिपॉजिटरी जैसी शैलियों की शब्दावली मिली।
- REST आर्किटेक्चरल स्टाइल
- फील्डिंग ने REST को बाधाओं के एक सेट के रूप में प्राप्त किया — स्टेटलेसनेस (statelessness), यूनिफ़ॉर्म इंटरफ़ेस (uniform interface), कैशेबिलिटी (cacheability), लेयर्ड सिस्टम (layered system) — जो वेब की स्केलेबिलिटी (scalability) और इवॉल्वेबिलिटी (evolvability) की व्याख्या करते हैं और नेटवर्क-आधारित सेवा डिज़ाइन का मार्गदर्शन करते हैं।
Clinical relevance
शुरुआत में एक उपयुक्त शैली का चयन करने से सिस्टम की संरचना उसकी प्रमुख गुणवत्ता आवश्यकताओं के साथ संरेखित होती है; एक बार विकास शुरू होने के बाद शैली और आवश्यकताओं के बीच खराब तालमेल को ठीक करना मुश्किल और महंगा होता है।
Evidence & guidelines
ISO/IEC/IEEE 42010 आर्किटेक्चर विवरण को दृष्टिकोणों और विचारों के संदर्भ में प्रस्तुत करता है, जिसके भीतर शैलियों का दस्तावेजीकरण और विश्लेषण किया जाता है।
History
आर्किटेक्चरल शैलियों का वर्गीकरण 1990 के दशक के मध्य में शॉ और गार्लन के साथ शुरू हुआ जब सॉफ्टवेयर आर्किटेक्चर एक मान्यता प्राप्त अनुशासन बन गया; फील्डिंग के 2000 के शोध प्रबंध ने REST को औपचारिक रूप दिया, और 2010 के दशक में क्लाउड-स्केल सिस्टम के लिए माइक्रोसर्विस और इवेंट-ड्रिवन शैलियों का उदय देखा गया।
Key figures
- Mary Shaw
- David Garlan
- Roy Fielding
- Len Bass
Related topics
Seminal works
- shaw1996
- fielding2000
- bass2012
Frequently asked questions
- एक आर्किटेक्चरल स्टाइल और एक डिज़ाइन पैटर्न में क्या अंतर है?
- एक आर्किटेक्चरल स्टाइल सिस्टम-व्यापी संगठन का वर्णन करती है — घटकों और संयोजकों के प्रकार और उन्हें संयोजित करने के नियम — जबकि एक डिज़ाइन पैटर्न घटकों के भीतर एक अधिक स्थानीयकृत डिज़ाइन समस्या को हल करता है; शैलियाँ उच्च स्तर की ग्रैन्युलैरिटी (granularity) पर काम करती हैं।
- क्या एक सिस्टम एक से अधिक शैली का उपयोग कर सकता है?
- हाँ। वास्तविक सिस्टम आमतौर पर विषम होते हैं, शैलियों को संयोजित करते हैं — उदाहरण के लिए एक लेयर्ड आर्किटेक्चर जिसका प्रेजेंटेशन टियर इवेंट-ड्रिवन है और जिसकी सेवाएँ REST के माध्यम से संचार करती हैं — प्रत्येक शैली को वहाँ लागू किया जाता है जहाँ उसके ट्रेड-ऑफ सबसे उपयुक्त होते हैं।