Numérique responsable : Comment réduire l’impact de votre site Web

Vous avez sûrement entendu parler du numérique responsable ! Vouloir réduire l’impact environnemental d’un site web, c’est évidemment bien, le faire c’est encore mieux. Alors comment s’y prendre ?
Bien que certains outils permettent d’avoir une vue d’ensemble de votre site web, il est souvent nécessaire d’analyser l’ensemble des pages de votre site une par une et l’examen de nombreuses dimensions est possible. En plus, pour augmenter la difficulté, la plupart des indicateurs techniques sont en partie corrélés.

Bref, cela peut prendre beaucoup de temps, alors cet article présente un condensé des points à surveiller et les outils pour les mesurer.

Illustration du numérique responsable représentant des ordinateurs au milieu de la nature. Image générée par l'IA.

1. Quels sont les points à surveiller – Les bonnes pratiques du Numérique responsable ?

Le poids de la page

Le poids de votre page correspond à la quantité de données de votre page et se mesure donc en octet (Méga-octets la plupart du temps). Plus la page sera de taille réduite, moins il y aura besoin d’énergie pour la transférer. Comme une page web est constituée de : 

  • D’un DOM (Document Object Model) : c’est le guide qui va renseigner le navigateur sur le contenu et la structure de la page, avant même son rendu.
  • De code statique : HTML et CSS.
  • Des scripts (Javascript) permettant d’animer et de dynamiser votre site.
  • Des fichiers : images, vidéos, …
  • Des plug-ins ainsi que des solutions tierces.

Le poids de votre page est essentiellement influencé par la quantité et le type de fichiers de votre page. Les images non optimisées peuvent considérablement augmenter la taille d’une page. Un vrai point noir dans le cadre du numérique responsable. Il convient d’utiliser des formats d’image modernes (comme WebP) et des techniques de compression. Il est aussi possible de limiter leur nombre ou de conditionner leur affichage. 

