العمل الأمامي على تطوير الواجهة الخلفية لأكبر البوابات على البرمجيات مفتوحة المصدر: تجربة المشاركة

يتمثل أحد مجالات مجموعة شركات "التصميم الرقمي" في إنشاء حلول البوابة الإلكترونية التي توفر للمستخدمين النهائيين مجموعة كبيرة من الخدمات المخصصة داخل موقع واحد. يمكن أن تكون الخدمات مختلفة: الأخبار ، والمنتديات ، ومستودعات الوثائق ، والإحصاءات ، والأحداث ، وما إلى ذلك - هذا ما نسميه البوابة. في هذه المقالة ، أود أن أقول كيف ننشئ أنا والفريق حلولاً على البوابة: ما نستخدمه ، وما هي مزايا وعيوب التنفيذ الممكنة.




بشكل عام ، لم تنشأ فكرة بوابة بيديك بالصدفة. في الآونة الأخيرة ، أدخلت روسيا قيودًا على استخدام البرمجيات الاحتكارية ، والتي أثرت في المقام الأول على شركات تكنولوجيا المعلومات الكبيرة التي تعمل في تكافل مع القطاع العام. خبرتنا في العمل على البوابات في البيئة الخارجية والداخلية لأصحاب العمل الأكبر في روسيا والخارج سمحت لنا بتقييم أفضل الممارسات وتوحيد أشياء كثيرة.

على سبيل المثال ، موقع Rosstandartإنها في المجال العام ، ولديها تدفق كبير من الزوار ، لذلك بحثنا وابتكار حلول ستعمل بثبات في ظل ظروف الحمل العالي الفوري. من الضروري أيضًا مراعاة أن العديد من عناصر البوابة تحتاج إلى الفهرسة في محركات البحث (من وجهة نظر حل البوابة المكتوبة ذاتيًا ، فهي ليست بسيطة وواضحة كما يبدو) ، لكننا لم نستخدم الحلول الجاهزة و CMS (حيث لا يمكن للجميع التعامل معها) المهام التي حددها العميل).

الفائدة الرئيسية من التنفيذ بالنسبة لنا كمطورين هي أن كل خدمة بوابة هي وحدة قائمة بذاتها يمكن أن توجد دون معرفة أي شيء عن الخدمات المجاورة. ونتيجة لذلك ، يمكن تطويرها وتحديثها وتوسيع نطاقها بشكل مستقل عن بعضها البعض.

هذه المقالة هي الجزء الأول من سلسلة من المقالات: تصف كيف يبدو كل شيء من الجانب الخلفي ، والتقنيات التي نستخدمها ، وكيف تعمل الهندسة المعمارية ، وما هي الصعوبات والمزايا التي يمتلكها نهجنا. سوف تصف المقالات التالية أيضًا جانب تطوير الواجهة الأمامية.

لذا ، لنبدأ.

هندسة معمارية


كان الهدف الرئيسي هو تطوير منصة تعتمد على حلول مفتوحة المصدر ، يسهل توسيعها وصيانتها.

يحتوي هذا النظام الأساسي على خيارين للنشر في مرافق العميل:

1) يتطلب الخيار الأول المزيد من السعات ، ولكنه يتيح لك توسيع ودعم أنظمة متعددة بسهولة في نفس الوقت بسبب بنية الخدمات الصغيرة. هناك العديد من الطرق لتنفيذه ، لكننا اخترنا إطار Spring Cloud (البوابة ، الاكتشاف) جنبًا إلى جنب مع Boot Boot (بناءً على الخبرة ، قرر مهندس جافا لدينا أن مجموعة التكنولوجيا هذه ستكون الأنسب لهذه المهام).



2) الخيار الثاني معياري. يعتبر إذا تم التخطيط لدعم نظام واحد فقط (بوابة). هذا الخيار جيد لأنه يمكن نشر البنية التحتية بالكامل على خادم واحد أو اثنين.



التقنيات المستخدمة


افتح JDK 8

Wildfly - خادم تطبيقات

PostgreSQL - DBMS. يتم تنفيذ جميع الوحدات على أساس تقنيات ORM ، وبالتالي ، من الناحية النظرية ، ستجعل من السهل الانتقال إلى DBMS آخر.

ExoPlatform عبارة عن نظام أساسي للبوابة الإلكترونية يسمح لك بدمج وحدات مختلفة في تطبيق ويب واحد ، وإدارة موقعها على الصفحة ، وإدارة حقوق الوصول والمزيد. يمكن تنزيل إصدار المجتمع على الموقع الرسمي ، ولكن فقط لخادم تطبيق Tomcat. يمكنك أخذ المصادر وتعديل تجميع النظام الأساسي لـ Wildfly. Holivar في هذه المقالة حول هذا الموضوع: "لماذا لم تختار Liferay" لن يرتب.

