55 lines
3.8 KiB
TeX
55 lines
3.8 KiB
TeX
\chapter{Requis techniques}
|
|
|
|
\section{Architecture et communications}
|
|
|
|
L'application est construite selon une architecture trois tiers qui va séparer la partie interface utilisateur de la partie traitement et des données. La couche de présentation sera appelée par la suite \emph{frontend} et celle de traitement \emph{backend}. Pour échanger des informations entre eux, ces tiers doivent utiliser des protocoles et un formatage précis.
|
|
|
|
\vspace{3mm}
|
|
\begin{figure}[h]
|
|
\centering
|
|
\includegraphics[width=150mm]{application_architecture}
|
|
\caption{Architecture de l'application}
|
|
\end{figure}
|
|
\vspace{3mm}
|
|
|
|
La communication entre le frontend et le backend se fait au travers d'un API \gls{restful} basé sur des échanges HTTP. Son implémentation du coté backend est assuré par le framework RubyOnRails\cite{railssite} et du coté frontend par EmberJS\cite{emberjssite}. Pour se comprendre, ces deux librairies respectent le même standard pour sérialiser l'information. Il s'agit de la spécification \emph{json api}\cite{jsonapi} dont l'implémentation coté backend est faite grâce au module ActiveModelSerializer\cite{activemodelserializer} et du coté frontend par la classe DS.JSONApiSerializer\cite{dsjsonapiserializer}. Cette convention décrit un ensemble de règles qui définissent comment les informations doivent être mises en forme dans une API qui utilise le JSON comme format de donnée. Cette structure force donc le développeur à structurer correctement les données et est une mise en application supplémentaire du paradigme "Convention plutôt que configuration".
|
|
|
|
Les échanges entre le backend et MongoDB sont assurés par le module Mongoid\cite{mongoid}. Cette extension applique le \emph{Data mapper pattern} en gérant la correspondance entre les objets définit en Ruby et les collections d'objets de la base de donnée. Elle va également fournir les méthodes pour interagir avec ces collections, comme par exemple les requêtes de recherche sur les objets.
|
|
|
|
\section{Technologies et versions}
|
|
|
|
L'ensemble de la solution utilisent différentes technologies qui doivent toutes être supportées pour assurer son bon fonctionnement. Les programmes principaux sont listés dans le tableau ci-dessous:
|
|
|
|
\vspace{3mm}
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{Technologies et versions}
|
|
\label{require-tab-techno}
|
|
\begin{tabular}{|l|l|l|}
|
|
\hline
|
|
\textbf{Nom} & \textbf{Version} & \textbf{Description} \\ \hline
|
|
Ruby & 3.4 & Interpréteur Ruby \\ \hline
|
|
Bundler & 1.16.1 & Gestionnaire de dépendances pour Ruby \\ \hline
|
|
Rails & 5.1.6 & Framework pour l'application backend \\ \hline
|
|
NodeJS & 8.1 & Moteur pour application Javascript \\ \hline
|
|
NPM & 6.2.0 & Gestionnaire de dépendance de NodeJS \\ \hline
|
|
Ember-CLI & 3.3.0 & Framework pour l'application frontend \\ \hline
|
|
MongoDB & 4.0.2 & Système de base de donnée non-relationnel \\ \hline
|
|
Redis & 4.0.11 & Base de donnée en mémoire \\ \hline
|
|
\end{tabular}
|
|
\end{table}
|
|
\vspace{3mm}
|
|
|
|
Les dépendances précises se trouvent dans des fichiers différents en fonction du projet:
|
|
|
|
\begin{itemize}
|
|
\item Paltogem: \lstinline|/paltogem.gemspec|
|
|
\item Fortigem: \lstinline|/fortigem.gemspec|
|
|
\item Backend: \lstinline|/Gemfile|
|
|
\item Frontend: \lstinline|/package.json|
|
|
\end{itemize}
|
|
\vspace{5mm}
|
|
|
|
\section{Hébergement}
|
|
|
|
Pour pouvoir fonctionner correctement l'application doit pouvoir effectué des requêtes sur l'API des équipements gérés. Pour y parvenir, la machine sur laquelle l'application est hebergée doit pouvoir atteindre les ports TCP 80 et 443 de ces équipements. |