2015-12-04 7 views
6

हमारा आवेदन बाहरी सिस्टम के समूह के लिए एक उपभोक्ता की तरह एकीकृत करने जा रहा है।एंटरप्राइज़ अनुप्रयोगों के लिए एकीकरण आर्किटेक्चर सर्वोत्तम प्रथाओं

इनमें से अधिकांश एकीकरण केवल संदेश प्रसंस्करण और रूटिंग नहीं हैं। एक जटिल राज्य, नियत निष्पादन और अन्य सामान भंडारण जैसे जटिल तर्क हैं।

इसके अलावा, प्रत्येक एकीकरण बहुत आम तर्क साझा नहीं करता है।

इस तरह के सिस्टम बनाने के लिए सबसे अच्छा अभ्यास क्या है?

क्या मुझे सभी में एकीकरण परत बनाना चाहिए? यह प्रत्येक एकीकरण के लिए विभिन्न अपाचे ऊंट मार्गों और प्रोसेसर के साथ एक अखंड आवेदन किया जा सकता है: enter image description here

या मैं छोटे और सरल स्टैंडअलोन क्षुधा का एक समूह के लिए यह विभाजित करना चाहिए ताकि वे बढ़ाया और स्वतंत्र रूप से तैनात किया जा सकता?

enter image description here

क्या लाभ और कमियां मैं प्रत्येक समाधान के साथ मिल सकता है?

+0

मेरे लिए, एक ESB या एक ऊंट कोष आवेदन लक्ष्य फिर से प्रयोज्य और एक अद्वितीय बिंदु, आपके मामले में: मुख्य आवेदन का उपयोग, सुरक्षा और लॉग। भले ही प्रत्येक बाहरी प्रणाली के लिए सेवा प्रदान करने के लिए अलग-अलग तर्क हों। तो मेरे रास्ते के लिए monolithic आवेदन। –

उत्तर

2

मन में है करने के लिए काफी कुछ मापदंड होते हैं:

  • अर्थव्यवस्था: परियोजना लागत, परिचालन लागत
  • प्रवाह: यात्रा के समय: समय
  • विलंबता प्रति डेटा की मात्रा संदेश
  • सुरक्षा: डेटा सुरक्षा
  • विश्वसनीयता: विफलताओं
  • लचीलापन की संभावना: बदलती जरूरतों पर प्रतिक्रिया करने के लिए कम
  • प्रक्रिया का समर्थन: डाटा प्रवाह पर नियंत्रण, घटना/त्रुटि

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

पूछें के लिए Integration Patterns या Enterprise Application Integration अपने पसंदीदा खोज इंजन।

+0

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

+0

यदि आप ऑल-इन-वन-इंटीग्रेशंस-ऐप को "केंद्रीय एकीकरण मंच" में अनुवाद करते हैं, तो आपको बहुत सारे लाभ मिलते हैं: मित्रता, गुणवत्ता, दस्तावेज़ीकरण, बाजार पर कुशल सलाहकारों का समर्थन, निगरानी, ​​लॉगिंग, चेतावनी, लचीलापन, प्रक्रिया हैंडलिंग। विभिन्न एकीकरण ऐप्स का एक समूह का उपयोग और संचालन करने के लिए बहुत कठिन और त्रुटि प्रवण है। –

2

मुझे अपनी राय साझा करने दें। आम तौर पर एक्सेल केम्पर ने कहा है कि ऐसे कई कारक हैं जो आपके निर्णय को प्रभावित कर सकते हैं और यहां कोई चांदी बुलेट समाधान नहीं है।

मैं इसे तकनीकी रखने के लिए है, तो कोशिश करता हूँ:

