Pekerjaan depan pada pengembangan backend portal terbesar pada perangkat lunak open source: berbagi pengalaman

Salah satu area dari kelompok perusahaan Desain Digital adalah penciptaan solusi portal yang menyediakan sejumlah besar layanan kustom kepada pengguna akhir dalam satu situs. Layanan dapat berbeda: berita, forum, repositori dokumen, statistik, acara, dll. - inilah yang kami sebut portal. Dalam artikel ini saya ingin memberi tahu bagaimana tim dan saya membuat solusi portal: apa yang kami gunakan, apa keuntungan dan kerugian dari implementasi kami.




Secara umum, gagasan portal dengan tangan Anda sendiri tidak muncul secara kebetulan. Baru-baru ini, Rusia telah memperkenalkan pembatasan penggunaan perangkat lunak berpemilik, yang terutama memengaruhi perusahaan IT besar yang bekerja dalam simbiosis ketat dengan sektor publik. Pengalaman kami bekerja di portal di lingkungan eksternal dan internal perusahaan terbesar di Rusia dan luar negeri memungkinkan kami untuk mengevaluasi praktik terbaik dan menstandarisasi banyak hal.

Misalnya, situs RosstandartItu berada dalam domain publik, memiliki arus pengunjung yang besar, jadi kami mencari dan menciptakan solusi yang akan bekerja secara stabil dalam kondisi beban tinggi instan. Penting juga untuk mempertimbangkan bahwa banyak elemen portal perlu diindeks di mesin pencari (dari sudut pandang solusi portal yang ditulis sendiri itu tidak sesederhana dan sejelas kelihatannya), tetapi kami tidak menggunakan solusi yang sudah jadi dan CMS (karena tidak semua orang bisa menangani tugas yang ditetapkan oleh pelanggan).

Minat utama implementasi bagi kami sebagai pengembang adalah bahwa setiap layanan portal adalah unit mandiri yang dapat eksis tanpa mengetahui apa pun tentang layanan tetangga. Karena ini, mereka dapat dikembangkan, diperbarui dan diskalakan secara independen satu sama lain.

Artikel ini adalah bagian pertama dari serangkaian artikel: artikel ini menjelaskan bagaimana segala sesuatu terlihat dari sisi belakang, teknologi apa yang kita gunakan, bagaimana arsitekturnya diatur, kesulitan apa dan kelebihan yang dimiliki pendekatan kita. Artikel-artikel berikut juga akan menjelaskan sisi pengembangan frontend.

Jadi, mari kita mulai.

Arsitektur


Tujuan utamanya adalah untuk mengembangkan platform berbasis pada solusi open-source yang mudah untuk diukur dan dirawat.

Platform ini memiliki dua opsi penempatan di fasilitas pelanggan:

1) Opsi pertama membutuhkan lebih banyak kapasitas, tetapi memungkinkan Anda untuk dengan mudah mengukur dan mendukung beberapa sistem pada saat yang sama karena arsitektur layanan mikro. Ada banyak cara untuk mengimplementasikannya, tetapi kami memilih kerangka kerja Spring Cloud (Gateway, Discovery) bersama dengan Spring Boot (berdasarkan pengalaman, arsitek Java kami memutuskan bahwa tumpukan teknologi ini akan paling cocok untuk tugas-tugas ini).



2) Pilihan kedua adalah modular. Dipertimbangkan jika direncanakan hanya mendukung satu sistem (portal). Opsi ini bagus karena seluruh infrastruktur dapat digunakan pada satu atau dua server.



Teknologi yang digunakan


Buka JDK 8

Wildfly - Server aplikasi

PostgreSQL - DBMS. Semua modul diimplementasikan berdasarkan teknologi ORM, oleh karena itu, secara teori, akan memudahkan untuk bermigrasi ke DBMS lain.

ExoPlatform adalah platform portal yang memungkinkan Anda menggabungkan berbagai modul dalam satu aplikasi web, mengelola lokasinya di halaman, mengelola hak akses, dan banyak lagi. Versi komunitas dapat diunduh di situs web resmi , tetapi hanya untuk server aplikasi Tomcat. Anda dapat mengambil sumber dan memodifikasi perakitan platform untuk Wildfly. Holivar dalam artikel ini pada topik: "mengapa tidak memilih Liferay" tidak akan mengatur.

