ओपन सोर्स सॉफ्टवेयर पर सबसे बड़े पोर्टल्स के बैकएंड डेवलपमेंट पर फ्रंट वर्क: शेयरिंग एक्सपीरियंस

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




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

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

डेवलपर्स के रूप में हमारे लिए कार्यान्वयन की मुख्य रुचि यह है कि प्रत्येक पोर्टल सेवा एक स्व-निहित इकाई है जो पड़ोसी सेवाओं के बारे में कुछ भी जानने के बिना मौजूद हो सकती है। इसके कारण, उन्हें एक दूसरे से स्वतंत्र रूप से विकसित, अद्यतन और स्केल किया जा सकता है।

यह लेख लेखों की एक श्रृंखला का पहला भाग है: यह बताता है कि बैकएंड की ओर से सब कुछ कैसा दिखता है, हम किन तकनीकों का उपयोग करते हैं, वास्तुकला कैसे काम करती है, हमारे दृष्टिकोण में क्या कठिनाइयाँ और फायदे हैं। निम्नलिखित लेख भी दृश्य विकास के पक्ष का वर्णन करेंगे।

तो, चलो शुरू करते हैं।

आर्किटेक्चर


मुख्य लक्ष्य ओपन-सोर्स समाधानों के आधार पर एक मंच विकसित करना था, जो पैमाने और बनाए रखना आसान है।

इस प्लेटफ़ॉर्म में ग्राहक की सुविधाओं में दो परिनियोजन विकल्प हैं:

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



2) दूसरा विकल्प मॉड्यूलर है। यह माना जाता है कि यह केवल एक प्रणाली (पोर्टल) का समर्थन करने की योजना है। यह विकल्प अच्छा है क्योंकि पूरे बुनियादी ढांचे को एक या दो सर्वर पर तैनात किया जा सकता है।



प्रयुक्त प्रौद्योगिकियाँ


ओपन JDK 8

Wildfly -

PostgreSQL एप्लिकेशन सर्वर - DBMS। सभी मॉड्यूल ORM प्रौद्योगिकियों के आधार पर कार्यान्वित किए जाते हैं, इसलिए, सिद्धांत रूप में, यह एक और DBMS को स्थानांतरित करना आसान बना देगा।

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

मॉड्यूल- ये तथाकथित पोर्टलेट हैं, इन्हें पोर्ट कंटेनर में निष्पादित किया जाता है और पृष्ठ पर अपने क्षेत्र को चित्रित करने के लिए जिम्मेदार हैं। जेएसआर विनिर्देश ( JSR 362 ) के अनुसार पोर्टल विकसित किए जा रहे हैं

