Frontarbeit an der Backend-Entwicklung der größten Portale für Open Source-Software: Erfahrungsaustausch

Einer der Bereiche der Unternehmensgruppe Digital Design ist die Erstellung von Portallösungen, die Endbenutzern eine Vielzahl von benutzerdefinierten Diensten an einem einzigen Standort bieten. Dienste können unterschiedlich sein: Nachrichten, Foren, Dokumentenspeicher, Statistiken, Ereignisse usw. - das nennen wir das Portal. In diesem Artikel möchte ich erläutern, wie das Team und ich Portallösungen erstellen: Was wir verwenden, welche Vor- und Nachteile unserer Implementierung möglich sind.




Im Allgemeinen ist die Idee eines Portals mit eigenen Händen nicht zufällig entstanden. Vor kurzem hat Russland Beschränkungen für die Verwendung proprietärer Software eingeführt, von denen vor allem große IT-Unternehmen betroffen waren, die in enger Symbiose mit dem öffentlichen Sektor arbeiten. Unsere Erfahrung in der Arbeit an Portalen im externen und internen Umfeld der größten Arbeitgeber in Russland und im Ausland hat es uns ermöglicht, die besten Praktiken zu bewerten und viele Dinge zu standardisieren.

Zum Beispiel die Website von RosstandartEs ist gemeinfrei und hat einen großen Besucherstrom. Deshalb haben wir nach Lösungen gesucht und diese entwickelt, die unter Bedingungen hoher sofortiger Belastung stabil funktionieren. Es muss auch berücksichtigt werden, dass viele Portalelemente in Suchmaschinen indiziert werden müssen (aus Sicht einer selbst geschriebenen Portallösung ist dies nicht so einfach und offensichtlich, wie es scheint), aber wir haben keine vorgefertigten Lösungen und CMS verwendet (da nicht jeder damit umgehen konnte vom Kunden festgelegte Aufgaben).

Das Hauptinteresse der Implementierung für uns als Entwickler besteht darin, dass jeder Portaldienst eine eigenständige Einheit ist, die existieren kann, ohne etwas über benachbarte Dienste zu wissen. Dadurch können sie unabhängig voneinander entwickelt, aktualisiert und skaliert werden.

Dieser Artikel ist der erste Teil einer Reihe von Artikeln: Er beschreibt, wie alles vom Backend aus aussieht, welche Technologien wir verwenden, wie die Architektur funktioniert, welche Schwierigkeiten und Vorteile unser Ansatz hat. In den folgenden Artikeln wird auch die Frontend-Entwicklungsseite beschrieben.

Also fangen wir an.

Die Architektur


Das Hauptziel war die Entwicklung einer Plattform auf Basis von Open-Source-Lösungen, die einfach zu skalieren und zu warten ist.

Diese Plattform verfĂĽgt ĂĽber zwei Bereitstellungsoptionen beim Kunden:

1) Die erste Option erfordert mehr Kapazitäten, ermöglicht jedoch aufgrund der Microservice-Architektur die einfache Skalierung und Unterstützung mehrerer Systeme gleichzeitig. Es gibt viele Möglichkeiten, es zu implementieren, aber wir haben das Spring Cloud-Framework (Gateway, Discovery) zusammen mit Spring Boot ausgewählt (basierend auf der Erfahrung hat unser Java-Architekt entschieden, dass dieser Technologie-Stack für diese Aufgaben am besten geeignet ist).



2) Die zweite Option ist modular. Es wird berĂĽcksichtigt, ob nur ein System (Portal) unterstĂĽtzt werden soll. Diese Option ist gut, da die gesamte Infrastruktur auf einem oder zwei Servern bereitgestellt werden kann.



Verwendete Technologien


Ă–ffnen Sie JDK 8

Wildfly -

PostgreSQL- Anwendungsserver - DBMS. Alle Module sind auf der Basis von ORM-Technologien implementiert, daher wird es theoretisch einfach, auf ein anderes DBMS zu migrieren.

ExoPlatform ist eine Portalplattform, mit der Sie verschiedene Module in einer einzigen Webanwendung kombinieren, ihren Speicherort auf der Seite verwalten, Zugriffsrechte verwalten und vieles mehr. Die Community-Version kann auf der offiziellen Website heruntergeladen werden , jedoch nur für den Tomcat-Anwendungsserver. Sie können die Quellen übernehmen und die Baugruppe der Plattform für Wildfly ändern. Holivar in diesem Artikel zum Thema: "Warum nicht Liferay gewählt" wird nicht arrangieren.

Module- Dies sind die sogenannten Portlets. Sie werden im Portlet-Container ausgeführt und sind für das Zeichnen ihres Bereichs auf der Seite verantwortlich. Portlets werden gemäß der JSR-Spezifikation ( JSR 362 ) entwickelt.