Modul- inilah yang disebut portlet, dieksekusi dalam wadah portlet dan bertanggung jawab untuk menggambar area mereka di halaman. Portlet sedang dikembangkan sesuai dengan spesifikasi JSR ( JSR 362 ).

Kerangka Spring adalah dasar dari semua aplikasi yang dikembangkan dalam Desain Digital dari sudut pandang pengembangan Java ( https://spring.io/ ). Kerangka kerja ini memiliki banyak modul untuk mengimplementasikan berbagai tugas (Spring MVC, Spring Mail, Spring Data (JPA), Spring JMS dan banyak lagi).

Spring Cloud - dasar untuk pengembangan layanan microser (Discovery, Gateway, Ribbon, Config Server).

Keycloak- otorisasi dan server kontrol akses (IDM \ IAM). Server mendukung beberapa protokol otorisasi (OpenId, SAML, Oauth, Kerberos). Ini memungkinkan Anda untuk dengan mudah mengelola strategi otorisasi, mengkonfigurasi hak akses, dan memastikan keamanan akses ke sumber daya sistem. (https://www.keycloak.org/).

Kurento adalah server media. Itu digunakan untuk mengembangkan siaran video dan audio antara pengguna menggunakan protokol WebRTC (https://www.kurento.org/).

Elasticsearch adalah server pencarian teks lengkap. Untuk mencari portal, perayapnya dikembangkan, yang mengumpulkan data dari portal untuk pengindeksan, serta parser untuk mengekstraksi konten file.

Swagger adalah panduan dokumentasi mandiri untuk berinteraksi dengan API-Istirahat.

Jasperepors- Kerangka pelaporan. JasperStudio digunakan untuk membuat template laporan.

Graylog adalah server untuk mengumpulkan log dari aplikasi.

Semua modul dibangun menggunakan Maven dan CI \ CD (Jenkins).

Modul dan Layanan


Layanan microser yang memastikan berfungsinya modul meliputi:

  • Layanan manajemen file - layanan microser yang memungkinkan Anda menyimpan data dalam satu penyimpanan, menganalisis konten, mengonversi file ke format lain untuk diputar atau ditampilkan pada antarmuka web, mengunduh dan melampirkan ke sistem lain. Serta mengedit file bersama dan versinya.
  • – , . , , Elasticseach ( , ..). Apache Tika, .
  • – , - \- WebRTC - Kurento.
  • – , . ElasticSearch, JasperReports.
  • \ – , .
  • – , , , .
  • - – , Workflow BPMN. JBPM.



  • WCM – .
  • – , , .
  • – .
  • – .
  • – .
  • – .
  • — - c .
  • – -. , , .
  • Struktur organisasi - berbagai direktori dan laporan.
  • Modul administratif - Manajemen hak akses ke portal, situs, halaman, potret dan pengaturan tampilan untuk portlet, halaman, dan portal virtual.
  • Navigasi - memungkinkan Anda membuat navigasi khusus pada portal dan portal node.
  • Survei dan tes - modul besar dengan kemampuan untuk membuat tes dan survei dari berbagai jenis (dari pilihan tunggal, untuk putaran pertanyaan dan perbedaan). Dirancang untuk menguji, melatih, dan melakukan survei di antara pengguna portal.

Dan ada banyak modul spesifik lainnya dan tidak terlalu dengan proses bisnis untuk pelanggan tertentu. Ada sekitar 30 di antaranya.

Kesulitan dan kelebihan

Manfaat dari solusi ini.


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

,


  • API – .
  • – ABAC .
  • – - .
  • Caching data terpusat - server cache terpusat direncanakan untuk diperkenalkan (ini diperlukan untuk pengumpulan log terpusat untuk pekerjaan produ uji dev untuk memantau dengan benar stabilitas dan kebenaran ekosistem kita).

Total


Serangkaian teknologi ini, digabungkan dengan solusi arsitektur yang dipilih, memungkinkan kami untuk mengangkat masalah pengembangan portal, intranet, dan solusi eksternal "pada konveyor": lakukan dengan cepat, efisien, dengan pengaturan yang berbeda dan gunakan praktik terbaik.

Dan di artikel selanjutnya kita akan menceritakan bagaimana frontend kita diatur: tentang pertemuan dan bagaimana kita mencapai penggunaan kembali yang hebat.

Lanjutan segera ...

All Articles