الوحدات- هذه هي المداخل المزعومة ، ويتم تنفيذها في حاوية المدخل وهي مسؤولة عن رسم منطقتها على الصفحة. يتم تطوير المداخل وفقًا لمواصفات JSR ( JSR 362 ).

Spring Framework هو أساس جميع التطبيقات التي تم تطويرها في التصميم الرقمي من وجهة نظر تطوير Java ( https://spring.io/ ). يحتوي الإطار على العديد من الوحدات لتنفيذ المهام المختلفة (Spring MVC و Spring Mail و Spring Data (JPA) و Spring JMS والمزيد).

Spring Cloud - أساس تطوير الخدمات الدقيقة (Discovery ، Gateway ، Ribbon ، Config Server).

Keycloak- خادم التفويض والتحكم في الوصول (IDM \ IAM). يدعم الخادم العديد من بروتوكولات المصادقة (OpenId و SAML و Oauth و Kerberos). يتيح لك ذلك بسهولة إدارة إستراتيجيات التفويض وتكوين حقوق الوصول وضمان أمان الوصول إلى موارد النظام. (https://www.keycloak.org/).

كورينتو هو خادم وسائط. تم استخدامه لتطوير البث المرئي والمسموع بين المستخدمين باستخدام بروتوكول WebRTC (https://www.kurento.org/).

Elasticsearch هو خادم بحث نص كامل. للبحث في البوابة ، تم تطوير الزاحف الخاص بها ، والذي جمع البيانات من البوابة للفهرسة ، بالإضافة إلى المحلل اللغوي لاستخراج محتويات الملفات.

Swagger هو دليل للتوثيق الذاتي للتفاعل مع Rest-API.

جاسبر بور- إطار عمل التقارير. يستخدم JasperStudio لبناء قوالب التقرير.

Graylog هو خادم لجمع السجلات من التطبيقات.

تم بناء جميع الوحدات باستخدام Maven و CI \ CD (Jenkins).

الوحدات والخدمات


تشمل الخدمات الدقيقة التي تضمن عمل الوحدات ما يلي:

  • خدمة إدارة الملفات - خدمة صغيرة تتيح لك تخزين البيانات في وحدة تخزين واحدة ، وتحليل المحتويات ، وتحويل الملفات إلى تنسيقات أخرى للتشغيل أو العرض على واجهة الويب ، وتنزيلها وإرفاقها بأنظمة أخرى. وكذلك ملفات التحرير المشتركة وإصداراتها.
  • – , . , , Elasticseach ( , ..). Apache Tika, .
  • – , - \- WebRTC - Kurento.
  • – , . ElasticSearch, JasperReports.
  • \ – , .
  • – , , , .
  • - – , Workflow BPMN. JBPM.



  • WCM – .
  • – , , .
  • – .
  • – .
  • – .
  • – .
  • — - c .
  • – -. , , .
  • الهيكل التنظيمي - أدلة وتقارير متنوعة.
  • الوحدة الإدارية - إدارة حقوق الوصول إلى البوابة والمواقع والصفحات والصور الشخصية وإعدادات العرض للمداخل والصفحات والمداخل الافتراضية.
  • التنقل - يسمح لك بإنشاء تنقل مخصص على البوابة الإلكترونية وعقد البوابة الإلكترونية.
  • الاستطلاعات والاختبارات - وحدة كبيرة مع القدرة على إنشاء اختبارات ومسوح من أنواع مختلفة (من اختيار واحد إلى حلقات الأسئلة والفرق). مصممة للاختبار والتدريب وإجراء المسوحات بين مستخدمي البوابة.

وهناك العديد من الوحدات المحددة الأخرى وليست بالعمليات التجارية لعملاء محددين. هناك حوالي 30 منهم.

الصعوبات والمزايا

فوائد هذا الحل.


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

,


  • API – .
  • – ABAC .
  • – - .
  • التخزين المؤقت للبيانات المركزية - من المخطط إدخال خادم تخزين مؤقت مركزي (يعد ذلك ضروريًا لجمع مركزي للسجلات لعمل مطور اختبار dev لرصد استقرار وصحة نظامنا البيئي بشكل صحيح).

مجموع


هذه المجموعة من التقنيات ، إلى جانب الحل المعماري المختار ، تسمح لنا بإثارة قضية تطوير البوابة الإلكترونية والإنترانت والحلول الخارجية "على الناقل": القيام بذلك بسرعة وكفاءة مع إعدادات مختلفة واستخدام أفضل الممارسات.

وفي المقالة التالية سنخبر كيف يتم ترتيب الواجهة الأمامية: حول التجميع وكيف حققنا إعادة استخدام كبيرة.

تابع قريبا جدا ...

All Articles