स्प्रिंग फ्रेमवर्क जावा विकास ( https://spring.io/ ) के दृष्टिकोण से डिजिटल डिज़ाइन में विकसित सभी अनुप्रयोगों का आधार है । फ्रेमवर्क में विभिन्न कार्यों (स्प्रिंग एमवीसी, स्प्रिंग मेल, स्प्रिंग डेटा (जेपीए), स्प्रिंग जेएमएस और बहुत कुछ) को लागू करने के लिए कई मॉड्यूल हैं।

स्प्रिंग क्लाउड - माइक्रोसर्विसेस (डिस्कवरी, गेटवे, रिबन, कॉन्फिग सर्वर) के विकास का आधार।

Keycloak- प्राधिकरण और अभिगम नियंत्रण सर्वर (IDM \ IAM)। सर्वर कई प्राधिकरण प्रोटोकॉल (OpenId, SAML, Oauth, Kerberos) का समर्थन करता है। यह आपको प्राधिकरण रणनीतियों को आसानी से प्रबंधित करने, एक्सेस अधिकारों को कॉन्फ़िगर करने और सिस्टम संसाधनों तक पहुंच की सुरक्षा सुनिश्चित करने की अनुमति देता है। (https://www.keycloak.org/)।

Kurento एक मीडिया सर्वर है। इसका उपयोग वेबआरटीसी प्रोटोकॉल (https://www.kurento.org/) का उपयोग करके उपयोगकर्ताओं के बीच वीडियो और ऑडियो प्रसारण विकसित करने के लिए किया गया था।

एलीस्टेकर्च एक पूर्ण-पाठ खोज सर्वर है। पोर्टल को खोजने के लिए, अपना स्वयं का क्रॉलर विकसित किया गया था, जिसने अनुक्रमण के लिए पोर्टल से डेटा एकत्र किया, साथ ही फाइलों की सामग्री को निकालने के लिए एक पार्सर भी।

स्वैगर रेस्ट-एपीआई के साथ बातचीत के लिए एक स्व-दस्तावेजीकरण गाइड है।

Jasperepors- रिपोर्टिंग रूपरेखा। JasperStudio का उपयोग रिपोर्ट टेम्पलेट बनाने के लिए किया जाता है।

ग्रेलाग अनुप्रयोगों से लॉग एकत्र करने के लिए एक सर्वर है।

सभी मॉड्यूल मावेन और सीआई \ सीडी (जेनकिन्स) का उपयोग करके बनाए गए हैं।

मॉड्यूल और सेवाएँ


मॉड्यूल के कामकाज को सुनिश्चित करने वाले माइक्रोसर्विसेज में शामिल हैं:

  • फ़ाइल प्रबंधन सेवा - एक माइक्रोसैस सर्विस जो आपको एक ही स्टोरेज में डेटा स्टोर करने, सामग्री का विश्लेषण करने, प्लेबैक के लिए अन्य प्रारूपों में फ़ाइलों को परिवर्तित करने या वेब इंटरफेस पर प्रदर्शित करने, अन्य सिस्टम में डाउनलोड करने और संलग्न करने की अनुमति देती है। साथ ही सह-संपादन फ़ाइलें और उनके संस्करण।
  • – , . , , Elasticseach ( , ..). Apache Tika, .
  • – , - \- WebRTC - Kurento.
  • – , . ElasticSearch, JasperReports.
  • \ – , .
  • – , , , .
  • - – , Workflow BPMN. JBPM.



  • WCM – .
  • – , , .
  • – .
  • – .
  • – .
  • – .
  • — - c .
  • – -. , , .
  • संगठनात्मक संरचना - विभिन्न निर्देशिका और रिपोर्ट।
  • प्रशासनिक मॉड्यूल - पोर्टल, साइटों, पेजों, पोर्ट्रेट्स और डिस्प्ले सेटिंग्स के पोर्टल, पेज और वर्चुअल पोर्टल के लिए एक्सेस अधिकारों का प्रबंधन।
  • नेविगेशन - आपको पोर्टल और पोर्टल नोड्स पर कस्टम नेविगेशन बनाने की अनुमति देता है।
  • सर्वेक्षण और परीक्षण - विभिन्न प्रकारों के परीक्षण और सर्वेक्षण बनाने की क्षमता वाला एक बड़ा मॉड्यूल (एक ही विकल्प से, प्रश्न-छोर और अंतर तक)। पोर्टल उपयोगकर्ताओं के बीच सर्वेक्षण के परीक्षण, प्रशिक्षण और संचालन के लिए बनाया गया है।

और विशिष्ट ग्राहकों के लिए व्यावसायिक प्रक्रियाओं के साथ कई अन्य विशिष्ट और बहुत अधिक मॉड्यूल नहीं हैं। इनमें से लगभग 30 हैं।



इस समाधान के लाभ और फायदे


  • , .
  • , , , .
  • JNDI, . .
  • , .
  • , , .
  • .
  • , , open-source , .
  • .
  • open-source , .

,


  • API – .
  • – ABAC .
  • – - .
  • केंद्रीकृत डेटा कैशिंग - एक केंद्रीकृत कैश सर्वर शुरू करने की योजना है (यह देव परीक्षण के काम के लिए लॉग के केंद्रीकृत संग्रह के लिए आवश्यक है, जो हमारे पारिस्थितिक तंत्र की स्थिरता और शुद्धता की सही निगरानी के लिए खड़ा है)।

संपूर्ण


प्रौद्योगिकियों का यह सेट, चुने हुए वास्तु समाधान के साथ मिलकर, हमें विकासशील पोर्टल, इंट्रानेट और बाहरी समाधान के मुद्दे को "कन्वेयर पर" बढ़ाने की अनुमति देता है: इसे जल्दी से, कुशलता से, विभिन्न सेटिंग्स के साथ करें और सर्वोत्तम प्रथाओं का उपयोग करें।

और अगले लेख में हम बताएंगे कि हमारे दृश्यपटल की व्यवस्था कैसे की जाती है: विधानसभा के बारे में और हमने कैसे महान पुन: उपयोग किया।

बहुत जल्द जारी ...

All Articles