Si vous avez besoin de vous donner un ordre de grandeur, vous pouvez trouver des statistiques détaillées du poids des pages web (et de ces différents composants  sur le site HTTP Archive accessible via ce lien : https://httparchive.org/reports/page-weight

Le nombre de requêtes

Lorsque vous développez un site web, il comporte de nombreuses parties différentes. Vous avez les différents fichiers d’images que vous utilisez sur une page, les feuilles de style CSS qui contrôlent l’apparence du contenu, les fichiers JavaScript qui ajoutent toutes ces fonctionnalités intéressantes, etc.

Donc, lorsqu’une personne parcourt votre site web, son navigateur doit pouvoir télécharger toutes les ressources nécessaires à cette page à partir de votre serveur. Pour ce faire, il adresse des requêtes HTTP au serveur pour chaque ressource individuelle. Bref, pour faire simple, les requêtes sont ce qui permet à votre site de récupérer toutes les informations dont il a besoin auprès de votre serveur (qui stocke vos données et fichiers).

Toutefois, certains éléments spécifiques vont affecter particulièrement les requêtes, il s’agit par exemples :

  • D’extensions (fréquentes en WordPress notamment),
  • Les polices personnalisées et les émojis,
  • Des scripts liés à des applications tierces.

Pour optimiser les requêtes, il y a trois approches possibles :

  • Supprimer les requêtes inutiles (par exemple, les extensions WordPress non utilisées – évidemment si vous utilisez WordPress)
  • Combiner les requêtes (minifier les fichiers, autrement dit les combiner en un seul). Par exemple, vous pouvez assembler six petits fichiers CSS en un seul fichier CSS plus volumineux. Il se chargera même plus rapidement.
  • Réduire la complexité des scripts (pour réduire le nombre d’appels).

L’optimisation du code en général (HTML, CSS ou Javascript) et des requêtes HTTP en particulier permet une exécution plus rapide et permet de consommer globalement moins de ressources. Un point clé pour un projet numérique responsable !

Optimiser le chargement

Entrer dans le cadre du numérique responsable, c’est également prendre le temps d’optimiser le chargement de votre site. Le temps nécessaire pour charger une page impacte non seulement l’expérience utilisateur mais aussi la consommation d’énergie. Quelques techniques sont clés :

  • le lazy loading : le chargement de la page au fur et à mesure du défilement permet de chercher les ressources que lorsque c’est nécessaire. 
  • La mise en cache permet aussi de limiter les ressources les plus gourmandes en servant immédiatement les fichiers. 
  • Utilisation des CDN : L’utilisation de réseaux de distribution de contenu (CDN) peut réduire la distance de transfert des données, ce qui peut diminuer aussi la consommation d’énergie.

Finalement, les indicateurs clés pour un projet numérique responsable font également partis des éléments affectant le plus l’expérience de vos utilisateurs. Faire de votre projet, un projet numérique responsable vous permet également d’e faire un projet d’acquérir une interface plus efficace pour vos visiteurs.

Pour en savoir plus, lisez également notre article sur les 20 bonnes pratiques de l’éco-conception web !

2. Quels sont les bons outils pour un projet numérique responsable ?

Note : de très (très) nombreux outils pourraient être présentés dans cette section de cet article. L’objectif n’est pas d’être exhaustif mais plutôt de vous présenter les quelques outils que l’on trouve pas mal et qui vous aideront à réaliser un projet numérique responsable. Si vous n’avez pas le même avis, n’hésitez pas à m’écrire sur LinkedIn pour que nous puissions en discuter !

Analyse du code

SonarQube : SonarQube est un outil d’analyse de qualité du code qui collecte et analyse le code source, fournissant des rapports sur la qualité du code de votre projet. Il combine des outils d’analyse statique et dynamique, permettant de mesurer la qualité de manière continue. SonarQube inspecte et évalue chaque aspect de votre code, offrant un historique consultable du code pour analyser les problèmes :  style, défaillances, duplications, manque de couverture de test ou complexité excessive.

Le logiciel analyse le code source sous différents angles, du niveau du module au niveau de la classe, fournissant des valeurs métriques et des statistiques révélant les zones problématiques nécessitant des améliorations. SonarQube garantit également la fiabilité du code, la sécurité de l’application et réduit la dette technique en rendant votre base de code propre et maintenable. Il prend en charge 27 languages différentes, dont le C, le C++, Java, JavaScript, PHP, GO, Python, et bien plus encore. SonarQube propose également une intégration CI/CD et fournit des retours lors de la revue de code avec l’analyse des branches et la décoration des demandes d’extraction.

Evidemment, vous pouvez aussi tester EcoCode ou des outils plus classiques comme Jenkins par exemple.

Analyse des performances techniques (côté client)

Pour mesurer ces indicateurs, des outils comme Google PageSpeed Insights, GTmetrix, ou encore WebPageTest peuvent être utilisés. Ils fournissent des analyses détaillées des pages web et offrent des recommandations pour améliorer leur performance et réduire leur impact écologique. En plus de ces outils, des initiatives spécifiques, comme le Green Web Foundation, peuvent fournir des informations sur l’éco-responsabilité des services d’hébergement web.

Pour estimer la consommation d’électricité et l’émission de GES

Ecoindex.fr : L’écosystème EcoIndex met à disposition plusieurs outils permettant de calculer un score en s’appuyant sur les bonnes pratiques définies par le “Collectif numérique responsable”.

Des extensions pour les navigateurs existent aussi. Par exemple : Green IT. Découvrez notre article dédié à Green IT ici !

Tableau récapitulatif des indicateurs :

Les statistiques doivent idéalement être analysées pour chaque page de votre site. Voici une proposition de tableau synthétique pour un suivi efficace de votre site ou application

URL de la pageUnitésSource de la donnée
Poids de la page
Nombre d’éléments du DOM
Nombre de requête
Temps de chargement (de la page)
Estimation GES
Électricité consommé

Conclusion

Chercher à réduire l’impact écologique de ses assets numériques, est une démarche que nous encourageons vivement ! Mais c’est aussi une démarche qui permet simplement d’optimiser son site web et donc améliorer sa performance commerciale (de nombreuses études démontrent la corrélation entre la vitesse d’un site et l’acte d’achat par exemple). 

Evidemment, cela ne résoudra pas le réchauffement climatique (même si cela nous désole) mais si chacun de nos actes devient à chaque fois un peu plus responsable, peut-être arriverons nous à faire quelque chose ?
Finalement, un projet numérique responsable c’est avant tout un projet plus efficace. Votre temps et votre investissement ne seront que mieux récompensés.

Must-have : documents d’architecture technique !

Écrire des documents d’architecture technique peut être un peu casse-pied mais c’est très important pour un projet. C’est au cœur du travail d’un architecte technique parce qu’il détaille tous les choix que vous avez conduits et qu’il précise ce qui est attendu de la part des équipes de développement. Ils sont aussi indispensables pour communiquer efficacement avec les différentes parties prenantes (service IT du client, hébergeur, etc.) et pour garantir une mise en œuvre cohérente. Alors, prenons notre courage à deux mains, voici quelques idées générales pour bien rédiger de tels documents :

  • Évidemment, on va faire une introduction pour présenter le projet et son contexte et quel est l’objectif et la portée du document. 
  • On va ensuite présenter la portée fonctionnelle du projet et les contraintes et les normes auxquelles l’architecture doit se conformer.
  • Notez que la rédaction de ces documents implique également l’hébergeur / infogéreur de la solution. Pensez-donc à les rédiger conjointement, ou à minima à lui soumettre pour relecture et validation.
Illustration Documents d'architecture technique

Petit tour de ces documents d’architecture technique indispensables :

Document 1 – DAT (Documents d’Architecture Technique) – Architecture d’exécution

Une fois cette introduction faite, on y est, on peut alors commencer à rentrer dans le coeur du document qui est l’architecture d’exécution : 

  • 1. Architecture d’exécution globale : vue d’ensemble de l’architecture globale du projet, faire des schémas et des diagrammes pour illustrer les composants clés et leurs interactions est indispensable.
  • 2. Architecture d’exécution détaillée : faire une description détaillée de chaque composant du système, y compris les serveurs, les bases de données, les logiciels, les modules, etc. 
  • 3. Flux de données interne à l’application : Diagrammes (souvent aussi appelé “Matrice”) de flux de données montrant comment les données circulent entre les composants. Détail sur la manière dont les données sont collectées, stockées, traitées et transmises.
    Il est intéressant d’y annexer un ADR (Architecture Decision Records) qui va lister les décisions / changements d’architecture qui ont été faits au cours du temps, c’est assez pratique pour les nouveaux arrivants pour comprendre l’histoire du projet.
  • 4. Intégrations et interfaces : Description des interfaces avec d’autres systèmes, services ou applications externes. Protocoles de communication, formats de données, etc.

Document 2 – Sécurité

Et, puis on détaille d’autres éléments qui concernent l’architecture de la sécurité : 

Décrivez quelle est l’implémentation de la sécurité ?

  • L’identification d’un utilisateur est-elle basée sur un cookie de session, un jeton JWT, etc… ?
  • Y a-t-il des protocoles particuliers implémentés (SAML, OAuth 2.0, OpenId Connect, etc.) ?
  • Si votre application a la responsabilité de gérer l’authentification (ex: login / mot de passe), décrivez les règles et le mécanismes mise en œuvre (complexité et renouvellement des mots de passe, prise en compte des échecs d’identification répétés, logs, …).

Mentionnez également la stratégie de gestion des permissions : comment sont-elles associées à un utilisateur (techniquement et fonctionnellement), et quelles sont les briques techniques utilisées (annotations / attributs, Voters, middlewares) ?

Détail qui a son importance : on oublie souvent de décrire la gestion des accès horizontaux et c’est souvent un cause de faille de sécurité #OWASP_A01.

L’application traite-t-elle de la donnée sensible ?

Si oui, décrire les mesures de durcissement mises en place pour en assurer la protection.. Enfin, comment suivre l’application dans le temps : lister les dépendances et les versions des langages / librairies que vous utilisez, et décrire comment les maintenir à jour.

Document 3 – Architecture de développement et de production

Enfin, on décrit les éléments qui concernent l’architecture de développement et de production voire l’architecture physique : 

  • 1. Développement et déploiement : Processus de déploiement, gestion des mises à jour et des correctifs (Intégration continue, description du choix effectué pour le workflow GIT, règles de soumission et de relecture des pull-requests, etc.).
  • 2. Plan de test : Stratégie de test, y compris les scénarios de test, les plans de test d’acceptation, les tests de performance, etc.
  • 3. Gestion des versions et des modifications : Processus de gestion des versions du logiciel et des modifications apportées à l’architecture.
  • 4. Gestion des erreurs et de la reprise après sinistre : Plans pour la gestion des erreurs, la surveillance, la journalisation des incidents. Stratégies de reprise après sinistre en cas de panne système.
  • 5. Architecture physique : description des serveurs selon les différents environnements. 

Quelques bonnes pratiques en plus

Outils de modélisation

Les outils de modélisation et de visualisation (UML en particulier) peuvent apporter une aide efficace dans la représentation des architectures complexes. Ils permettent de conceptualiser, communiquer et documenter l’architecture de manière claire et compréhensible. L’inconvénient est que ces outils donnent une vision souvent très détaillée de l’architecture technique que l’effort pour maintenir ces représentations est assez important… Il est possible de s’en passer sur des projets de taille moyenne mais si vous êtes sur un projet énorme, je vous le conseille vivement ! 

Les mises à jour 

Mettre à jour ces documents d’architecture technique régulièrement est très important, le suivi (et les explications) des changements que l’on apporte à l’architecture permet d’éviter de tourner en rond autour des choix techniques… Et, il y aura forcément un sujet de dette technique un jour ou l’autre. 

La rédaction 

Assurez-vous que ces documents d’architecture technique sont clairement rédigés, bien organisés et accompagnés de schémas et de graphiques pour faciliter la compréhension. Une fois ces documents d’architecture technique finalisés, ils doivent être partagés avec l’équipe de développement, les parties prenantes et toute personne impliquée dans le projet pour s’assurer que l’architecture est correctement comprise et acceptée.

Conclusion

Pour conclure, écrire de la documentation n’est pas forcément ma passion (je préfère coder) mais ces documents d’architecture technique sont essentiels pour la réussite d’un projet. Lorsque ces documents manquent sur un projet, cela fait perdre beaucoup de temps et ne me rassure pas vraiment sur la qualité du projet ! Allez, hop hop hop, on me fait de beaux docs !

TheCodingMachine vous accompagne dans vos besoins de conception de projet : de la conception fonctionnelle, conception technique ou encore de rédaction de spécifications.

Contactez-nous pour en savoir plus !

Tests fonctionnels, réussissez la recette de votre projet !

La phase de tests fonctionnels d’un projet web, aussi appelée recette, est la période la plus délicate d’un projet. En effet, il est difficile de mettre tout le monde d’accord !

Trop d’anomalies (de bugs) ? Le client, donc les futurs utilisateurs, pourrait penser que la qualité de la solution est mauvaise donc rejeter la solution.

Pas assez d’anomalies ? L’équipe de développement, qui sait bien qu’une solution n’est jamais parfaite, va se dire que les utilisateurs ne testent pas et que la mise en production risque d’être catastrophique ! 

… Alors, qui a raison ? Un peu les deux ! En fait, cela dépend :

  • Si l’application répond aux besoins (spécifications) et qu’elle fonctionne correctement en termes de performances, j’ai tendance à penser que c’est très bien de trouver de nombreux bugs ! 
  • Si une application a de très mauvaises performances, si les bugs ne sont pas résolus rapidement, alors cela peut cacher des problèmes structurels… Ce qui peut devenir très embêtant. 

Dans cet article, nous proposons de faire un tour d’horizon des bonnes pratiques pour réussir votre phase de tests fonctionnels.

Blog TCM - Tests fonctionnels, réussissez la recette de votre projet !

Quelle est la différence entre les tests d’intégration et les tests fonctionnels ?

Les tests d’intégration se concentrent sur les interactions entre les composants de l’application, tandis que les tests fonctionnels se concentrent sur le comportement global de l’application du point de vue de l’utilisateur. 

Tests d’intégration :

La première étape est déjà de bien implémenter vos tests unitaires.

Les tests d’intégration examinent ensuite la manière dont les modules, les classes ou les composants interagissent les uns avec les autres. Ils peuvent impliquer plusieurs unités de code, mais ils ne s’étendent pas nécessairement à l’ensemble de l’application.

Imaginons un site web de commerce électronique. Un test d’intégration pourrait vérifier que le panier d’achat, le processus de paiement, et la gestion des produits fonctionnent ensemble correctement. Le test pourrait vérifier que les produits sont ajoutés au panier, que le total est calculé correctement, et que le paiement est effectué sans problème.

Tests fonctionnels :

Les tests fonctionnels vérifient si le logiciel fonctionne conformément à ses spécifications et aux attentes de l’utilisateur. Ils se concentrent sur le comportement fonctionnel de l’application. Ils couvrent l’ensemble de l’application ou d’une fonctionnalité spécifique du début à la fin. Ils examinent les scénarios d’utilisation, les flux de travail et les interactions avec l’utilisateur.

Reprenons l’exemple du site web de commerce électronique. Un test fonctionnel pourrait vérifier l’ensemble du processus d’achat, de la navigation sur le site, en passant par la sélection d’un produit, l’ajout au panier, la création d’un compte client, le paiement, et enfin la confirmation de la commande. Le test s’assurerait que chaque étape se déroule correctement, que les pages s’affichent correctement, que les formulaires fonctionnent, etc.

Comment faire des tests fonctionnels ? 

Il faut d’abord créez une liste de scénarios de test et identifiez les critères de réussite.

Identifiez les scénarios de test qui couvrent toutes les fonctionnalités et les cas d’utilisation critique de votre projet web.

Nous vous recommandons de commencer par le  “happy path”, c’est-à-dire le chemin complet qui permet de faire le tour de l’ensemble des fonctionnalités de l’application sans erreur. 

Par exemple, imaginons un scénario de l’envoi d’un message, le test fonctionnel pourrait prendre la forme suivante (assez simple) : 

1. Connexion à l’Application
L’utilisateur ouvre l’application de messagerie.La page de connexion s’affiche avec les champs « Nom d’utilisateur » et « Mot de passe ».
2. Authentification
L’utilisateur saisit son nom d’utilisateur et son mot de passe.Attente : L’application vérifie les informations d’identification. Si elles sont correctes, l’utilisateur est connecté.
3. Accès à la Messagerie
Une fois connecté, l’utilisateur accède à sa boîte de réception.La boîte de réception s’affiche avec une liste de contacts et des conversations récentes.
4. Nouveau Message
L’utilisateur clique sur le bouton « Nouveau Message » pour commencer une nouvelle conversation.L’interface de création de message s’affiche avec un champ de destinataire, un champ de message, et un bouton « Envoyer ».

Il est intéressant d’identifier les tests prioritaires car cela vous permet de vous concentrer sur les tests les plus critiques en premier.

Est-il possible d’automatiser les tests fonctionnels ? 

Il est possible d’utiliser des outils pour automatiser les tests fonctionnels comme Selenium ou Cypress.

Attention cependant, automatiser de trop nombreux tests pendant le développement est souvent une erreur. Durant cette phase, l’application peut changer et maintenir ces tests peut se révéler très coûteux.

En revanche, construire un set de tests qui permet de vérifier les fonctionnalités clés de l’application (par exemple la création d’un client, etc.) permet d’éviter de nombreuses régressions. En plus, on intègre alors ces scripts dans le pipeline et on vérifie que les tests se sont bien exécutés. 

Dans cet exemple, le script Selenium remplit un champ et clique sur un bouton.  (Vous aurez besoin de l’extension PHP WebDriver, ainsi que d’un pilote (WebDriver) approprié pour le navigateur que vous souhaitez utiliser (par exemple, Chrome WebDriver).

<?php

require_once('vendor/autoload.php');

use Facebook\WebDriver\Remote\RemoteWebDriver;

use Facebook\WebDriver\WebDriverBy;

// URL du serveur Selenium WebDriver

$host = 'http://localhost:4444/wd/hub';

// Configuration du pilote (dans cet exemple, Chrome)

$capabilities = ['platform' => 'LINUX', 'browserName' => 'chrome'];

// Création d'une instance du navigateur

$driver = RemoteWebDriver::create($host, $capabilities);

//Evidemment, il faut mettre l’URL que vous souhaitez tester

$driver->get("https://www.example.com");

// Identifier un champ de saisie par son ID

$inputField = $driver->findElement(WebDriverBy::id("input_id"));

// Saisir du texte dans le champ

$inputField->sendKeys("Texte à saisir");

// Identifier le bouton de validation

$button = $driver->findElement(WebDriverBy::id("button_id")); 

// Effectuer une action de clic sur le bouton

$button->click();

// c’est juste pour voir le résultat que l’on attend 3s. 

sleep(3);

$driver->quit();

A vous de jouer ! 

Mettez en place l’organisation et outillez la gestion des tickets 

L’organisation de la recette est critique pour le succès du projet.

Planifiez au plus tôt les périodes où vous allez mobiliser les utilisateurs et les livraisons des corrections. Ne tentez pas de faire une recette trop courte même si la mise en production est urgente. C’est un temps incompressible !  

Par ailleurs, oubliez la feuille Excel que l’on s’échange par e-mail… Impossible de travailler avec cela. Il vous faudra nécessairement éduquer un peu vos utilisateurs. Un outil de gestion des anomalies va vous permettre de documenter soigneusement tous les problèmes identifiés, y compris les étapes pour les reproduire et les informations de contexte.

Un bon outil (comme par exemple Jira, Asana ou même des outils un peu plus ancien comme Mantis) va vous permettre de gérer des données comme : 

  • Auteur de l’anomalie : le testeur à l’origine du ticket.
  • Description de l’anomalie : une description détaillée du problème ou de l’anomalie, y compris les étapes pour la reproduire, les résultats attendus et les résultats observés.
  • Le statut de l’anomalie : le statut actuel de l’anomalie, qui peut inclure des états tels que Ouvert, Assigné, En cours de résolution, Résolu ou Fermé. 
  • Le niveau de gravité : la gravité de l’anomalie, qui peut être basée sur l’impact sur l’utilisateur ou sur le système. Les niveaux de gravité sont généralement évalués de  Bloquant, Majeur et Mineur.
  • Développeur assigné à l’anomalie.
  • Historique et gestion des dates : la date de création, la date de dernière modification, …
  • Autres fichiers : captures d’écran ou pièces jointes,… 

Un système simple de suivi devra permettre surveiller des indicateurs clés tels que : 

  • Suivre le nombre des anomalies par statut par semaine par exemple, 
  • D’évaluer le nombre d’anomalie fermée ou ouverte sur la même période, 
  • De connaître le nombre de corrections apportées à l’application…

Conclusion : pas de recette miracle pour vos tests fonctionnels

Sans vouloir vous décourager, des études ont montré que, en moyenne, environ 15 à 50 % des bugs sont détectés lors de la phase de tests fonctionels. Cela signifie que même avec des tests fonctionnels rigoureux, de nombreux bugs peuvent passer inaperçus jusqu’à ce que l’application soit utilisée en production.

Est-ce que cela veut dire qu’il faut s’en passer ? Certainement pas ! Les risques potentiels qu’implique une mauvaise gestion de la phase de recette sont nombreux : régressions en production, difficulté de maintenir l’outil à terme. 

Pour finir, j’ai envie de donner quelques conseils aux équipes de développement qui doivent faire tester leur application et livrer leur application : 

  • Accompagnez les utilisateurs dans la rédaction des cahiers de tests, c’est souvent la première fois qu’ils doivent rédiger un tel document ; 
  • Pour ne pas paniquer les utilisateurs, soyez physiquement là lors des premiers tests surtout si l’environnement est installé pour la première fois, cela vous évitera de vous fâcher avec eux si votre application rencontre des problèmes d’environnement. 

Alors, pour conclure sur un mauvais jeu de mot, il n’y a pas de recette miracle pour faire une recette parfaite ! Mais si vous souhaitez en discuter avec nous, n’hésitez pas à me contacter sur LinkedIn.

E-commerce headless : Les plateformes Sylius et Aimeos

Vous cherchez la meilleure solution pour votre e-commerce ? Les plateformes e-commerce headless sont faites pour vous ! On a tous galéré sur des projets à intégrer des solutions comme Magento (et je ne parle pas de Magento 2), Drupal commerce ou encore Prestashop… 

Heureusement, il y a actuellement une transformation rapide dans la manière dont les plateformes e-commerce sont conçues et exploitées. L’approche headless, séparant la couche frontale de la couche de back-end, s’impose comme la nouvelle norme, offrant une flexibilité et une efficacité inégalées. Parmi les leaders de cette révolution, Sylius et Aimeos se distinguent comme des solutions open source incontournables pour l’e-commerce headless.

e commerce headless

1. L’E-commerce Headless, une révolution en marche dans le commerce en ligne

Pendant de nombreuses années, l’écosystème technologique e-commerce a été dominé par des solutions monolithiques qui visait à offrir le plus de fonctionnalités possibles pour une implémentation rapide. Cette approche a notamment fait le succès de Magento pendant de nombreuses années. Toutefois, de nombreuses raisons font que cette logique est aujourd’hui remise en question.

Comme souvent, la raison à l’origine de toute est le changement de comportement des utilisateurs. Le parcours d’achat digital des utilisateurs est devenu beaucoup plus complexe, omnicanal et personnalisé. Cela entraîne de nombreux enjeux technologiques.

L’omnicanal :

Aujourd’hui en matière d’e-commerce, l’omnicanal est devenu la règle et le même utilisateur va utiliser potentiellement plusieurs canaux tout au long d’un même parcours d’achat : ordinateurs, téléphones mais aussi potentiellement des bornes en magasins, des télévisions ou des assistants vocaux.

Cette nouvelle tendance représente un vrai challenge technologique et économique pour les e-commerçants car il s’agit de pouvoir au mieux suivre l’utilisateur tout au long de son parcours pour par exemple déclencher l’achat en poussant une promotion au bon moment. De plus, les anciennes architectures ne permettent pas une gestion centralisée et simple des boutiques sur les différentes canaux : gestion des stocks, des paiements, des fiches de produit, …. La situation est alors devenue rapidement un casse-tête technique !

L’e-commerce headless sépare la gestion de votre arrière boutique (stock, produit, paiements, …) de celle des différentes vitrines de votre boutique sur les différents canaux de l’utilisateur. L’e-commerce headless permet donc une gestion centralisée et simplifiée de votre business ainsi qu’une meilleure exploitation consolidée de la donnée.

La personnalisation de l’expérience utilisateur

Aujourd’hui, la capacité à personnaliser l’expérience utilisateur est devenu un des facteurs clés d’avantage concurrentiel dans l’e-commerce.

Pour comprendre cela, il suffit de simplement s’arrêter sur l’exemple du paiement. Aujourd’hui, il est devenu crucial pour les plateformes e-commerce de proposer un grand nombre de moyens de paiement (par carte, par virement, Paypal, Apple Pay, …) mais aussi de façon de payer comme en atteste l’essor du paiement en trois fois.

Ces besoins de personnalisation ont entraîné l’émergence de nombreux acteurs et solutions spécifiques à des petites briques du e-commerce. C’est le cas par exemple de la société Klarna pour le paiement en 3 fois.

La personnalisation grandissante a donc augmenté la nécessité d’assembler pleins de petites briques dédiées à des usages spécifiques ce qui est à l’opposée de la philosophie des solutions « tout-en-un » comme par exemple Magento.

Ainsi, l’headless e-commerce facilite grandement ces approches par micro-services grâce à une architecture bien plus flexible.

Le coût et la performance

Les solutions monolithiques ont tendance à avoir des coûts en maintenance qui augmentent fortement au fil du temps à force de devoir modifier petit à petit du code pour des besoins de personnalisation.

De plus, la plupart des solutions monolithiques leader du marché ont des coûts de licence élevés. C’est normal car elles proposent par défaut un grand nombre de fonctionnalités (que vous n’utiliserez pas forcément toute).

Enfin, il y a une véritable pénurie de profil compétent sur certaines technologies du fait d’une courbe d’apprentissage particulièrement longue et pénible pour les développeurs (beaucoup de fonctionnalités à maîtriser !). Cela fait que les spécialistes de ces solutions sont durs à trouver et coûtent chers, c’est notamment le cas des experts Magento.

2. Les avantages de l’E-Commerce Headless

En terme techniques, l’e-commerce headless est une approche de développement web où la couche frontale (Front-End), c’est-à-dire l’interface utilisateur que voient les clients (la vitrine de votre magasin), est séparée de la couche de Back-End (l’arrière-boutique), qui gère la logistique, le traitement des commandes, la gestion des données, etc. Dans un système e-commerce traditionnel, le Front-End et le Back-End sont étroitement liés, limitant souvent la flexibilité et les options de personnalisation. En revanche, dans une architecture headless, ces deux parties sont distinctes et communiquent via des API (Application Programming Interfaces).

Les plateformes Headless présente de nombreux avantages : 

Flexibilité de l’Interface Utilisateur : Les marques peuvent concevoir des expériences libérées des contraintes front-end traditionnelles. Avec une solution headless, une marque de vêtements pourra créer par exemple une expérience utilisateur immersive, intégrant des essais virtuels, des visualisations 3D, ou des personnalisations de produits interactives, sans être limitée par les contraintes front-end de la plateforme e-Commerce.

Optimisation des Performances : Les sites e-commerce headless bénéficient de temps de chargement réduits, améliorant l’expérience utilisateur et éventuellement le taux de conversion, notamment sur mobile.

Intégration Multi-Canal : l’intégration de divers canaux est simple et permet d’offrir une expérience client cohérente sur d’autres plateformes en ligne, les applications mobiles, les médias sociaux, etc.

Flexibilité dans le Développement : Les développeurs peuvent utiliser n’importe quel framework ou technologie qu’ils préfèrent pour le front-end.

Mises à Jour Indépendantes : Les mises à jour peuvent être effectuées sur le front-end ou le back-end indépendamment l’un de l’autre, ce qui réduit les temps d’arrêt et les perturbations pour les utilisateurs.

Intégration d’autres applications : Une entreprise pourra facilement intégrer son site e-commerce avec diverses technologies comme les CRM, les systèmes ERP, ou les plateformes de marketing automatisé, permettant une gestion plus efficace des clients et des données.

3. Les solutions d’e-commerce headless que l’on apprécie le plus : Sylius et Aimeos 

Nous avons intégré deux solutions très puissantes : Sylius et Aimeos, que nous conseillons à nos clients de manière quasi systématique. Évidemment, le choix entre Sylius et Aimeos dépendra de vos préférences en matière de framework PHP, de vos exigences en termes de performance et d’évolutivité, ainsi que de votre besoin d’accès à une communauté de support et de développement mais pour les décrire rapidement : 

Sylius : le choix du « Less Is More » pour une Plateforme Modulaire et Extensible

Construit sur le robuste framework PHP Symfony, Sylius se distingue par sa modularité et sa flexibilité. Cette plateforme permet aux développeurs de personnaliser et d’étendre ses fonctionnalités en fonction de leurs besoins spécifiques, tout en maintenant une architecture headless.

Grâce à une API REST complète, Sylius facilite les intégrations avec d’autres systèmes et applications, renforçant ainsi son rôle en tant que solution e-commerce back-end puissante.

Aimeos : Performance et Scalabilité 

Aimeos, basé sur Laravel, est reconnu pour sa performance exceptionnelle, capable de gérer plus d’un milliard de produits et des milliers de commandes par minute. Sa conception headless permet une personnalisation totale du front-end et offre ainsi aux entreprises la possibilité de créer des expériences utilisateur uniques. Avec une API JSON REST et la possibilité de développer des extensions personnalisées, Aimeos se présente comme une solution e-commerce extrêmement adaptable.

Au final, le e-commerce headless offre une plus grande souplesse dans le développement, de meilleures performances et la possibilité de créer des expériences utilisateur sur mesure et innovantes. Ces plateformes permettent de se différencier en proposant de nouvelles expériences utilisateurs et de s’adapter rapidement aux évolutions du marché.

Si vous avez un projet e-commerce, n’hésitez pas à faire appel à nous ! 

CI/CD : Accélérez vos projets de développement

Alerte Spoiler : Le développement web n’est plus ce qu’il était. Oubliez les longues nuits à traquer les bugs ou les journées interminables de déploiement. 

CI/CD, une révolution silencieuse  - article de blog TheCodingMachine

Le CI/CD change notre façon de créer et de déployer des applications. Rien de spectaculaire ? Pas si sûr, cette automatisation des processus d’intégration ou de déploiement a finalement pas mal d’impact en termes d’organisation pour les équipes, de rigueur dans le développement des projets… et sur la satisfaction des clients. 

Discrètement, une petite révolution est en marche. Explications. 

Qu’est-ce que le CI/CD ?

CI/CD représente « Continuous Integration » (Intégration Continue) et « Continuous Delivery » (Livraison Continue). Ces méthodologies impactent le développement web en automatisant et en améliorant les processus de développement, de test et de déploiement.

Continuous Integration : un pilier de l’efficacité

L’Intégration implique l’intégration régulière du code modifié dans un référentiel commun, permettant une détection et une correction rapides des conflits et des bugs.

L’intégration continue est garante de la cohérence du code. Ce processus consiste à :

  • #1 – La validation continue : les modifications du code sont automatiquement validées par des tests pour s’assurer qu’elles ne causent pas de régressions ou d’erreurs.
  • #2 – L’automatisation des processus de compilation, d’analyses de code est essentielle pour garantir la cohérence de l’intégration et le respect des bonnes pratiques.
  • #3 – La détection de conflits : les problèmes d’intégration sont identifiés dès qu’ils se produisent, ce qui permet de les résoudre rapidement.
  • #4 – Un référentiel partagé : les configurations des tools phpstan ou des normes de code via phpcsfixer) est versionné dans le code, du coup tout le monde y a accès. 

En termes pratiques, chez TheCodingMachine, la CI a permis le partage et le respect des bonnes pratiques. Elle est exécutée sur toutes les Merge-Requests et consiste à :

  • Vérifier la compilation de nos images DOCKER et du code javascript, 
  • Exécution des outils d’analyse statique (eslint, phpstan, phpcs-fixer), 
  • Exécution des tests unitaire / d’intégration (phpunit, cypress), 
  • Assurer le workflow GIT, comme formattage des commits ou la vérification des conflits.

L’intégration continue permet même d’être proactif. Les outils d’analyse statique empêchent l’apparition de bugs. Par exemple, phpstan détecte que le paramètre de la fonction peut être int|null mais la fonction n’autorise que int :

function doSomething(): int|null;

function doAnotherThing(int $something): int;

doAnotherThing(doSomething()): int;

Ce qui passerait en PHP ne passe pas avec l’exécution de phpstan ! (magique).

Continuous Delivery : Vers une Flexibilité Accrue

La CD étend la CI en automatisant également le processus de déploiement du logiciel. L’objectif du CD est de rendre le déploiement d’une application aussi simple et fiable que possible, de manière à ce qu’elle puisse être déployée en production à tout moment et permet : 

#1 – L’automatisation du déploiement : le processus de déploiement en production est automatisé pour réduire les erreurs humaines et les temps d’arrêt.

#2 – Le déploiement dans les environnements de test : avant d’être déployée en production, l’application est testée dans des environnements de test, de pré-production et/ou de staging pour s’assurer de sa fiabilité.

#3 – Le déploiement en production : le CD permet de déployer de nouvelles fonctionnalités ou des correctifs rapidement et fréquemment, en minimisant les délais entre le développement et la mise en production.

#4 – le partage des connaissances de déploiement : le déploiement est maintenant versionné, les secrets ne sont plus accessibles par les développeurs et la responsabilité du déploiement ne repose plus sur la responsabilité d’un membre de l’équipe. Si le workflow le permet, chaque membre de l’équipe peut maintenant déployer.

Le CI/CD, vers le meilleur des deux mondes : 

L’utilisation combinée CI/CD permet de créer un pipeline de développement automatisé. Elle joue le rôle de la courroie de transmission entre les développeurs et les équipes DevOps, permettant une intégration continue du code fraîchement écrit, garantissant que chaque modification, aussi minime soit-elle, est immédiatement testée et préparée pour la livraison. Cette approche réduit les frictions, souvent vécues dans les cycles de développement traditionnels, où les écarts entre l’écriture du code et sa mise en production peuvent être sources de conflits et de retards.

En automatisant les tests et le déploiement, le CI/CD élimine les erreurs manuelles et accélère le cycle de vie du développement, permettant ainsi aux développeurs de se concentrer sur la création plutôt que sur les tâches répétitives. Parallèlement, il offre aux équipes DevOps une visibilité continue et des mises à jour régulières, facilitant une gestion plus proactive et une planification plus précise. En somme, le CI/CD n’est pas seulement un ensemble de pratiques techniques ; c’est l’organe qui unifie le développement et les opérations. Cela améliore la qualité du logiciel, réduit les risques d’erreur humaine et accélère les mises en production.

Des outils comme Jenkins, Travis CI, CircleCI et GitLab CI/CD jouent un rôle clé dans la facilitation et l’implémentation du CI/CD.

Conclusion : le CI/CD, un levier stratégique

En définitive, le CI/CD n’est pas seulement une série de pratiques techniques ; c’est une philosophie de développement qui favorise l’efficacité, la collaboration et la réactivité. Pour les entreprises qui cherchent à optimiser leur développement web, adopter le CI/CD n’est pas seulement une option, c’est une nécessité. 

Bref, on peut passer ses nuits à faire autre chose que de regarder si son code compile… comme par exemple, voir si son pipeline passe (les CIs peuvent prendre malheureusement pas mal de temps)…

Et, si vous souhaitez mettre en place le CI/CD sur votre projet, n’hésitez pas à nous contacter !

La bonne méthodologie : Du Design Thinking au DevOps ! 

Présentation des méthodologies de projet web, du design thinking au DevOps

Il y a beaucoup de méthodologies de projet web différentes et certains pourraient se perdre dans cette forêt de bonnes pratiques ! Surtout que lorsque l’on ne maîtrise pas très bien ces notions, il y a le risque de passer pour quelqu’un qui n’est pas très moderne par les gourous de ces méthodes ! 

Malgré cet écueil, s’interroger sur ses pratiques, sur la manière d’être le plus efficace, sur ce qui permet d’apporter plus de valeur aux projets est nécessaire. Les méthodologies de projet web évoluent constamment pour s’adapter à la fois aux nouvelles technologies, aux besoins changeants des organisations ou même aux différentes envies des collaborateurs ! 

Alors faisons un tour de ces nouvelles méthodologies de projet web. Ces approches ne s’excluent pas les unes des autres, elles sont même assez complémentaires ! Tant pis pour les puristes, mais grossièrement, le design thinking permet de concevoir un produit, les méthodes agiles de le développer et le DevOps de le mettre en production… 

DESIGN THINKING : un voyage créatif centré sur l’utilisateur, c’est l’art de donner vie à des idées par le prototypage et le test.

Icon Design Thinking

Le design thinking est une approche de résolution de problèmes centrée sur l’humain et axée sur la créativité. Elle met l’accent sur la compréhension approfondie des besoins, des motivations et des comportements des utilisateurs finaux pour créer des solutions innovantes et adaptées. Le design thinking est souvent utilisé dans le développement de produits, la conception de services, l’amélioration des processus et la résolution de problèmes complexes. 

Elle comporte trois étapes clés : 

#1 – Idéation : À cette étape, les membres de l’équipe génèrent un grand nombre d’idées de solutions potentielles, souvent par le biais de sessions de brainstorming. L’objectif est de penser de manière créative.

#2 – Prototypage : L’équipe sélectionne ensuite les idées les plus prometteuses et les transforme en prototypes concrets. Les prototypes peuvent être des maquettes, des maquettes numériques, des scénarios d’utilisation, ou d’autres représentations visuelles des solutions potentielles.

#3 – Test et itération : Les prototypes sont ensuite testés auprès des utilisateurs finaux pour recueillir des commentaires et des retours d’information. Ces tests permettent d’identifier ce qui fonctionne et ce qui doit être amélioré. En fonction des résultats, l’équipe itère en modifiant et en améliorant les prototypes.

Cette méthodologie repose sur l’idée que les meilleures solutions émergent lorsque l’on combine une compréhension profonde des besoins des utilisateurs avec un processus itératif de conception et de test. Il encourage la créativité, la collaboration et l’innovation, et peut être appliqué dans de très nombreux domaines, de l’entreprise à l’éducation en passant par le secteur public. Le design thinking permet de résoudre des problèmes de manière holistique et centrée sur l’expérience de l’utilisateur.

MÉTHODOLOGIE AGILE (SCRUM) : adieu la rigidité ! Embrassez l’adaptabilité et la collaboration. Fonctionnez par sprints pour dynamiser votre développement et maximiser la satisfaction client.

Icon Méthodologie Agile SCRUM

SCRUM (qui est la méthodologie agile la plus répandue) est basé sur des principes de travail en équipe, de transparence, d’adaptabilité et d’itérations. Il divise le projet en itérations appelées sprints, généralement de deux à quatre semaines. Chaque sprint se concentre sur la réalisation d’un ensemble de fonctionnalités définies dans un backlog de produit. Les équipes de développement se réunissent régulièrement pour des réunions de planification, de revue et de rétrospective pour s’organiser, inspecter leur travail et s’améliorer continuellement.

SCRUM permet une adaptation continue aux besoins changeants du projet. Les fonctionnalités peuvent être priorisées et ajustées à chaque sprint. Cette méthodologie encourage la collaboration étroite entre les membres de l’équipe et les parties prenantes. Les sprints réguliers permettent des livraisons partielles du produit, ce qui permet de réduire les risques en identifiant rapidement les problèmes et d’améliorer la satisfaction du client grâce à son implication dans le projet. 

Les méthodologies de projet web hybrides combinent des éléments d’approches traditionnelles (comme le modèle en cascade) avec des méthodes agiles pour offrir plus de flexibilité tout en répondant aux exigences de planning ou de budgets.

DEVOPS : l’union sacrée du développement et des opérations, automatisant et fluidifiant le déploiement de vos logiciels pour une performance inégalée.

Icon DevOps

DevOps vise à intégrer étroitement le développement (Dev) et les opérations (Ops) pour accélérer la livraison de logiciels, améliorer la qualité et automatiser les processus de déploiement. Le DevOps est une approche culturelle, organisationnelle et technique du développement logiciel qui vise à améliorer la collaboration, l’efficacité et la qualité du cycle de vie du développement et de la livraison de logiciels. 

Le DevOps repose sur plusieurs principes clés :

#1 – Collaboration étroite : les équipes de développement et d’exploitation travaillent ensemble de manière étroite et collaborative. Il n’y a plus de silos organisationnels, et les équipes partagent la responsabilité du cycle de vie du logiciel.

#2 – Automatisation : l’automatisation est au cœur du DevOps. Les processus, les tâches répétitives et les opérations sont automatisés autant que possible, ce qui réduit les erreurs humaines, accélère la livraison et assure la cohérence. Les tests unitaires font par exemple souvent parti des automatisations mises en place.

#3 – Livraison continue : le DevOps favorise la livraison continue de logiciels, ce qui signifie que les mises à jour et les fonctionnalités peuvent être déployées fréquemment et rapidement.

#4 – Surveillance et gestion des incidents : les équipes DevOps sont responsables de la surveillance en temps réel des performances et de la disponibilité des applications. En cas de problème, elles sont prêtes à réagir rapidement et à résoudre les incidents.

La mise en oeuvre du DevOps passe par des outils et des pratiques tels que l’intégration continue (CI), la livraison continue (CD), les outils d’automatisation, la gestion de configuration, les conteneurs, l’orchestration de conteneurs, la surveillance des performances, la gestion des incidents, etc. 

Les avantages sont principalement l’amélioration de la qualité du logiciel grâce à des tests automatisés et à des déploiements plus fréquents et la réduction des erreurs humaines grâce à l’automatisation. 

Pour conclure

Nous devons faire un avertissement sur un constat que nous faisons régulièrement : trop de méthodologie tue le projet. Lorsque l’attention de l’équipe est plus centrée sur la bonne exécution de la méthodologie que sur l’aboutissement du projet, le projet est en risque. Alors agir de manière méthodique est très important parce que cela fait gagner du temps et réduit les risques mais il ne faut pas perdre de vue ce que l’on doit faire in fine. 

Finalement chacune des méthodologies décrites se spécialise sur une phase d’un projet : le Design Thinking pour la conception, les méthodologies agiles pour le développement et le DevOps pour la phase de production. Elles sont bien souvent complémentaires ! 

Peut-être que nous allons voir émerger dans un futur proche de plus en plus de méthodologies de projet web intégrant de l’intelligence artificielle et de l’apprentissage automatique dans la gestion de projet. Cela aiderait à prévoir des problèmes potentiels ou d’optimiser des ressources… à suivre donc ! 

Si vous avez un projet et que vous vous interrogez sur quelle méthodologie utiliser, n’hésitez pas à nous contacter !

Présentation des méthodologies de projet web, Design Thinking, Scrum. Jean-François, directeur de projets.

Le prix de votre projet web : Notre guide pour un budget précis

Quel est le prix d’un projet web ? Voici une question à laquelle nous devons souvent répondre. Et, ce n’est pas si simple, très souvent, la question est posée après une première réunion d’une heure et nous n’avons que quelques éléments à l’esprit… 

Si on devait faire un parallèle, cette question sonne alors un peu comme si vous demandiez chez un concessionnaire : “Quel est le prix d’une voiture ?”. Il vous répondrait : ”C’est-à-dire que cela dépend ! Vous voulez rouler à quelle vitesse ? Quelles options souhaiteriez-vous avoir ?”. La problématique est similaire pour le prix d’un projet web.

Illustration des éléments de calcul du coût d'un projet web

Prix d’un projet web : les principaux facteurs de coûts 

En effet, le coût d’un projet web peut varier considérablement en fonction de nombreux facteurs, notamment la taille et la complexité du projet, les fonctionnalités requises, la technologie utilisée, le type de prestation que vous souhaitez. 

Pour vous aidez à vous repérer, voici quelques-uns des principaux facteurs qui influencent le prix d’un projet web :

#1 – le nombre et la complexité des fonctionnalités : un site web simple avec des fonctionnalités de base coûtera moins cher qu’un projet avec de très nombreuses fonctionnalités, voire des fonctionnalités complexes (intégrations de solutions externes, algorithmes et calculs, automatisation, …). Attention, le nombre de fonctionnalités souhaitées et la complexité d’un projet ne sont pas toujours corrélées, parfois la majeure complexité d’un projet peut résider dans une seule tâche… Il s’agit donc de faire le maximum d’arbitrage entre coût, pertinence de chaque fonctionnalité et complexité.

#2 – design : un design personnalisé, des animations complexes et d’autres éléments graphiques peuvent aussi augmenter le coût du projet. Au contraire, l’usage de template ou de bibliothèque de composants peuvent permettre des économies de temps et de coût. Au-delà, une recherche en termes UX (user experience) peut aussi alourdir la facture ! 

#3 – la technologie et/ou la plateforme : le choix de la technologie (par exemple, les langages de programmation, les frameworks, les CMS) et la plateforme sur laquelle le site sera construit influencent évidemment le coût. Par exemple, la plupart des développeurs web savent que développer en Java est souvent plus cher que développer en PHP… (je ne vais pas me faire des amis). 

#4 – l’hébergement et l’infrastructure : les coûts d’hébergement, de serveurs et d’infrastructure peuvent varier en fonction des besoins de votre projet.

#5 – La prestation attendue : le coût du développement peut varier d’un prestataire à l’autre. Un freelance vous coûtera moins cher qu’une société (comme la nôtre) mais vous n’aurez pas le même service. Un freelance ne sera pas forcément disponible s’il a un autre contrat par exemple. Le choix entre une approche en régie (obligation de moyen) et une approche au forfait (obligation de résultat) influence aussi les coûts car tout prestataire prévoit une part de risque lorsqu’il s’engage sur un coût forfaitaire.

#6 – La maintenance et le support : n’oubliez pas de prendre en compte les coûts de maintenance continue, de mises à jour de sécurité et de support après le lancement du site.

Le prix d’un projet web peut donc varier considérablement. Avant de commencer votre projet, nous vous recommandons vivement de demander des propositions à plusieurs prestataires et de comparer leurs offres en fonction de vos besoins. 

Ordres de grandeur du prix d’un projet web développé par TheCodingMachine 

Si on devait être parfaitement sincère, parfois, il y a un décalage entre les attentes des clients et le budget qui est en face, refaire Facebook pour 20.000 euros n’est pas raisonnable ! Même si j’admet volontiers que de très bons outils accessibles quasi gratuitement peuvent donner un résultat très correct. C’est le cas de Webflow pour un petit site vitrine par exemple. 

Maintenant, on peut vous donner des ordres de grandeurs de ce que nous faisons régulièrement, comme ça, vous n’aurez pas de surprise : 

#1 – un site institutionnel avec des fonctionnalités spécifiques va vous coûter chez TheCodingMachine au minimum 20.000 / 30.000 euros pour avoir un design sur-mesure et des contenus bien adaptés au SEO. Nous nous positionnons sur ce type de prestations lorsqu’il a des enjeux techniques comme l’intégration avec un extranet par exemple.

#2 – une plateforme web ou une application métier de type MVP va démarrer dans les 50.000 / 60.000 euros. Cela représente une équipe de deux ou trois qui va travailler quelques mois à travers, des ateliers de conception, du design, de la mise en place de l’architecture, le développement, la recette et la garantie. Pour en savoir plus sur les plateformes, nous vous recommandons cet article.

Pour un projet plus important, on va se situer entre 80.000 / 150.000 et il n’y pas vraiment de limite. Par exemple, un de nos projets mobilise plus de 20 personnes à temps plein depuis 3 ans… 

Quelques conseils pour optimiser le prix d’un projet web ! 

#1 – Trouvez la substantifique moëlle de votre business :  Sachez quelle est votre proposition de valeur ! Si vous n’aviez qu’une seule fonctionnalité à proposer dans votre plateforme, ce serait laquelle ? Est-ce que vous vous sentez capable de la vendre sans rien autour ? 

#2 – Ne cherchez pas forcément le moins disant parmi vos prestataires. Un mauvais projet, c’est comme un mauvais recrutement, cela vous coûte le salaire mais surtout le temps que vous y passez !

#3 – Investissez-vous. Plus vous aurez préparé votre projet web, plus vous réduisez le risque et l’incertitude pour votre prestataire chargé du développement… donc plus vous réduisez le prix. Il s’agit d’étudier la concurrence, de réfléchir à la manière dont vous souhaitez que votre plateforme web fonctionne ou de savoir de quels types de design vous souhaitez vous inspirer.

Pour conclure

Difficile d’estimer le prix d’un projet web sans en discuter avec vous. Il y a beaucoup de facteurs à prendre en compte et même si je suis toujours assez surpris de voir des entrepreneurs qui souhaitent investir dans leur business moins que le prix d’une voiture (alors que l’on sait très bien qu’une voiture ne peut rien rapporter…), il est possible d’être malin.

Il ne faut pas non plus rester scotché sur un prix, il faut avancer ! Commencer par une phase de conception avec des ateliers ne vous coûtera pas forcément très cher mais vous permettra de vous mettre en route. En plus, en chemin, vous trouverez peut-être des économies.

Maintenant, si vous souhaitez avoir une estimation personnalisée, n’hésitez pas à nous contacter !

Prix d’un projet web - Nicolas Peguin

Dette technique, comment l’évaluer et s’en débarrasser ? 

Comme une mauvaise herbe, la dette technique peut s’immiscer dans le jardin de votre projet… Elle se cache et s’épanouit dès les premiers rayons de soleil. Elle est là parce que les décisions techniques ont été trop rapides ou que le projet a évolué trop vite. Des décisions qui étaient raisonnables et censées en début de projet peuvent ne plus fonctionner suite à l’évolution des besoins au fil du temps.

La dette technique est à l’origine de bugs ou de régressions. Elle augmente la complexité du code. Non maîtrisée, elle finit par ralentir le développement, accroître les coûts et peut rendre un système difficile à maintenir.

Pourtant, rien de grave ! La dette technique est souvent normale. Comme pour un jardin, un peu de travail et on enlève ces mauvaises herbes. 

Illustration de dette technique : homme coupant des lianes autour d'un écran "Technical Debt".

Evaluer la dette technique 

L’évaluation de la dette technique d’un projet web comprend quelques étape simples pour comprendre la qualité du code, la maintenabilité du projet et les risques potentiels. Petit plan d’actions pour maintenir votre projet en forme : 

#1 – Examiner le code source : passez en revue le code source du projet pour identifier des signes de dette technique, tels que des violations de bonnes pratiques de programmation, des sections de code mal structurées, des duplications inutiles, des commentaires obsolètes, etc.

#2 – Analyser les performances : utilisez des outils de profilage et de mesure des performances pour identifier les zones du code qui sont lentes ou gourmandes en ressources. 

#3 – Analyser la sécurité : effectuez une analyse de sécurité pour identifier les vulnérabilités potentielles, les failles de sécurité et les risques liés à la sécurité du projet. 

#4 – Évaluer la complexité : mesurez la complexité du code en utilisant des métriques telles que la complexité cyclomatique, le couplage, la cohésion, etc. 

#5 – Vérifier l’automatisation : assurez-vous que le projet dispose d’une suite de tests automatisés adéquate. L’absence de tests automatisés peut entraîner des erreurs non détectées et des problèmes de qualité.

#6 – Identifier les dépendances obsolètes : recherchez les bibliothèques, les frameworks ou les composants logiciels obsolètes qui ne sont plus pris en charge. Ces dépendances peuvent poser des problèmes de sécurité et de compatibilité.

#7 – Utiliser des outils d’analyse statique : des outils d’analyse statique du code, comme par exemple PHP Stan, peuvent aider à identifier automatiquement des problèmes de dette technique en parcourant le code à la recherche de violations de normes et de bonnes pratiques.

Vous pouvez, en outre, faire l’analyse de l’architecture globale du projet pour voir si elle est bien conçue, vérifier la documentation et aussi collecter les retours d’expérience des développeurs. Les discussions avec les membres de l’équipe sont souvent très instructives. 

Parfois, il est préférable de solliciter un acteur extérieur, tel que TheCodingMachine, pour un audit technique afin de bénéficier d’une analyse neutre et d’éviter les conflits d’intérêts au sein de vos équipes.

Éradiquer la dette technique 

Pour se débarrasser de la dette technique, voici quelques étapes importantes à suivre :

#1 – Priorisation : une fois que vous avez une liste d’éléments de dette technique, hiérarchisez-les en fonction de leur impact sur le projet. Concentrez-vous sur les éléments qui ont le plus grand impact négatif.

#2 – Planification : élaborez un plan pour résoudre la dette technique. Cela peut inclure la réécriture de code, la mise à jour de la documentation, la résolution de problèmes de sécurité, etc. Assurez-vous de fixer des échéances réalistes ! 

#3 – Communication : informez les parties prenantes du projet, y compris les membres de l’équipe et les clients, des efforts déployés pour résoudre la dette technique. Assurez-vous bien qu’ils comprennent l’importance de cette démarche.

#4 – Tests et validation : après avoir résolu la dette technique, n’oubliez pas d’effectuer des tests approfondis pour vous assurer que les problèmes ont été résolus et que le code est de qualité.

Se débarrasser de la dette technique demande du temps, des ressources et un engagement continu, mais cela améliore la qualité, la stabilité et les coûts de vos projets à long terme. Parfois, les chefs de projets ou les développeurs culpabilisent de cette dette technique qui s’est installée. Mais ce n’est pas nécessairement de leur faute. Les plannings tendus, l’évolution du projet au fil du temps sont bien souvent les premiers coupables. 

Pour aller plus loin et éviter la réapparition de la dette technique, mettez en place des pratiques de développement de logiciels plus rigoureuses, encouragez la documentation, assurez-vous que l’équipe suit les meilleures pratiques et allouez du temps pour la maintenance continue. Assurez-vous que l’équipe est consciente de l’importance de maintenir un code propre. Bon jardinage à tous !

Dette technique : Illustration humoristique avec code envahi par la végétation. Kevin gère la dette technique.

https://www.linkedin.com/in/kevin-nguyen-2146514/, si vous souhaitez en parler avec moi !

Sécurité web : 5 failles informatiques à éviter

Fonctionnalités, design, performances, vous avez pensé à tout pour votre projet web…sauf peut-être à la sécurité !

Pourtant, qu’il s’agisse d’un blog, d’un site de vente en ligne, d’un intranet, d’un extranet ou d’une application, les failles de sécurité web peuvent coûter cher !

Pour éviter que ces vulnérabilités ne mettent à mal vos projets, découvrez les 5 principales failles de sécurité web et comment les empêcher.


Pourquoi s’intéresser à la sécurité web ?

La sécurité web vise à protéger tous les aspects d’un site : ses fonctionnalités, ses données, ses fichiers, son code source, et ainsi à éviter les risques d’une cyberattaque.

Or, les particuliers, les administrations, les entreprises, les associations, tous peuvent être victimes de hackers avec des conséquences parfois catastrophiques :

  • Vol et divulgation de données (mots de passe, adresses électroniques, numéro de sécurité sociale et de cartes bancaires),
  • Indisponibilité des services,
  • Perte de confiance des utilisateurs,
  • Atteinte à leur réputation,
  • Déclin de leur activité, voire faillite.

La sécurité web est donc un enjeu majeur pour toutes les entreprises.


Quelles sont les 5 failles de sécurité web les plus fréquentes ?

Dans son rapport de 2021, OWASP (Open Web Application Security Project), communauté en ligne qui teste des centaines d’entreprises et de sites pour connaître les failles de sécurité web les plus répandues, a répertorié les 10 principaux risques de sécurité des applications web.

Tableau comparatif OWASP 2017 et 2021 des vulnérabilités de sécurité web. Priorisation des risques.

1- Broken Access Control

Le contrôle d’accès permet d’encadrer les autorisations d’accès aux ressources pour les différents types d’utilisateurs. En cas de vulnérabilité informatique, un utilisateur non autorisé peut accéder à des informations ou faire certaines actions.

Comment empêcher cette faille de sécurité web ?

  • À l’exception des ressources publiques, refuser l’accès à une ressource par défaut.
  • Désactiver la liste des répertoires du serveur web et vérifier que les métadonnées des fichiers (par exemple, .git) et les fichiers de sauvegarde ne sont pas présents dans la racine de votre application ou site web.
  • Enregistrer les échecs de contrôle d’accès répétés, et alerter les administrateurs le cas échéant.

2- Cryptographic Failures

Il s’agit de défaillances liées à la cryptographie ou à son absence : des données sensibles ne sont pas correctement protégées et peuvent donc être volées et divulguées.

Pour chaque projet web, il faut déterminer les besoins de protection des données, notamment pour les données sensibles et personnelles qui nécessitent une protection supplémentaire et peuvent relever de réglementation particulière (RGPD par exemple).

Comment l’éviter ?

  • Classer les données traitées par l’application et identifier les données sensibles en fonction des réglementations en vigueur ou des besoins de l’entreprise.
  • Ne pas stocker de données sensibles inutilement.
  • Chiffrer toutes les données en transit avec des protocoles sécurisés tels que TLS. Appliquer le chiffrement à l’aide de directives telles que HTTP Strict Transport Security (HSTS).
  • Désactiver la mise en cache pour les réponses contenant des données sensibles.

3- Injection

Les données fournies par l’utilisateur ne sont pas validées ou filtrées par l’application. Ces données hostiles sont utilisées directement, sans aucune vérification.

L’injection SQL est l’injection la plus courante, mais il peut également y avoir des injections de commandes LDAP.

Comment éviter ce risque ?

  • Utiliser ORM (Object-Relational Mapping) correctement.
  • Échapper les caractères spéciaux pour toute requête dynamique résiduelle.
  • Utiliser une validation positive d’entrée côté serveur.

4- Insecure Design

C’est un nouveau risque de sécurité web dans le rapport OWASP de 2021.

Il s’agit de défauts de conception et d’architecture : présence d’un processus non sécurisé, message d’erreur avec des informations sensibles, stockage non protégé d’informations d’identification, etc.

Comment l’empêcher ?

  • Faire valider votre choix d’architecture par un professionnel pour vous aider à évaluer et à concevoir des contrôles liés à la sécurité et à la confidentialité.
  • Utiliser une bibliothèque de modèles de conception sécurisés.
  • Intégrer des contrôles de sécurité dans les user stories.
  • Mettre en place des contrôles de plausibilité à chaque niveau de votre application (du frontend au backend).

5- Security Misconfiguration 

Les données sont mal sécurisées à différentes parties de l’application, car il y a une mauvaise configuration.

Votre application peut par exemple être vulnérable du fait de :

  • L’absence de renforcement approprié de la sécurité sur une partie de la pile d’applications ou des services externes.
  • La présence de fonctionnalités inutiles.
  • Comptes par défaut et de mots de passe activés et inchangés.

Comment éviter cette faille informatique ?

  • Un processus de durcissement automatisé permet de déployer rapidement et facilement un autre environnement correctement verrouillé.
  • Supprimer ou ne pas installer les fonctionnalités, frameworks ou packages inutilisés ou inutiles.
  • Mettre en œuvre une architecture d’application segmentée.
  • Mettre en place un processus automatisé pour vérifier l’efficacité des configurations et des paramètres dans tous les environnements.

À côté de 5 principales failles, d’autres risques pour la sécurité web existent. Pour savoir comment les empêcher, découvrez notre vidéo Web Security.

Informatique quantique : Une révolution entre défis et opportunités

Avec sa puissance de calcul, l’informatique quantique promet de révolutionner de nombreux domaines. Médecine, finance, logistique, cybersécurité, le champ d’application de l’informatique quantique est vaste, mais de nombreux défis techniques restent à relever pour développer un ordinateur quantique opérationnel.


Quelles applications pour l’informatique quantique ?

De nombreux domaines pourraient profiter des capacités de calcul des ordinateurs quantiques :

  • La logistique : l’informatique quantique pourrait être utilisée pour résoudre des problèmes complexes d’optimisation et de planification des chaînes d’approvisionnement.
  • La recherche médicale et scientifique : les technologies quantiques pourraient améliorer les simulations des systèmes biologiques, ce qui permettrait de mieux comprendre les mécanismes de certaines maladies et de trouver des traitements plus efficaces. Les algorithmes quantiques pourraient également être utilisés pour analyser des données complexes comme les images médicales et accélérer ainsi la recherche de nouveaux médicaments.
  • La finance : les ordinateurs quantiques pourraient aider à optimiser les placements, à prédire les risques financiers et à analyser les données des marchés en temps réel.
  • La cybersécurité : grâce à ses capacités de chiffrement et de déchiffrement des données, l’informatique quantique peut aider à protéger les données des entreprises et des administrations, à renforcer la sécurité web et à lutter contre les cyberattaques.

Toutefois, le décryptage des données par un ordinateur quantique peut également être un risque pour la sécurité. En effet, l’algorithme Shor est un algorithme quantique qui permet la factorisation des très grands nombres en un temps record. Or, les méthodes de cryptage actuelles, et notamment le procédé de chiffrement RSA actuellement utilisé dans de nombreux protocoles sur Internet, reposent sur la difficulté, pour les technologies actuelles, de factoriser de grands nombres.

Si les technologies quantiques peuvent être un risque pour la cybersécurité, elles pourront en même temps être une solution pour l’améliorer, en permettant de crypter les données et les transactions avec des systèmes de cryptographie plus robustes et plus sécurisés que ceux actuellement en vigueur.

  • L’intelligence artificielle : l’informatique quantique pourrait être utilisée pour entraîner des modèles d’apprentissage automatique plus rapidement, avec plus de données et pour résoudre des problèmes plus complexes, comme la reconnaissance d’images.

Les obstacles à surmonter pour développer un ordinateur quantique fonctionnel

Pour qu’un ordinateur quantique puisse être effectivement développé et utilisé, plusieurs défis doivent encore être relevés, parmi lesquels :

  • La stabilité des qubits : les qubits sont très sensibles à leur environnement et peuvent être perturbés par celui-ci (bruit, chaleur, champs magnétiques, interactions avec d’autres qubits, etc.). Or, les qubits doivent être stables pour stocker et manipuler des informations pendant une période de temps suffisamment longue pour effectuer des opérations de calcul. Il faut donc réussir à maintenir un qubit dans son état quantique en augmentant le temps de cohérence (durée pendant laquelle l’objet est dans son état quantique) et en évitant la décohérence quantique.
  • La réduction des erreurs de calcul : les ordinateurs quantiques peuvent produire des erreurs de calcul qui nuisent à la précision de leurs résultats. Cela est dû en partie à l’instabilité des qubits.
  • La gestion de la température : les ordinateurs quantiques génèrent beaucoup de chaleur en raison de la manipulation de l’information quantique. En parallèle, les qubits doivent être maintenus à des températures extrêmement basses pour rester stables et fonctionner, ce qui nécessite des systèmes de refroidissement spécifiques et coûteux.
  • La programmation des ordinateurs quantiques : elle est très différente de la programmation d’un ordinateur classique. Elle nécessite des connaissances en physique quantique.
  • Le coût de la recherche quantique : pour se développer, la recherche dans le domaine de l’informatique quantique a besoin d’équipements de pointe qui sont très coûteux et donc de moyens financiers importants.

Pour en savoir plus sur l’informatique quantique, découvrez notre vidéo sur les différents principes de la physique quantique et les propriétés de l’ordinateur quantique.