Checklist

Checklist de déploiement pour votre logiciel

François Lévesque 1

François Lévesque

Directeur technique chez Witify

Lorsque vient le temps de mettre en ligne un logiciel web, il est essentiel de concevoir une liste d'étapes de mise en ligne et une liste de vérifications robustes. Cet article ne prétend pas recenser toutes les étapes ni toutes les vérifications possibles, mais sert plutôt de guide pour vous aider à planifier votre propre déploiement avec succès.

Dans cet article, nous allons parcourir les 7 grandes phases de validation:

  • La robustesse de l'infrastructure technique qui héberge l'ensemble de vos données, logiciels et applications;
  • L'ajout d'outils d'analyse d'optimiser l'évolution de votre solution;
  • L'installation d'outils de suivis techniques afin d'identifier proactivement tout problème qui pourrait survenir;
  • Les sauvegardes de base de données pour avoir la paix d'esprit;
  • La migration des données afin d'assurer une cohérence entre vos anciennes solutions et la nouvelle; 
  • Les tests d'acceptation qui assurent la satisfaction fonctionnelle du système;
  • Et finalement le SEO - lorsque vous possédez des modules web publics (e.g. portails clients, portails de paiements, liste d'informations automatisées, etc.)

1. Infrastructure

L'infrastructure regroupe les serveurs, les configurations et la réseautique qui vont héberger et rendre votre logiciel accessible à partir du web. 

Nom de domaine

Lorsque vient le temps de mettre en place votre infrastructure, il faut d'abord penser à un nom de domaine (example.com) ou un sous-domaine (app.example.com) qui va donner accès au logiciel. Le domaine doit pointer, généralement avec un A record, vers l'adresse IP de votre serveur, ou de votre « Load-Balancer » si vous avez une infrastructure multi-serveurs.

Un logiciel web peut également avoir plusieurs sous-domaines pour différentes sections séparées. Une application web de distribution de produits alimentaires pourrait par exemple avoir un site web statique sur aliments-inc.com, une console pour les administrateurs sur erp.aliments-inc.com et un portail sur client.aliments-inc.com.

Chaque nom de domaine pertinent doit être configuré d'avance, car il faut prévoir jusqu'à 48h pour que les enregistrements « Domain Name System » (DNS) se propagent sur l'ensemble du web à l'international.

HTTPS

Une fois vos noms domaines configurés et propagés avec succès, vous pouvez ajouter des certificats SSL. À l'heure actuelle, ils sont indispensables pour sécuriser le traffic sur votre domaine. Sans certificat, les navigateurs peuvent empêcher des fonctionnalités, voir carrément bloquer votre nom de domaine. De nos jours, il est très facile de générer des certificats gratuitement avec des outils tels que « LetsEncrypt ». Également, de nombreux services d'hébergement permettent en un clic de configurer des certificats gratuits, notamment avec Cloudflare ou Netlify.

Serveurs

Lorsque vient le temps de provisionner un serveur, il ne faut pas sous-estimer l'importance de bien jauger les capacités du serveur. Dans un premier temps, il est important d'avoir un serveur assez puissant pour soutenir la charge de travail maximale possible théorique. Dans un second temps, on veut éviter d'avoir un serveur trop performant pour les besoins afin de rester économiquement optimal. 

Notre recommandation est de mettre en place un serveur légèrement plus puissant que nécessaire pour la mise en production pendant le premier mois. Gardez ensuite un œil sur les métriques de performance (CPU, mémoire vive, disque). Règle de pouce : l'utilisation CPU et de la mémoire ne devraient jamais dépasser 70% dans les pires cas. En moyenne, l'utilisation CPU et de la mémoire devrait être sous les 30%. Ajustez ensuite la capacité de vos serveurs en conséquence.

Espace disque

Si votre système possède une base de données (c'est très souvent le cas!) et enregistre des fichiers, il faut également prévoir la quantité d'espace disque nécessaire pour éviter que le disque sature. Nous recommandons généralement d'avoir un disque rempli à 50% au maximum en tout temps.

Si le logiciel a le potentiel d'héberger beaucoup de fichiers lourds, il est fortement recommandé d'enregistrer les fichiers sur un service externe comme AWS S3 pour éviter d'utiliser le disque vos serveurs d'application.

Alertes automatisées

Au minimum, vos serveurs devraient avoir des alertes automatisés si l'utilisation CPU, de mémoire vive et du disque dépasse un certain seuil. Cela vous permettra de réagir rapidement avant qu'une catastrophe survienne.

Pipeline de déploiement continu

Pour faciliter la mise à jour de votre logiciel, mettre en place un pipeline de déploiement automatique est capital. Avec des outils comme Github Actions, Jenkins, CircleCI ou Gitlab, à chaque fois qu'une mise à jour est déclarée sur le code, une suite d'actions automatisées peut être exécutée pour mettre à jour le code sur votre infrastructure.

Utiliser un pipeline de déploiement permet de déploiement de dizaines de mises à jour de façon 100% automatisée, sans aucune erreur humaine.

2. Outils d'analyses

Ajouter des outils d'analyse sur votre logiciel web peut être pertinent si vous souhaitez comprendre le comportement vos utilisateurs. Cela peut vous donner des insights pertinents sur les pages les plus (ou moins) utilisés, les formulaires les plus souvent remplis avec des erreurs de validation, les étapes où les utilisateurs restent bloqués, etc.

Une stratégie d'analyse de comportement réussie vous permet de repérer des failles sur les interfaces de votre système. Cela peut s'avérer très utile si vous avez une interface accessible publiquement avec de nombreux utilisateurs ou même si votre équipe interne l'utilise fréquemment.

Pour y arriver, vous pouvez utiliser des outils comme Google Analytics, HotJar et MixPanel. Il est cependant possible de récupérer des métriques directement votre logiciel pour avoir plus de contrôle sur le format des données et sur la façon dont vous souhaitez les présenter.

3. Suivi des erreurs et exceptions

Même avec une stratégie de test robuste, des exceptions et bugs peuvent survenir en production. Comme il est très difficile de corriger tous les bugs, il faut au moins être capable de les détecter lorsqu'ils surviennent. Des outils comme Sentry ou Bugsnags permettent de rapidement détecter des bugs sur votre environnement de production et permettent d'envoyer des alertes automatiques à l'équipe de développeur par email, sur Slack ou tout autre outil de communication.

Intégrer des outils de suivi d'erreurs est indispensable pour réagir plus rapidement. On peut également les configurer pour ajouter d'avantage de contexte lors des erreurs, comme le ID de l'utilisateur touché, la trace de l'exception, l'historique des actions et navigations qui ont menés au bug. Ces informations additionnelles accélèrent ainsi grandement le processus de résolution. De plus, il se pourrait que l'équipe de développement proactivement résout des bugs avant même que vous receviez une mention ou un ticket plus formels.

4. Backups

Les sauvegardes de bases de données et de fichiers sont essentielles dans tout processus de déploiement de logiciel. Elles constituent un filet de sécurité indispensable, permettant de récupérer des données précieuses en cas de défaillance du système, de corruption de données ou d'attaques malveillantes. Sans une stratégie de sauvegarde fiable, les entreprises risquent des pertes de données catastrophiques qui pourraient nuire gravement à leur réputation et à leur viabilité.

Optez pour une solution de sauvegarde qui répond à vos besoins en termes de sécurité, d'accessibilité et de coût. Les solutions varient des sauvegardes locales sur disques ou sur bandes à des solutions cloud plus modernes comme AWS S3.

L'automatisation des sauvegarde est la clé pour assurer que les sauvegardes sont effectuées régulièrement et sans intervention manuelle. Utilisez des outils et des scripts pour planifier des sauvegardes périodiques. Testez régulièrement ces processus pour vous assurer qu'ils fonctionnent comme prévu.

Effectuer des sauvergarde à chaque jour peut devenir très couteux après 10 ans. Déterminez une politique de rétention des sauvegardes qui équilibre les besoins en matière de récupération de données et les coûts de stockage. Assurez-vous également que les sauvegardes sont stockées en toute sécurité et protégées contre les accès non autorisés.

5. Migration des données

Si votre nouveau logiciel remplace un ancien système, il est souvent essentiel de migrer les données existantes. Tout dépendant de la refonte de votre système, la migration peut devenir complexe. Règle générale, plus le format sous-jacent des données est différent du nouveau format souhaité, plus la migration risque d'être complexe.

La première étape consiste à sélectionner quelles tables de votre ancienne base de données doivent être migrées. Tout dépendant de votre temps et de votre budget, vous pouvez ignorer certaines données moins pertinentes. Par exemple, pour un ERP, il peut être pertinent de migrer la liste des utilisateurs, les données opérationnelles (commandes, clients, tâches en cours) et les données financières (factures, crédits, etc.). Cependant, il est peut être moins pertinent de migrer l'historique d'accès à la plateforme.

Ensuite, il faut concevoir la cartographie de l'ancien format de données par rapport au nouveau. En changeant de logiciel, il arrive souvent que des tables équivalentes sont changée, ajoutées, voir carrément supprimées. Certaines colonnes peuvent changer de nom ou de signification. Pour chaque colonne de chaque table, établissez une table de conversion complète.

La dernière étape consiste à programmer les scripts de migration. Vous pouvez tester vos scripts à l'avance avec les données de l'ancien système sur une base de données de test. Passez ensuite en revue les tables et les colonnes converties pour vérifier que chaque attribut est migré correctement.

Une fois vos tests complétés, la vieille du déploiement officiel, vous pourrez exécuter le script de migration.

6. Tests d'acceptation

Une fois votre logiciel déployé et vos données migrées, vous pouvez à présent compléter des tests d'acceptions généraux (QA testing). Bien qu'un logiciel de qualité contiendra déjà des tests automatisés, il est important de tester le logiciel au complet dans sa nouvelle infrastructure.

Au préalable, il faut batir une liste de tests avec des conditions de départ, une liste d'étapes à suivre et des conditions de fin. Si vous manquez de temps ou de budget, tentez au minimum de rédiger des tests pour les fonctionnalités critiques du système. Voici quelques exemples de tests critiques :

Test 1 : Il est possible de se connecter à son compte

  • Condition de départ: Arriver à la page de connexion
  • Étapes: Entrer des informations de connexion valides et cliquer sur « Se connecter »
  • Condition de succès: Vous êtes redirigé au Tableau de bord et les graphiques sont générés

Test 2 : Il est possible de créer une commande en tant que vendeur

  • Condition de départ : Vous êtes connecté sur un utilisateur ayant le rôle de vendeur
  • Étapes: Entrer les informations de base pour créer une commande [détail des informations minimales requises]
  • Condition de succès : La commande est créée avec succès, elle apparait dans la liste de commandes

Lorsqu'on déploie un logiciel web sur une nouvelle infrastructure, quelques fonctionnalités fortement liées à votre configuration serveur et réseau sont plus à risque d'échouer. Voici une liste d'actions que vous devriez valider :

  • Il est possible de téléverser un fichier puis de le télécharger
  • Vérifier que les images téléversées s'affichent correctement
  • Il est possible de téléverser de gros fichiers (> 1mb) sans erreur serveur
  • Il est possible de générer grand rapport sans erreur serveur

Configurer et vérifier les notifications email ou SMS

Si votre logiciel a besoin d'envoyer des notifications par courriel ou SMS, utiliser des services tiers spécialisés, tels que SendGrid, Twilio, ou Postmark, permet d'améliorer significativement la délivrabilité des courriels. Ils offrent des fonctionnalités avancées telles que l'authentification des emails, le suivi des ouvertures et des clics, ainsi que des rapports détaillés sur les performances des campagnes d'emailing.

Après le premier déploiement, il est important de tester ces intégrations. Envoyez des courriels de test pour vous assurer que tout fonctionne comme prévu. Vérifiez non seulement que les courriels arrivent dans la boîte de réception, mais aussi que les liens, images et autres contenus dynamiques s'affichent correctement.

Configurer et vérifier les intégrations avec des services tiers

En plus des courriels, votre logiciel utilise probablement plusieurs autres services tiers, comme Stripe, l'API de Google Maps, Shipstation, Mailchimp, Klaviyo, etc. Pendant le déploiement, il est important de configurer chacun de ces services en utilisant les clés de production. Une fois la configuration complétée, il est indispensable de passer à une vérification des services tiers.

Au préalable, il est important de répertorier l'ensemble services utilisés. Pour chaque service, rédiger des tests d'acceptation complets, avec des conditions de départ, une liste d'étapes à suivre et des conditions de succès. Pour tester une intégration avec Stripe, nous pourrions par exemple avoir ce test :

Conditions de départ

  • Vous êtes connecté sur un compte client
  • Avoir une facture à payer

Étapes

  • Ouvrir une facture
  • Cliquer sur Payer
  • Entrer des informations de paiement valides

Conditions de succès

  • Un message de succès apparait
  • La transaction s'affiche dans le compte Stripe
  • La transaction est enregistrée dans le logiciel de gestion

Vous pouvez répéter la procédure pour chaque service et chaque intégration pertinente. Une fois cette liste complétée, il est très facile de détecter des erreurs d'intégration critiques. Vous pouvez même réutiliser cette liste dans le futur lorsque vous faites des mises à jour du logiciel.

Vérifier les comportements périodiques

Certains logiciels exécutent des actions de façon périodique. Citons en exemple un rapport de l'inventaire envoyé à chaque dimanche aux administrateurs d'un ERP ou encore une importation des données Quickbooks à chaque soir. 

Un logiciel bien conçu aura déjà des tests automatisés pour vérifier le comportement de ces actions répétées. Cependant, il est important de planifier une vérification manuelle de ces comportements. Dressez une liste des actions périodiques et planifier des tests avec des conditions de départ, des étapes à suivre et des conditions de succès.

Vérifier la performance des différentes pages

Après la migration des données sur un nouveau système et une nouvelle infrastructure, on peut parfois découvrir certains problèmes de performance :

  • Des pages lentes à télécharger
  • Des rapports longs à générer
  • Des requêtes SQL longues à exécuter

Utiliser un outil comme Sentry et OhDear permet de détecter automatiquement les pages et requêtes les plus lentes. Vous pouvez ensuite prendre les actions nécessaires pour accélérer les requêtes critiques avec vos développeurs.

7. SEO

SEO signifie « Search Engine Optimization », c'est-à-dire l'optimisation du moteur de recherche. C'est une façon de rendre votre site web détectable et plus compréhensible par les moteurs de recherche comme Google ou Bing.

Si votre application comporte une section accessible publiquement que vous souhaitez rendre visible sur Google, il peut très pertinent de travailler sur votre SEO. L'optimisation SEO est un domaine en soit, certaines firmes s'y spécialisent. Cependant, suivre quelques bonnes pratiques peut vous aider à démarrer du bon pied. Assurez-vous d'avoir au moins une balise « title » différente pour chaque page. Assurez-vous également d'ajouter une balise « h1 » sur chaque page. Également, vérifier la hiérarchie des balises « h1 », « h2 », « h3 », « h4 » pour chaque page. Autant que possible, utiliser des balises sémantiques pour exprimer le rôle des différentes sections sur la page web. La barre de navigation devrait être dans une balise « nav ». Le pied de page devrait être dans une balise « footer ». Vous devriez également ajouter l'attribut « alt » sur toutes les images pour les décrire à Google ou Bing.

À l'inverse, si vous souhaitez cacher des pages aux moteurs de recherche, assurez-vous d'ajouter la balise suivante sur vos pages secrètes:

 <meta name="robots" content="noindex,follow" />

Pour bloquer un site en entier, vous pouvez également ajouter un fichier robotos.txt à la source de votre application web avec le contenu suivant :

User-agent: *
Disallow:

Pour terminer

La réussite d'un déploiement repose sur une préparation minutieuse et une stratégie bien conçue. Prioriser les étapes complexes et incertaines, telles que la migration des données et l'élaboration de l'infrastructure, est essentiel pour accélérer le processus. Dans le cadre de déploiements d'envergure impliquant des systèmes critiques, tels qu'un logiciel central de gestion ou un ERP, il est conseillé de mettre en place une version test intégrant les données migrées plusieurs semaines avant la transition finale. Cette approche permet d'identifier et de corriger les éventuelles défaillances critiques avant que le système ne devienne pleinement opérationnel. Tout comme pour d'autres projets d'ampleur, le succès d'un déploiement dépend d'une stratégie solide, de processus de vérification rigoureux et d'une expertise avérée.

François Lévesque 1

François Lévesque

Directeur technique chez Witify

François Lévesque est cofondateur et directeur technique chez Witify. Spécialisé dans la gestion et le développement de projets logiciels et web complexes, il se consacre depuis 8 ans sur le développement de ERP, Intranets et CRM sur-mesure. Au fil de son parcours, il a développé une expertise approfondie en génie logiciel, se traduisant par une sensibilité particulière à la traduction des objectifs d'affaires en requis techniques précis. Ayant une vaste expertise en analyse et visualisation de données, François a également mené avec succès de nombreux projets de données avec des institutions gouvernementales.

Witify Logo Icon

Intéressés à propulser votre entreprise?