एक वेब एपीआई अपकेंद्रित्र: सर्वश्रेष्ठ प्रथाओं?


18

आखिरकार आपको अपने सार्वजनिक वेब एपीआई के कुछ हिस्सों को कम करना होगा। हालांकि मैं इस पर उलझन में हूं कि इसे करने का सबसे अच्छा तरीका क्या होगा। यदि आपके पास एक बड़ा 3rd पार्टी ऐप बेस है, तो एपीआई के पुराने संस्करणों की तरह ही ऐसा लगता है कि ऐसा करना गलत है, क्योंकि लगभग सभी ऐप रातोंरात विफल हो जाएंगे। हालाँकि आप प्राचीन वेब एप को हमेशा के लिए उपलब्ध नहीं रख सकते हैं क्योंकि यह पुराना हो सकता है या इसमें महत्वपूर्ण परिवर्तन हैं जो इसके साथ काम करना असंभव बनाते हैं।

पुराने वेब एपि को अपदस्थ करने के लिए कुछ सर्वोत्तम अभ्यास क्या हैं?

जवाबों:


17

ऐसा लगता है कि मूल पोस्टर पहले से ही प्रभावी है, लेकिन अनौपचारिक रूप से उनके एपीआई (कुछ भी जिसे 'पुराने एपीआई' के रूप में संदर्भित किया गया है) को हटा दिया गया है। हालाँकि, जब तक यह घोषणा नहीं की जाती है और उपयोगकर्ताओं को सूचित किया जाता है कि एपीआई अपग्रेड किया गया है, तब तक इसे औपचारिक रूप से पदावनत नहीं किया जाता है।

डिप्रेस्ड एपीआई एक अंतरिम, कोड का निष्क्रिय चरण है। यह अंतिम संस्कार है। यह वह अवधि है जो अपनाने वाले / उपभोक्ताओं को एक नए एपीआई के लिए अपने एप्लिकेशन को फिर से कॉन्फ़िगर करने और शौकीन विदाई को स्वीकार करने की अनुमति देता है, जिससे एपीआई के साथ शांति मिलती है। कुछ API दूसरों की तुलना में अधिक लम्बी हो सकती हैं, लेकिन इस समय हम जानते हैं कि उनका समय लंबा नहीं है।

हटाए गए एपीआई एक कोड अंतिम संस्कार है। अधिक कुछ नहीं है जो यह कर सकता है, लेकिन उचित रूप से निपटारा और उचित रूप से स्मारक है।

कई एपीआई और सेवा डेवलपर्स अंतिम संस्कार करने के बजाय कोड अंत्येष्टि का विकल्प चुनते हैं; हालाँकि, मुझे लगता है कि यह कुछ जोखिम भरा है। अगर एपीआई / सेवा को शुरू में या नवीनीकरण के माध्यम से शुरू किया गया था, तो किसी भी तरह की सेवा या समर्थन का वादा किया गया था, आप अंतिम संस्कार करने से पहले उचित समय के लिए उस कमिटमेंट को सम्मानित करना चाहते हैं।

गैर-सेवा पुस्तकालयों के लिए, मुझे लगता है कि समय की अवधि की परवाह किए बिना, एक प्रमुख रिलीज संस्करण, संभवतः पीछे की संगतता की गारंटी के स्वीकार्य और उचित अवधि से अधिक है। इससे परे कि यह उस अवधि से परे जीवन का विस्तार करने के लिए उपयोगकर्ताओं द्वारा प्रभाव और लॉबिंग पर निर्भर करता है। और अगर समय-समय पर अप्रासंगिक 3 पार्टी निर्भरताओं के कारण अंग में फंसने, और कुछ प्लेटफार्मों के कुछ संस्करणों से बंधे होने के कारण आपत्तियां होती हैं, तो आश्चर्य न करें।

सेवाओं के लिए, मुझे संदेह है कि आप या तो छह महीने या वर्ष की अवधि में देखना चाहते हैं, केवल इसलिए कि किसके द्वारा और किस तरह से एक सेवा का उपभोग किया जा सकता है, और इसी विकास चक्र में खपत परियोजना से खपत परियोजना तक - कई परियोजनाएं जो आपकी सेवा का उपभोग कर सकती हैं, वे अभी भी बड़े फ्रंट-फ्रंट डिज़ाइन कर सकती हैं, और एक साल से अधिक के रिलीज चक्र को शेड्यूल कर सकती हैं। बाहर से अधिकांश डेवलपर राय से पता चलता है कि लंबी अनुसूची वाले लोग आपके चक्र के समय को पूरा करने के लिए जिम्मेदार हैं, और उन लंबी चक्र खपत वाली परियोजनाओं को जल्दी रिलीज चक्र अपनाना चाहिए, और यह सच हो सकता है। लेकिन अंततः हटाने की तारीख कुछ ऐसी है जिसे आपको उपयोगकर्ताओं के साथ बातचीत करनी होगी।

