De quoi nous avons fait JET BI. Architecture Business Intelligence System sans digression lyrique



Dans un article précédent, j'ai parlé de l'évolution des systèmes de BI et de la façon dont nous avons compris qu'il valait mieux créer votre propre plate-forme que de s'adapter aux systèmes existants.

Aujourd'hui, comme promis, je parle de l'architecture de notre nouvelle plate-forme, qui, je l'espère, sera une bonne solution pour la construction de tout système BI.

Architecture fonctionnelle


Dans le système, deux «cœurs» principaux peuvent être distingués fonctionnellement.

Le cœur de la visualisation et de la BI (l' équipe et moi l'appelons "lecteur") Il est engagé dans le fait qu'il filtre les données, calcule les faits et les mesures, calcule et met en cache les agrégats, etc. En général - l'OLAP le plus ordinaire. La prise en charge de l'informatique en mémoire est également disponible. Le moteur ETL que nous avons développé occupe une place distincte, prenant en charge les deux méthodes de chargement standard (par exemple, SQL, requête MongoDB, déchargement à partir de fichiers Excel, etc.) et le chargement de n'importe où à l'aide de scripts JS. De quelle façon précisément? Le fait est que nous avons «lié» le chargeur JS avec une API spéciale, dont le but est de fournir un ensemble de méthodes faciles à apprendre qui sont les plus demandées pour les requêtes vers différentes sources, ainsi que la transformation des données (par exemple, transposer, joindre, ajouter des colonnes calculées, divers types fonctions mathématiques et statistiques).

Langage

Javascript? Êtes-vous fou?

Peut-être ...

Mais le choix de JS comme langage et le rejet de l'invention d'un autre vélo, comme c'est souvent le cas sur les plateformes de BI, n'est pas accidentel. La popularité de la langue en elle-même, la simplicité de son développement (au moins pour les tâches ETL) et le grand nombre de spécialistes du marché se sont avérés pour nous des facteurs décisifs. En général, selon l'idéologie de notre plateforme, le moteur ETL est similaire au mécanisme de «chargement des scripts» utilisé, par exemple, dans QlikView, à l'exception de la langue dans laquelle ces scripts sont écrits. J'espère que de nombreux fournisseurs de plateformes de BI arriveront tôt ou tard à un langage de programmation universel, mais pour l'instant nous travaillons avec ce qui est.

Le cœur de la logique métier.Il s'agit plutôt d'un cadre qui consolide l'architecture logicielle et fournit un certain nombre d'API universelles avec lesquelles vous pouvez ajouter des composants analytiques d'informations supplémentaires appliqués au système.

D'après ce que nous avons déjà, nous pouvons noter:

  • Constructeur et gestionnaire de formulaires de saisie de données
  • Environnement de modélisation et d'analyse de simulation
  • Système de gestion des commandes
  • Dépôt électronique de documents
  • Projet et module de gestion de projet

Je voudrais souligner que ces composants sont présents dans le système pour une raison et ne vivent pas leur propre vie. Ils sont étroitement liés les uns aux autres et directement au système de visualisation et de rapport. En fait, ils deviennent soit des fournisseurs soit des consommateurs de données à cet effet. Par exemple, à partir du système de gestion des commandes, vous pouvez créer un rapport à partir de zéro à partir de zéro qui affiche l'état de toutes les commandes et une liste des personnes paresseuses les plus malveillantes. Et à partir du module de gestion de projet, obtenez les données sur les projets les plus «bloqués» et identifiez la raison du retard.

Architecture technique


Le backend de l'application s'exécute sous Node.JS, intercalant un certain nombre de composants natifs critiques (en termes de performances). Comme toute application Node.JS, le système peut être mis en cluster, conteneurisé et déployé dans n'importe quel environnement répondant aux exigences de Node.

Pour stocker des métadonnées, vous pouvez utiliser la plupart des SGBD relationnels populaires, que nous déployons le plus souvent sur PostgreSQL. La base de données stocke toutes les méta-informations sur les rapports, les panneaux de contrôle, les processus ETL, les modules supplémentaires, etc. Le système peut également être utilisé comme un outil pour remplir le stockage de données tiers. Pour de petites quantités de données, vous pouvez organiser la visualisation en mode ROLAP, c'est-à-dire directement à partir des systèmes source. Quelque chose comme le «modèle associatif» de QlikView est également présent. Si vous sélectionnez deux ou plusieurs ensembles de données comme source de données pour le visualiseur, ils seront combinés en fonction des noms des colonnes en un seul ensemble.

Frontend est un SPA classique sur React, des bibliothèques associées et des modules supplémentaires de JET BI lui-même. La communication avec le backend se fait via le REST le plus courant, une partie du code est isomorphe, c'est-à-dire qu'il est utilisé par le front et le back. Tout le code est ES7 avec des annotations de type (Flow), exécutées via Babel. Nous avons abandonné Typescript en faveur de Flow, car lorsque nous avons commencé, ce dernier a déduit un peu mieux les types.

Très souvent (dans environ 80% des cas) nous prenons des modules open source prêts à l'emploi et n'inventons pas les nôtres (dans le backend un peu moins souvent). Cela simplifie et réduit le coût de développement et de support, mais réduit légèrement la flexibilité. Il y a eu des erreurs de calcul, après quoi certaines bibliothèques ont finalement dû être réécrites par elles-mêmes.

Conclusion


En fin de compte, je voudrais dire qu'en tant qu'architecte, je suis heureux que le "cadre" du système se soit avéré assez solide et stable d'une part, et d'autre part, universel et avec une marge de flexibilité suffisante (malgré l'abondance des bibliothèques open source susmentionnées). C’est comme un sapin de Noël sur lequel on accroche constamment de nouveaux jouets. Après tout, l'arbre doit résister à des jouets de différentes variétés et rayures, et en même temps ne pas tomber sous leur poids. À mon avis, cet équilibre a été atteint dans JET BI, ce qui donne confiance que nos plans pour le développement du système seront mis en œuvre.

Albert Nurutdinov, architecte, Jet Infosystems

All Articles