एक अखंड आवेदन:

  • आसान तैनात करने के लिए। आम तौर पर आपको केवल एक/कुछ सर्वर की आवश्यकता होगी। डेवलपर के दृष्टिकोण से अंतर स्पष्ट नहीं हो सकता है, लेकिन अपने देव-ओप टीम से बात करें और वे तुरंत कहेंगे कि एक आवेदन को तैनात करना उनके लिए बहुत आसान है

  • मॉनीटर करना आसान है। मूल रूप से उपरोक्त के कारण के लिए। इसके बारे में devops भी पूछें :)

  • यह तेज़ हो सकता है। यदि अलग-अलग एकीकरण ऐप्स को किसी भी तरह से कनेक्ट करना चाहिए (हालांकि यह आपकी योजना में नहीं बताया गया है), तो संभावित रूप से वे धीमे "ओवर-नेटवर्क" प्रोटोकॉल से पीड़ित हो सकते हैं। एक monolithic आवेदन में सब कुछ एक ही JVM के अंदर है।

  • संभावित रूप से कम सर्वर की आवश्यकता है। यदि आप एक निजी क्लाउड/कुछ पुराने वातावरण में चल रहे हैं तो यह एक नया सर्वर प्लग करने में काफी परेशानी हो सकती है। आप अपने आवेदन के लिए 2-3 सर्वर प्राप्त कर सकते हैं और है कि यह :)

"एक से अधिक एकीकरण अनुप्रयोगों" वास्तुकला है (मेरी समझ में यह वास्तव में सूक्ष्म सेवाओं वास्तुकला एकीकरण डोमेन जैसा दिखता है) निम्न लाभ हैं:

  • इसके विभिन्न हिस्सों को अपग्रेड करना आसान है। यदि आपके पास एक मोनोलिथिक एप्लिकेशन है, तो एपीआई के केवल एक हिस्से को अपग्रेड करने का कोई सामान्य तरीका नहीं है, पूरे एप्लिकेशन के लिए एक बड़ा अपग्रेड होना चाहिए। यदि अलग-अलग टीमों द्वारा अलग-अलग "एकीकरण बिंदु" विकसित किए जाते हैं, तो रिलीज़ के बीच समन्वय करना स्पष्ट नहीं है।

  • पिछले बुलेट के परिणामस्वरूप संभावित रूप से एकीकरण बिंदु में एक बग को ठीक करने में कम समय लगेगा (उस समय से जब बग को उस समय पता चला है जब फिक्स को उत्पादन में तैनात किया जाता है)। बस एक विशेष एकीकरण बिंदु में ठीक करें और इसे पुन: नियोजित करें। यह बहुत हल्का है।

  • स्केल "आउट" बेहतर। यदि आप किसी विशेष एकीकरण बिंदु का गहन उपयोग अनुभव करते हैं, तो आप विभिन्न सर्वर पर एक और एक (या अधिक) जोड़ सकते हैं। एक मोनोलिथिक दृष्टिकोण में आपको एक समान प्रभाव प्राप्त करने के लिए संपूर्ण एप्लिकेशन इंस्टॉल करना होगा। एक अन्य उपयोग का मामला यह है कि यदि आप क्लाउड में तैनात हैं और आपके पास एक ग्राहक एक विशेष एकीकरण बिंदु के लिए विशेष पहुंच के लिए भुगतान करने को तैयार है।

  • परीक्षण करने के लिए आसान (तर्कसंगत)। यदि आप अपने एकीकरण बिंदु की जांच के लिए एकीकरण/सिस्टम परीक्षण चला रहे हैं, तो आप सीआई प्रवाह को व्यवस्थित कर सकते हैं ताकि सिस्टम समानांतर में चलाया जा सके। इसमें एक और अधिक हल्के स्टार्टअप जोड़ें और आपको अधिक लचीला प्रवाह मिलेगा।

मैंने तुलना के कुछ पहलुओं को याद किया होगा (निश्चित रूप से) लेकिन यह दिशा आईएमओ है।

आशा इस संसाधन प्राप्त करने में मदद करता

संबंधित मुद्दे