पदावनति की घोषणा के लिए बुलेटप्रूफ रणनीति की एक अच्छी, लेकिन बुलेटप्रूफ रणनीति नहीं हो सकती है, प्रश्न में एपीआई वर्गों के सर्वेक्षण प्रारूप में टिप्पणी या आपत्ति के लिए अनुरोध के साथ-साथ हटाने के इरादे के लिए समय-सीमा को उजागर करें। यदि आपके पास उपयोगकर्ताओं की संपर्क सूची नहीं है, क्योंकि आपकी सेवा [सेमी] अनाम पहुंच के साथ संचालित होती है, तो आप अक्सर और सक्रिय उपयोगकर्ताओं के लिए लॉग को देखने पर विचार कर सकते हैं और मेजबान या डोमेन व्यवस्थापक को सूचना अग्रेषित कर सकते हैं क्योंकि वे फिट दिखते हैं।


वाह, बहुत जानकारीपूर्ण उत्तर
TheLQ

7

अधिकांश वेब एपीआई का मैं उपयोग करता हूं (Google, याहू! और माइक्रोसॉफ्ट जैसी कंपनियों से) "सूर्यास्त" अवधि है। डेवलपर्स को उचित समय के भीतर सूचित किया जाता है (3-6 महीने का) फीचर्स जो उन्हें पहले से अपग्रेड करने के लिए बहुत समय देने के लिए ह्रास होने वाले हैं।

आप अपनी सेवा की शर्तों या अन्य दस्तावेज़ीकरण में सूर्यास्त की अवधि का विवरण जोड़ सकते हैं ताकि लोगों को पता चले कि यह कैसे काम करता है। इसका मतलब यह होगा कि जब कोई आपके एपीआई का उपयोग करने का निर्णय लेता है, तो उन्हें पता होगा कि उन्हें किस कार्यक्रम के साथ काम करने की आवश्यकता है। उदाहरण के लिए, आप लोगों को सूचित कर सकते हैं कि उन्हें साल में एक बार अपने सिस्टम को अपग्रेड करना होगा और ऐसा करने के लिए 4 महीने का नोटिस देना होगा।

संस्करण क्रमांकन का उपयोग करना भी एक अच्छा विचार है, इसलिए आप कह सकते हैं कि, उदाहरण के लिए, "संस्करण 3 जल्द ही ह्रासमान होने वाला है, इसलिए सुनिश्चित करें कि आपका कोड संस्करण 4 के साथ काम करता है" आदि इस तरह से लोग जानते हैं कि यदि उनके आवेदन के संस्करण के साथ काम कर रहे हैं 4 फिर वे सूर्यास्त के लिए तैयार हैं।


1

प्रक्रिया कोण से अतिरिक्त जानकारी:

  • सभी हितधारकों के साथ संवाद करें: अन्य टीमों और एपीआई उपभोक्ताओं को एपीआई, रणनीति, योजना और अनुसूची विवरण, संस्करण अर्थ और विकल्प के बारे में बताने के लिए स्पष्ट और संक्षिप्त संचार प्रदान करें, तदनुसार HTTP सेट करें।

  • योजना और अनुसूची : इस योजना में आपके पास प्रमुख मील के पत्थर और लक्ष्य समाप्ति की तारीख होनी चाहिए। आपको उपभोक्ताओं को उसी से पूछना चाहिए और कॉल प्रदान करने के लिए तारीखें प्रदान करनी चाहिए। प्रक्रिया की निगरानी करने और उपभोक्ताओं का समर्थन करने के लिए एक नियमित बैठक की मेजबानी करें।

  • वर्जनिंग और ऑल्टरनेटिव्स प्रदान करें : वर्जनिंग प्रमुख रिलीज पर बदलाव को दिखाने में मदद कर सकती है, और एपीआई अपग्रेड की रणनीति बना सकती है।

  • सूर्यास्त HTTP रिस्पांस हेडर सेट करें : HTTP हेडर चेतावनी का तकनीकी हिस्सा निभाते हैं, एपीआई उपभोक्ताओं को इस प्रकार के कोड की निगरानी करनी चाहिए ताकि यह समझ सकें कि एपीआई अपग्रेड हो रहा है।

  • पहले और बाद में मॉनिटर करें: अपने उपभोक्ताओं की निगरानी करें और किसी भी उपभोक्ता को सचेत करें जो एक निश्चित अवधि के बाद भी एपीआई का उपयोग कर रहे हैं, यह सुनिश्चित करने के लिए उपयोगी जानकारी है कि आप किसी भी सॉफ्टवेयर को याद न करें।


0

मौजूदा उत्तरों के अलावा, आपको कुछ हटाते समय एक ड्रॉप-इन प्रतिस्थापन या एक माइग्रेशन योजना प्रदान करनी चाहिए, ताकि आपके उपयोगकर्ता अपने कोड को अपडेट कर सकें।

एक विकल्प प्रदान किए बिना कार्यक्षमता को हटाने से बचने की कोशिश करें - यह आपके कुछ उपयोगकर्ताओं को दुखी करेगा।


यदि यह आपके वेब एपीआई में संभव है, तो हटाए गए कार्यों को सक्रिय रखें, लेकिन क्या उन्हें तोड़ने के बजाय एक सूचनात्मक त्रुटि वापस आ गई है।
मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.