Travail de front sur le développement back-end des plus grands portails sur les logiciels open source: partage d'expérience

L'un des domaines du groupe d'entreprises Digital Design est la crĂ©ation de solutions de portail qui fournissent aux utilisateurs finaux un large Ă©ventail de services personnalisĂ©s au sein d'un mĂȘme site. Les services peuvent ĂȘtre diffĂ©rents: actualitĂ©s, forums, rĂ©fĂ©rentiels de documents, statistiques, Ă©vĂ©nements, etc. — c'est ce que nous appelons le portail. Dans cet article, je voudrais dire comment l'Ă©quipe et moi crĂ©ons des solutions de portail: ce que nous utilisons, quels avantages et inconvĂ©nients de notre implĂ©mentation sont possibles.




En général, l'idée d'un portail de vos propres mains n'est pas venue par hasard. Récemment, la Russie a introduit des restrictions sur l'utilisation de logiciels propriétaires, qui ont principalement affecté les grandes entreprises informatiques travaillant en étroite symbiose avec le secteur public. Notre expérience de travail sur les portails dans l'environnement externe et interne des plus grands employeurs en Russie et à l'étranger nous a permis d'évaluer les meilleures pratiques et de normaliser beaucoup de choses.

Par exemple, le site de RosstandartIl est dans le domaine public, il a un grand flux de visiteurs, nous avons donc recherchĂ© et crĂ©Ă© des solutions qui fonctionneront de maniĂšre stable dans des conditions de charge Ă©levĂ©e instantanĂ©e. Il est Ă©galement nĂ©cessaire de considĂ©rer que de nombreux Ă©lĂ©ments de portail doivent ĂȘtre indexĂ©s dans les moteurs de recherche (du point de vue d'une solution de portail auto-Ă©crite, ce n'est pas aussi simple et Ă©vident qu'il n'y paraĂźt), mais nous n'avons pas utilisĂ© de solutions prĂȘtes Ă  l'emploi et de CMS (car tout le monde ne pouvait pas gĂ©rer tĂąches dĂ©finies par le client).

Le principal intĂ©rĂȘt de l'implĂ©mentation pour nous en tant que dĂ©veloppeurs est que chaque service de portail est une unitĂ© autonome qui peut exister sans rien savoir des services voisins. Pour cette raison, ils peuvent ĂȘtre dĂ©veloppĂ©s, mis Ă  jour et mis Ă  l'Ă©chelle indĂ©pendamment les uns des autres.

Cet article est la premiÚre partie d'une série d'articles: il décrit à quoi ressemble tout du cÎté du backend, quelles technologies nous utilisons, comment l'architecture est organisée, quelles sont les difficultés et les avantages de notre approche. Les articles suivants décriront également le cÎté développement frontend.

Commençons donc.

Architecture


L'objectif principal était de développer une plateforme basée sur des solutions open-source, facile à mettre à l'échelle et à maintenir.

Cette plate-forme dispose de deux options de déploiement dans les installations du client:

1) La premiĂšre option nĂ©cessite plus de capacitĂ©s, mais vous permet de facilement Ă©voluer et prendre en charge plusieurs systĂšmes en mĂȘme temps en raison de l'architecture de microservice. Il existe de nombreuses façons de l'implĂ©menter, mais nous avons choisi le framework Spring Cloud (Gateway, Discovery) avec Spring Boot (basĂ© sur l'expĂ©rience, notre architecte Java a dĂ©cidĂ© que cette pile technologique serait la mieux adaptĂ©e Ă  ces tĂąches).



2) La deuxiĂšme option est modulaire. Il est considĂ©rĂ© s'il est prĂ©vu de ne prendre en charge qu'un seul systĂšme (portail). Cette option est bonne car toute l'infrastructure peut ĂȘtre dĂ©ployĂ©e sur un ou deux serveurs.



Technologies utilisées


Ouvrez JDK 8

Wildfly - serveur d'applications

PostgreSQL - SGBD. Tous les modules sont implémentés sur la base des technologies ORM, donc, en théorie, cela facilitera la migration vers un autre SGBD.

ExoPlatform est une plateforme de portail qui vous permet de combiner diffĂ©rents modules dans une seule application Web, de gĂ©rer leur emplacement sur la page, d'administrer les droits d'accĂšs et bien plus encore. La version communautaire peut ĂȘtre tĂ©lĂ©chargĂ©e sur le site officiel , mais uniquement pour le serveur d'applications Tomcat. Vous pouvez prendre les sources et modifier l'assemblage de la plateforme pour Wildfly. Holivar dans cet article sur le sujet: "pourquoi n'a pas choisi Liferay" ne s'arrangera pas.

