Principes communs et environnement des services
###############################################


Principes relatifs aux composants délivrés
==========================================

.. caution:: Dans la suite, les composants développés dans le cadre du projet VITAM seront appelés les "services VITAM" ; les composants intégrés, mais non développés, seront appelés les "COTS".

Nommage
*******

Dans la suite, on distinguera les identifiants différents suivants :

- ID de service (ou ``service_id``) : c'est une chaîne de caractères qui nomme de manière unique un service. Cette chaîne de caractère doit respecter l'expression régulière suivante : ``[a-z][a-z-]*``.
- ID de package (ou ``package_id``) : il est de la forme ``vitam-<service_id>``. C'est le nom du package à déployer.
- ID d'instance (ou ``instance_id``) : c'est l'ID d'un service instancié dans un environnement ; ainsi, pour un même service, il peut exister plusieurs instances de manière concurrente dans un environnement donné. Cet ID a la forme suivante : ``<service_id>-<instance_number>``, avec ``<instance_number>`` respectant l'expression régulière suivante : ``[0-9]{2}``.


Principes relatifs aux services VITAM
*************************************

Les services développés dans le cadre du projet VITAM interagissent avec un ensemble de composants externes dédiés à leur exploitation :

.. FIXME : les termes de la figure sont différents des termes de l'explication en-dessous.

.. figure:: images/principles-vitamservice.*
    :align: center
    :height: 15 cm

    Environnement d'un service VITAM

Les interactions entre ces services et leur environnement se séparent essentiellement en 2 grandes familles :

* Les interactions avec des services externes ; on y trouve :

    - L'accès aux packages logiciels pour installation (Cf. :doc:`20-principles-packaging`) ;

    - Le déploiement, permettant l'orchestration du déploiement de la solution (Cf. :doc:`30-principles-deployment`) ;

    - L'annuaire de services, permettant à chaque service de localiser les services dont il dépend et d'y accéder de manière indépendante de la topologie de déploiement ; cette section intègre ainsi également les principes de load-balancing et de haute disponibilité (Cf. :doc:`10-principles-networking`) ;

    - Le monitoring, avec (Cf. :doc:`40-principles-monitoring`) :

        + L'accès offert au système de supervision aux données de monitoring exposées par les services (sur un port d'administration dédié) ;
        + L'export des logs applicatifs vers le sous-système de gestion des logs ;

* Les interactions locales au serveur, notamment avec des fichiers (dont la nomenclature est précisée dans :doc:`une section dédiée <02-principles-users-rights>`) :

    - L'installation, avec l'exécution du gestionnaire de paquets de l'OS (Cf. :doc:`20-principles-packaging`) ;

    - La gestion des fichiers de configuration de l'application via l'outil de déploiement (Cf. :doc:`30-principles-deployment`) ;

    - Le démarrage / arrêt des services (Cf. :doc:`50-principles-technical-administration`) ;

    - La sauvegarde / restauration des données applicatives (Cf. :doc:`60-principles-data-management`).


Principes relatifs aux COTS
***************************

.. note:: Les :term:`COTS` correspondent aux éléments intégrés dans VITAM, mais dont le code source n'est pas maîtrisé par VITAM. Ils comprennent notamment les moteurs de base de données (ex: MongoDB, Elasticsearch)

De manière générale, les distributions binaires utilisées sont celles fournies nativement par les distributions linux, ou à défaut les paquets fournis par l'éditeur du logiciel.

Les :term:`COTS` respectent les principes énoncés ci-dessus dans la mesure de leurs possibilités ; les éléments suivants sont notamment respectés :

- Le packaging logiciel : la nature des packages et les outils utilisés pour installer ces logiciels doivent être les mêmes que pour les autres composants VITAM.
- Le déploiement : les outils et principes de déploiement doivent également être identiques à ceux utilisés pour déployer les autres composants VITAM.
- L'arrêt / démarrage des services : ces logiciels doivent utiliser le même gestionnaire de services système que les autres composants VITAM.
- L'export des logs : les logs de ces logiciels doivent être envoyés à la chaîne de gestion de logs suivant les mêmes protocoles que les autres services ; par contre, le format des messages de logs peut être différent.

.. seealso:: Les principes non respectés par les :term:`COTS` (et qui concernent notamment les problématiques de LB/HA et de monitoring) sont détaillées dans :doc:`les sections de documentation associées </archi-exploit-infra/15-services>`.
