Checklist
Expert advice

Deployment checklist for your software

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.

Cette article ne prétend donner 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.

1. Infrastructure

L'infrastructure retroupe les serveurs, les configurations et le réseau qui va héberger et rendre accessible au web le code de votre logiciel.

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 ouvrir le logiciel. Le domaine doit pointer, généralement avec un A record, vers l'adresse IP de votre serveur ou votre Load-Balancer si vous avez une infrastructure multi-serveurs.

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

Chaque nom de domaine pertient doit être configuré d'avance, car il faut prévoir jusqu'à 48h pour que les enregistrements «Domain Name System» (DNS) se propage 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 cetificats 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 Let's Encrypt. É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, choisir les capacités idéales est crucial. Il est important d'avoir un serveur assez puissant pour soutenir la charge de travail maximale possible théorique. Il est aussi essentiel de ne pas mettre en place un serveur trop performant pour rester économique. 

Notre recommandation est de mettre en place un serveur plus puissant que nécessaire pour la mise en production. Pendant le premier mois, garder un oeil sur les métriques de performance (CPU, mémoire vive, disque). Règle de pouce : l'utilisation CPU et de la mémoire ne devrait jamais dépasser 70% dans les pires cas. En moyenne, l'utilisation CPU et de la mémoire devrait être sous les 30%.

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 des crash. Nous recommadons 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ée peut être exécutée pour mettre à jour le code sur votre infrastructure

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

2. Analyses

Ajouter des outils d'analyse sur votre logiciel web peut être pertinent si vous souhaitez comprendre le comportement des utilisateurs de votre plateforme. Cela peut vous donner des insights intéressants 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 perment de repérer des failles sur les interfaces de votre système. Cela peut s'avérérer très utile si vous avez une interface accessible publiquement avec de nombreux utilisateurs. 

Deux outils populaires pour sont 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.

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 corrgier 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 permet d'envoyer des alertes automatiques à vos 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 trâce de l'exception, l'historique des actions et navigations qui ont menés au bug.

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 modifié, plus la migration est complexe.

La première étape consiste à sélectionner quelles tables de votre base de données migrer. Tout dépendant de votre temps et de votre budget, vous pouvez ignorer certaines données moins pertinentes. Pour un ERP, il est important d'importer les utilisateurs et toutes les anciennes commandes. Cependant, il est peut être moins pertinent de migrer les historiques d'accès à la plateforme.

Ensuite, il faut concevoir le mappage de l'ancien format de données 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 revu les tables et 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é va déjà contenir 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 minum de rédiger des tests pour les fonctionnalités critiques du systèmes. Voici quelques exemples de tests critiques:

Il est possible de se connecter

  • 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 êtez redirigé au Tableau de bord et les graphiques sont générés

Il est possible de créer une commande

  • Condition de départ : Vous êtes connecté en tant que vendeur
  • Étapes: Entrer les informations de base pour créer une commande
  • 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 un 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 courrel 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, en s'assurant qu'ils atteignent la boîte de réception de leurs destinataires et non le dossier des spams.

Ces services 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 des 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 ses 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

  • Avoir 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

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 critique. Vous pouvez même réutiliser cette liste dans le futur lorsque vous faites des mises à jour du systèmes.

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 comportemnet 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, étapes à suivre et 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 infrastrcture, on peut parfois découvrir certaines lenteurs :

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

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 Optimisation». C'est une façon de rendre votre site web détectable sur 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 démarrer du bon pied. Assurez-vous d'avoir au moins une baliste «title» différente pour chaque page. Assurez-également d'ajouter une baliste «h1» sur chaque page. Également, vérifier la hierarchie des balises «h1», «h2», «h3», «h4» pour chaque page. Autant que possibler, 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 «header». 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

Une déploiement n'est pas une mince affaire. Pour réussir son déploiement rapidement, il est important de prévoir une stratégie de déploiement efficace. Les tâches les plus longues et incertaines, comme la migration des données et la mise en place de l'infrastructure devraient être réalisées en premier. 

Pour de très gros déploiement de systèmes critiques, comme un ERP, il est fortement recommandé de déployer à l'avance et tester une version avec des données migrées pendant quelques semaines avant de changer de système d'un seul coup. Cela permet de répérer des erreurs critiques avant que le nouveau système soit opérationnel et en fonction. 

Comme beaucoup de grands projets, un déploiement réussi dépend d'une stratégie robuste, de processus de vérification complets et d'expérience.

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

Interested in growing your business?