Modules- ce sont les soi-disant portlets, ils sont exécutés dans le conteneur de portlet et sont chargés de dessiner leur zone sur la page. Les portlets sont développés selon la spécification JSR ( JSR 362 ).

Spring Framework est la base de toutes les applications développées en Digital Design du point de vue du développement Java ( https://spring.io/ ). Le cadre comporte de nombreux modules pour implémenter diverses tùches (Spring MVC, Spring Mail, Spring Data (JPA), Spring JMS et bien plus encore).

Spring Cloud - la base du développement de microservices (Discovery, Gateway, Ribbon, Config Server).

Cape de protection- serveur d'autorisation et de contrÎle d'accÚs (IDM \ IAM). Le serveur prend en charge plusieurs protocoles d'autorisation (OpenId, SAML, Oauth, Kerberos). Cela vous permet de gérer facilement les stratégies d'autorisation, de configurer les droits d'accÚs et d'assurer la sécurité de l'accÚs aux ressources systÚme. (https://www.keycloak.org/).

Kurento est un serveur multimédia. Il a été utilisé pour développer des diffusions vidéo et audio entre utilisateurs à l'aide du protocole WebRTC (https://www.kurento.org/).

Elasticsearch est un serveur de recherche en texte intégral. Pour rechercher le portail, son propre robot a été développé, qui collectait des données du portail pour l'indexation, ainsi qu'un analyseur pour extraire le contenu des fichiers.

Swagger est un guide d'auto-documentation pour interagir avec l'API Rest.

Jasperepors- Cadre de reporting. JasperStudio est utilisé pour créer des modÚles de rapport.

Graylog est un serveur de collecte de journaux Ă  partir d'applications.

Tous les modules sont construits en utilisant Maven et CI \ CD (Jenkins).

Modules et services


Les microservices qui assurent le fonctionnement des modules comprennent:

  • Service de gestion de fichiers - un microservice qui vous permet de stocker des donnĂ©es dans un seul stockage, d'analyser le contenu, de convertir des fichiers dans d'autres formats pour les lire ou les afficher sur l'interface Web, tĂ©lĂ©charger et attacher Ă  d'autres systĂšmes. Ainsi que la co-Ă©dition de fichiers et leur versioning.
  • – , . , , Elasticseach ( , ..). Apache Tika, .
  • – , - \- WebRTC - Kurento.
  • – , . ElasticSearch, JasperReports.
  • \ – , .
  • – , , , .
  • - – , Workflow BPMN. JBPM.



  • WCM – .
  • – , , .
  • – .
  • – .
  • – .
  • – .
  • — - c .
  • – -. , , .
  • Structure organisationnelle - divers rĂ©pertoires et rapports.
  • Module administratif - Gestion des droits d'accĂšs au portail, aux sites, aux pages, aux portraits et aux paramĂštres d'affichage des portlets, des pages et des portails virtuels.
  • Navigation - vous permet de crĂ©er une navigation personnalisĂ©e sur le portail et les nƓuds de portail.
  • EnquĂȘtes et tests - un grand module avec la possibilitĂ© de crĂ©er des tests et des enquĂȘtes de diffĂ©rents types (d'un choix unique, aux boucles de questions et aux diffĂ©rentiels). Conçu pour tester, former et mener des enquĂȘtes auprĂšs des utilisateurs du portail.

Et il existe de nombreux autres modules spécifiques et peu développés avec des processus métier pour des clients spécifiques. Il y en a environ 30.

Difficultés et avantages

Avantages de cette solution.


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

,


  • API – .
  • – ABAC .
  • – - .
  • Mise en cache centralisĂ©e des donnĂ©es - il est prĂ©vu d'introduire un serveur de cache centralisĂ© (cela est nĂ©cessaire pour la collecte centralisĂ©e des journaux pour le travail des dĂ©veloppeurs de produits de test afin de surveiller correctement la stabilitĂ© et l'exactitude de notre Ă©cosystĂšme).

Total


Cet ensemble de technologies, couplé à la solution architecturale choisie, nous permet de poser la question du développement de solutions de portail, intranet et externes "sur le convoyeur": faites-le rapidement, efficacement, avec des paramÚtres différents et utilisez les meilleures pratiques.

Et dans le prochain article, nous dirons comment notre interface est organisée: à propos de l'assemblage et comment nous avons réalisé une grande réutilisation.

Suite trĂšs bientĂŽt ...

All Articles