Accueil
A propos
Services
Portfolio
Manifeste
Contact
Thesaurus
Talents
Hub
Design
Application Web Securiser Son Deploiement

Application web : sécuriser son déploiement

Avec des applications de plus en plus complexes, il devient essentiel de mettre en place une méthode efficace pour garantir la publication de mises à jour sans encombre.

Publié le 13/10/2021
Olivier Lacombe
Temps de lecture : 4 minutes

tl;dr

Il existe différents types d'environnements et de composants nécessaires pour sécuriser les mises à jour dans le développement d'applications. Il est nécessaire d’utiliser des outils efficaces permettant aux développeurs de passer d'un environnement à un autre. Il est également recommandé d'utiliser un cadre avec un modèle de conception commun tel que Model View Controller (MVC) et d'utiliser des outils d'automatisation pour simplifier le processus.

Les environnements : De quoi parlons-nous ?

Un «environnement» est un ensemble de composants, matériels et logiciels sur lesquels sont exécutés l'application. Il en existe de différentes sortes, pour des usages et des utilisateurs différents.

Ainsi, pour sécuriser les mises à jour de votre application, il est nécessaire de travailler sur différents environnements :

  • L’environnement de développement, sur lequel est programmée l’application (c’est donc l’espace de travail des développeurs).
  • L’environnement de recette, qui permet de tester les évolutions de l'application avec le donneur d’ordre, sans que l’application soit en ligne et visible pas tous (seuls les développeurs et le donneur d’ordre y ont accès).
  • L’environnement de production, sur lequel sont exécutés les programmes, une fois validés par le donneur d’ordre; ils sont alors rendus public (c’est l’environnement que les utilisateurs finaux vont voir).

Les composants sont de différentes natures :

  • Le système d’exploitation (Linux très souvent).
  • Les programmes associés tels que Apache ou Ngnix, qui interprètent les langage comme PHP, NodeJS ou encore Python et le système de base de données comme MySQL, PostGre ou MangoDB.
  • Votre application elle-même, qui va être versionnée avec des outils comme Git ou SVN.
  • Les données dites privées, qui sont générées par le programme lors de tâches planifiées et au fur et à mesure de son utilisation.
  • Les fichiers chargés par les administrateurs, via ftp, upload, ou téléchargés depuis des machines externes.
  • Les dépendances, qui représentent des programmes additionnels généralement présentés sous la forme de librairies.
  • Et enfin, les informations de la ou des bases des données (on parle des données et non de l’application qui permet leur exploitation).

Architecture & Méthodes

Il est essentiel, dès le départ, de mettre en place une architecture avec plusieurs environnements, ce qui va augmenter la productivité des développeurs, qui ainsi ne sont pas obligés de modifier le code en fonction de l’état d’avancement du projet et de son étape au niveau du déploiement.

N.B.: 3 environnements nécessitent 3 bases de données distinctes, donc 3 configurations différentes; chaque base de données porte un nom différent et les codes d’accès ne sont pas les mêmes.

En parallèle, il faut disposer d’outils efficaces pour permettre aux développeurs de passer leurs modifications d’un environnement à un autre. Pour celà, vous pourrez utiliser différents outils :

  • Git par exemple pour gérer le code source, avec lequel vous distinguerez les 3 environnements. En quelques secondes, vos développeurs pourront transférer les modifications d’un environnement à l’autre.
  • CLI comme Command Line Interface, un vrai truc de geek mais très utile pour charger rapidement les modifications d’un environnement disponibles sur le Git, voir même mettre en place toute une procédure (sauvegarde, droits d’écriture sur des dossiers, traitements massifs…).
  • Gestionnaire de packages, pour automatiser l’installation des dépendances, que ce soit pour les librairies côté serveur avec Composer ou côté client (CSS, Javascript) avec Yarn.

Certains développeurs affirment leur perfectionnisme en créant des scripts Shell (il s’agit d’instructions direct au niveau du système d’exploitation) pour automatiser l’ensemble… ce que nous faisons chez Nimiscient.

Comme dans tout domaine, la programmation nécessite des règles et normes. C’est pourquoi, quels que soient vos langages de programmation, nous ne pouvons que vous recommander l’usage d’un framework (cadre de développement).

En fonction des technologies utilisées, nous recommandons de privilégier celles qui disposent d’un Design Pattern (trame de conception) courant tel que MVC (Model View Controller), ce qui permet de séparer proprement le code de votre application, en isolant les différentes couches de programmation :

  • Model (modèle de données) : le code qui concerne les relations entre votre application et vos sources de données (en général, votre base de données).
  • View (vue) : le code qui permet de faire le rendu d’affichage, comme le HTML, le XML ou le JSON.
  • Controller : le code qui fait appel aux modèles de données, qui effectue les traitements (calculs, formatage, assemblage) pour les transmettre aux vues, idéalement en passant par des librairies pour rendre le code plus léger et donc plus compréhensible.

Enfin, dernier point important à prendre en compte : les tâches planifiées ou crons. Il s’agit d’une partie du code qui peut être exécutée directement par la machine (votre serveur) en fonction d’un calendrier. Par exemple, lorsqu’il faut effectuer un export régulier de données, vous planifiez que le serveur exécute un script qui généralement n’est pas accessible via le web (pour des questions de sécurité).

Finalement

Plus votre application devient complexe, plus il devient nécessaire d’organiser et de sécuriser la publication des mises à jour. De même, pour assurer la pérennité de vos développements, il faut organiser et structurer autant que possible.Vous y gagnerez sur de nombreux aspects :

  • En productivité, car de nombreuses tâches peuvent être automatisées et cela simplifiera grandement la collaboration entre vos développeurs ;
  • En qualité, car vous réduirez de manière significative les erreurs et bugs liés au changement de plate-forme ;
  • En pérennité de vos investissements, car vous augmenterez la longévité de vos codes sources, et réduirez ainsi votre dette technologique.

A propos de l'auteur

Olivier Lacombe
Président et fondateur de Nimiscient

Olivier est un passionné d’innovation, avec plus de 20 ans d’expérience, il est devenu un véritable ninja de l’optimisation des performances business des entreprises.

Sa créativité débordante lui permet d’aborder chaque projet avec une vision unique et authentique. C’est un magicien avéré de l’efficacité, capable de transformer chaque défi en une opportunité pour les entreprises qui font appel à lui.

A propos de Nimiscient

Nimiscient accompagne les entreprises dans leurs recherches de performance au travers des applications connectées et intelligentes.

Ainsi, nous aoportons les meilleurs leviers de productivité au cœur des entreprises grâce aux nouvelles technologies, à l’innovation et la créativité.

Partager cette page
Thesaurus