Spring Framework ist die Basis aller Anwendungen, die im Hinblick auf die Java-Entwicklung in Digital Design entwickelt wurden ( https://spring.io/ ). Das Framework verfĂĽgt ĂĽber viele Module zur Implementierung verschiedener Aufgaben (Spring MVC, Spring Mail, Spring Data (JPA), Spring JMS und vieles mehr).

Spring Cloud - die Basis fĂĽr die Entwicklung von Microservices (Discovery, Gateway, Ribbon, Config Server).

Schlüsselumhang- Autorisierungs- und Zugriffskontrollserver (IDM \ IAM). Der Server unterstützt mehrere Autorisierungsprotokolle (OpenId, SAML, Oauth, Kerberos). Auf diese Weise können Sie Autorisierungsstrategien einfach verwalten, Zugriffsrechte konfigurieren und die Sicherheit des Zugriffs auf Systemressourcen gewährleisten. (https://www.keycloak.org/).

Kurento ist ein Medienserver. Es wurde verwendet, um Video- und Audiosendungen zwischen Benutzern unter Verwendung des WebRTC-Protokolls (https://www.kurento.org/) zu entwickeln.

Elasticsearch ist ein Volltextsuchserver. Um das Portal zu durchsuchen, wurde ein eigener Crawler entwickelt, der Daten aus dem Portal zur Indizierung sowie einen Parser zum Extrahieren des Inhalts von Dateien sammelte.

Swagger ist eine selbstdokumentierende Anleitung fĂĽr die Interaktion mit der Rest-API.

Jasperepors- Berichtsrahmen. JasperStudio wird zum Erstellen von Berichtsvorlagen verwendet.

Graylog ist ein Server zum Sammeln von Protokollen aus Anwendungen.

Alle Module werden mit Maven und CI \ CD (Jenkins) erstellt.

Module und Dienste


Zu den Mikrodiensten, die die Funktion von Modulen sicherstellen, gehören:

  • Dateiverwaltungsdienst - Ein Mikrodienst, mit dem Sie Daten in einem einzigen Speicher speichern, den Inhalt analysieren, Dateien zur Wiedergabe oder Anzeige auf der Weboberfläche in andere Formate konvertieren, herunterladen und an andere Systeme anhängen können. Sowie das gemeinsame Bearbeiten von Dateien und deren Versionierung.
  • – , . , , Elasticseach ( , ..). Apache Tika, .
  • – , - \- WebRTC - Kurento.
  • – , . ElasticSearch, JasperReports.
  • \ – , .
  • – , , , .
  • - – , Workflow BPMN. JBPM.



  • WCM – .
  • – , , .
  • – .
  • – .
  • – .
  • – .
  • — - c .
  • – -. , , .
  • Organisationsstruktur - verschiedene Verzeichnisse und Berichte.
  • Verwaltungsmodul - Verwaltung der Zugriffsrechte auf das Portal, Websites, Seiten, Porträts und Anzeigeeinstellungen fĂĽr Portlets, Seiten und virtuelle Portale.
  • Navigation - Ermöglicht das Erstellen einer benutzerdefinierten Navigation auf dem Portal und den Portalknoten.
  • Umfragen und Tests - ein groĂźes Modul mit der Möglichkeit, Tests und Umfragen verschiedener Art zu erstellen (von einer einzigen Auswahl bis hin zu Fragenschleifen und Differentialen). Entwickelt zum Testen, Trainieren und DurchfĂĽhren von Umfragen unter Portalbenutzern.

Und es gibt viele andere spezifische und nicht sehr Module mit Geschäftsprozessen für bestimmte Kunden. Es gibt ungefähr 30 von ihnen.

Schwierigkeiten und Vorteile.

Vorteile dieser Lösung.


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

,


  • API – .
  • – ABAC .
  • – - .
  • Zentrales Daten-Caching - Die EinfĂĽhrung eines zentralen Cache-Servers ist geplant (dies ist fĂĽr die zentralisierte Erfassung von Protokollen fĂĽr die Arbeit von EntwicklungsprĂĽfständen erforderlich, um die Stabilität und Korrektheit unseres Ă–kosystems korrekt zu ĂĽberwachen).

Gesamt


Diese Reihe von Technologien in Verbindung mit der gewählten Architekturlösung ermöglicht es uns, das Problem der Entwicklung von Portal-, Intranet- und externen Lösungen "auf dem Förderband" anzusprechen: schnell, effizient, mit unterschiedlichen Einstellungen und unter Verwendung der Best Practices.

Und im nächsten Artikel werden wir erzählen, wie unser Frontend angeordnet ist: über die Montage und wie wir eine großartige Wiederverwendung erreicht haben.

Fortsetzung sehr bald ...

All Articles