开源软件最大门户网站的后端开发的前端工作:共享经验

数字设计集团公司的一个领域是创建门户解决方案,该解决方案在单个站点内为最终用户提供大量定制服务。服务可以有所不同:新闻,论坛,文档库,统计信息,事件等-这就是我们所说的门户。在本文中,我想告诉我们团队和我如何创建门户解决方案:我们使用什么,实现时有哪些优点和缺点。




总的来说,用自己的双手建立门户的想法并不是偶然产生的。最近,俄罗斯引入了对专有软件使用的限制,这主要影响了与公共部门紧密共生的大型IT公司。我们在俄罗斯和国外最大的雇主的外部和内部环境中的门户网站上工作的经验,使我们能够评估最佳实践并标准化许多事情。

例如,Rosstandart网站它是在公共领域,有大量的访问者,因此我们搜索并创建了可以在即时高负载条件下稳定运行的解决方案。还必须考虑到,许多门户网站元素需要在搜索引擎中建立索引(从自写门户网站解决方案的角度看,它看起来并不那么简单和明显),但是我们没有使用现成的解决方案和CMS(因为并非每个人都可以处理)客户设定的任务)。

对我们(作为开发人员)而言,实现的主要兴趣在于,每个门户服务都是一个独立的单元,可以在不了解任何邻近服务的情况下存在。因此,它们可以彼此独立地进行开发,更新和缩放。

本文是系列文章的第一部分:它描述了后端的所有方面,我们使用的技术,体系结构如何工作,我们的方法有哪些困难和优点。以下文章还将描述前端开发方面。

所以,让我们开始吧。

建筑


主要目标是开发一个基于开源解决方案的平台,该平台易于扩展和维护。

该平台在客户的设施上有两个部署选项:

1)第一个选项需要更多容量,但由于具有微服务架构,因此您可以轻松地同时扩展和支持多个系统。有很多方法可以实现它,但是我们选择了Spring Cloud框架(Gateway,Discovery)以及Spring Boot(根据经验,我们的Java架构师认为该技术堆栈最适合这些任务)。



2)第二种选择是模块化。考虑是否计划仅支持一个系统(门户)。此选项很好,因为整个基础架构可以部署在一台或两台服务器上。



二手技术


打开JDK 8

Wildfly -

PostgreSQL应用程序服务器-DBMS所有模块都是在ORM技术的基础上实现的,因此,从理论上讲,它将很容易迁移到另一个DBMS。

ExoPlatform是一个门户平台,它使您可以在一个Web应用程序中组合各种模块,管理它们在页面上的位置,管理访问权限等等。社区版本可以在官方网站上下载,但仅适用于Tomcat应用程序服务器。您可以获取源代码并修改Wildfly平台的程序集。霍利瓦尔在本文中的主题为:“为什么不选择Liferay”将不会安排。

模组-这些是所谓的portlet,它们在portlet容器中执行,并负责在页面上绘制其区域。正在根据JSR规范(JSR 362开发Portlet 从Java开发(https://spring.io/角度来看,

Spring Framework是Digital Design开发的所有应用程序的基础。该框架具有用于实现各种任务的许多模块(Spring MVC,Spring Mail,Spring Data(JPA),Spring JMS等)。Spring Cloud-开发微服务(发现,网关,功能区,配置服务器)的基础。钥匙斗篷



-授权和访问控制服务器(IDM \ IAM)。服务器支持多种授权协议(OpenId,SAML,Oauth,Kerberos)。这使您可以轻松管理授权策略,配置访问权限并确保对系统资源的访问安全。 (https://www.keycloak.org/)。

Kurento是一台媒体服务器。它用于使用WebRTC协议(https://www.kurento.org/)在用户之间开发视频和音频广播。

Elasticsearch是全文搜索服务器。为了搜索门户,开发了自己的爬网程序,该爬网程序从门户收集数据进行索引,并使用解析器提取文件内容。

Swagger是用于与Rest-API交互的自文档指南。

碧玉-报告框架。JasperStudio用于构建报告模板。

Graylog是用于从应用程序收集日志的服务器。

所有模块都使用Maven和CI \ CD(Jenkins)构建。

模块和服务


确保模块功能的微服务包括:

  • 文件管理服务 -一种微服务,使您可以将数据存储在单个存储中,分析内容,将文件转换为其他格式以进行播放或在Web界面上显示,下载并附加到其他系统。以及共同编辑文件及其版本。
  • – , . , , Elasticseach ( , ..). Apache Tika, .
  • – , - \- WebRTC - Kurento.
  • – , . ElasticSearch, JasperReports.
  • \ – , .
  • – , , , .
  • - – , Workflow BPMN. JBPM.



  • WCM – .
  • – , , .
  • – .
  • – .
  • – .
  • – .
  • — - c .
  • – -. , , .
  • 组织结构 -各种目录和报告。
  • 管理模块 -管理门户,站点,页面,肖像的访问权限,以及Portlet,页面和虚拟门户的显示设置。
  • 导航 -允许您在门户网站和门户网站节点上创建定制导航。
  • 调查和测试 -一个大型模块,能够创建各种类型的测试和调查(从单项选择到问题循环和差异分析)。专为门户用户之间的测试,培训和调查而设计。

此外,还有许多其他针对特定客户的特定的业务模块,这些模块并不十分完善。大约有30个。

挑战与利益

利益


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

,


  • API – .
  • – ABAC .
  • – - .
  • 集中式数据缓存-计划实施一个集中式缓存服务器(这对于集中收集日志以进行开发测试产品立场以正确监控我们的生态系统的稳定性和正确性是必要的)。


这套技术,再加上所选的体系结构解决方案,使我们能够提出在“传送带”上开发门户,内部网和外部解决方案的问题:使用不同的设置快速有效地进行操作,并使用最佳实践。

在下一篇文章中,我们将介绍前端的布置方式:有关装配以及如何实现很好的重用性。

很快继续...

All Articles