{"id":38,"date":"2019-08-22T13:35:18","date_gmt":"2019-08-22T13:35:18","guid":{"rendered":"https:\/\/newblog.siteground.com\/fr\/?p=38"},"modified":"2025-10-03T08:14:31","modified_gmt":"2025-10-03T08:14:31","slug":"derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools","status":"publish","type":"post","link":"https:\/\/fr.siteground.com\/blog\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/","title":{"rendered":"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site"},"content":{"rendered":"<div class=\"entry-content wp-block-post-content is-layout-flow wp-block-post-content-is-layout-flow\">\n\n\n<p>Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;<a href=\"https:\/\/newblog.siteground.com\/fr\/nouvel-espace-client-et-site-tools\/\" data-type=\"URL\" data-id=\"https:\/\/newblog.siteground.com\/fr\/nouvel-espace-client-et-site-tools\/\">Notre COO en a parl\u00e9 d&#8217;un point de vue commercial<\/a>&nbsp;et de l&#8217;importance de ce projet pour notre croissance future.&nbsp;Je voudrais vous donner la perspective technique et pourquoi nous consid\u00e9rons que ces nouvelles interfaces sont \u00e9galement une \u00e9tape technique pour SiteGround.&nbsp;<\/p>\n\n\n\n<p>SiteGround a toujours \u00e9t\u00e9 avant tout une entreprise de services.\u00a0Cependant, depuis de nombreuses ann\u00e9es, la croissance de notre activit\u00e9 est \u00e9troitement corr\u00e9l\u00e9e \u00e0 notre \u00e9volution technique.\u00a0Plus nous d\u00e9veloppons de logiciels en interne, plus la qualit\u00e9 de notre service augmente et plus notre r\u00e9putation grandit.\u00a0Non seulement cela, mais nous avons d\u00e9velopp\u00e9 la confiance en soi d&#8217;une entreprise de haute technologie qui produit des solutions logicielles puissantes et intelligentes et qui est toujours parmi les premi\u00e8res \u00e0 mettre en \u0153uvre les technologies les plus innovantes.\u00a0<\/p>\n\n\n\n<p>Ainsi, lorsque nous avons r\u00e9alis\u00e9 que bon nombre de nos id\u00e9es commerciales \u00e9taient ralenties ou rendues impossibles par les limites de notre plate-forme sous-jacente actuellement utilis\u00e9e, nous avons eu le courage de voir plus grand que ce qui est disponible sur le march\u00e9 et avons os\u00e9 tout recr\u00e9er \u00e0 partir de z\u00e9ro<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Le_defi\"><\/span>Le d\u00e9fi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>D&#8217;un point de vue commercial, nous voulions g\u00e9rer une plate-forme (frontend et backend) qui fonctionnerait sur n&#8217;importe quel appareil, aurait un look moderne, serait l\u00e9g\u00e8re, rapide, s\u00e9curis\u00e9e et facilement \u00e9volutive.&nbsp;En traduisant cela en termes techniques, nous avons d\u00e9fini les objectifs suivants&nbsp;:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Vitesse et UX avanc\u00e9e<\/h3>\n\n\n\n<p>Nous avons d\u00e9cid\u00e9 d&#8217;utiliser des applications d&#8217;une seule page car c&#8217;est LA technologie incontournable pour une exp\u00e9rience Web plus rapide.&nbsp;&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u00c9volutivit\u00e9 et s\u00e9curit\u00e9<\/h3>\n\n\n\n<p>Nous avons d\u00e9cid\u00e9 d&#8217;adopter la philosophie des micro-services et de tout baser sur l&#8217;API afin que le syst\u00e8me puisse \u00e9voluer plus facilement et en cas d&#8217;incidents, avoir une port\u00e9e de dommages plus petite.<\/p>\n\n\n\n<p>Cependant, lorsque vous avez de nombreux services, l&#8217;authentification et l&#8217;autorisation sont un gros probl\u00e8me.\u00a0Nous avions donc besoin d&#8217;une solution s\u00e9curis\u00e9e, rapide et simple pour le probl\u00e8me de partage de ressources cross-origin, o\u00f9 nous avons choisi d&#8217;utiliser des jetons web JSON.<\/p>\n\n\n\n<p>Op\u00e9rer \u00e0 grande \u00e9chelle lorsque vous avez des millions de sites h\u00e9berg\u00e9s sur des centaines de milliers de conteneurs n\u00e9cessite \u00e9galement une orchestration, une d\u00e9couverte de services et une couche de messagerie fiable o\u00f9 nous introduisons Consul et NSQ.<\/p>\n\n\n\n<p>Enfin, une bonne observabilit\u00e9, surveillance et alerte sont cruciales compte tenu de la complexit\u00e9 du syst\u00e8me.&nbsp;Nous avons donc mis Prometheus et Grafana en action.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Les_solutions\"><\/span><strong>Les solutions<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.&nbsp;Applications monopage avec React et Redux<\/h3>\n\n\n\n<p>Il y a trois ans, lorsque nous avons commenc\u00e9 \u00e0 travailler sur le projet, nous savions que les applications d&#8217;une seule page devenaient de plus en plus populaires car elles permettaient une meilleure exp\u00e9rience utilisateur, des temps de chargement de page plus rapides, l&#8217;unification des principes de conception, la conception modulaire, etc.&nbsp;L&#8217;\u00e9cosyst\u00e8me SPA \u00e9voluait \u00e9galement rapidement.&nbsp;Il existait de nombreux frameworks JavaScript tels que AngularJS, ReactJS et Vue.js.&nbsp;Il semblait naturel et \u00e9vident que lorsqu&#8217;il s&#8217;agissait de quelque chose de l\u00e9ger, rapide et bas\u00e9 sur une API, l&#8217;application d&#8217;une seule page \u00e9tait la r\u00e9ponse.&nbsp;Apr\u00e8s quelques tests avec diff\u00e9rents frameworks, nous avons d\u00e9cid\u00e9 d&#8217;utiliser ReactJS + Redux pour notre nouvel espace client et nos outils de site, car il a montr\u00e9 les meilleurs r\u00e9sultats de performance.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Chargement rapide des pages<\/h3>\n\n\n\n<p>Nous avons deux applications principales d&#8217;une seule page.&nbsp;L&#8217;une est l&#8217;application Espace client et l&#8217;autre est notre application Outils du site.&nbsp;Ils sont tous deux utilis\u00e9s toutes les heures par des milliers de personnes et leur nombre ne cesse d&#8217;augmenter.&nbsp;D\u00e9placer une partie de la logique d&#8217;application vers les navigateurs des utilisateurs, o\u00f9 JS est ex\u00e9cut\u00e9 localement, a rendu les choses plus rapides.&nbsp;Cela s&#8217;explique en partie par le fait que nous avons moins de manipulations de donn\u00e9es effectu\u00e9es dans le backend.&nbsp;L&#8217;autre partie vient du fait que nos applications vivent sur une solution de mise en cache d&#8217;objets avec CDN devant.&nbsp;Cela permet aux utilisateurs du monde entier de charger rapidement l&#8217;application et de commencer \u00e0 l&#8217;utiliser.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Guide de style unifi\u00e9&nbsp;<\/h3>\n\n\n\n<p>Les applications d&#8217;une seule page vous permettent de travailler avec des composants pr\u00eats \u00e0 l&#8217;emploi qui sont r\u00e9utilisables et de faire en sorte que vos interfaces respectent certaines normes.&nbsp;Pour la n\u00f4tre, nous avons \u00e9crit un guide de style, qui rend nos interfaces homog\u00e8nes et nous permet d&#8217;\u00e9crire du nouveau code plus facilement et plus rapidement.&nbsp;Le compromis est que seul le d\u00e9p\u00f4t du guide de style avec tous les exemples repr\u00e9sente environ 550 000 lignes de code&nbsp;!<\/p>\n\n\n\n<p>\u00c9tant donn\u00e9 que  notre d\u00e9veloppement est assez important et en croissance et que le code avec lequel nous travaillons est assez volumineux, nous devions nous assurer que nos normes seraient respect\u00e9es et non r\u00e9gress\u00e9es par les changements.\u00a0C&#8217;est pourquoi nous avons couvert le code avec des tests visuels et e2e (Cypress).\u00a0Si un changement de code modifie visuellement une certaine page de mani\u00e8re significative, nous avons un drapeau rouge et nous pouvons m\u00eame arr\u00eater automatiquement le d\u00e9ploiement de code et les builds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_API_RESTful_et_microservices\"><\/span>2. API RESTful et microservices<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Nous avons maintenant plus de 100 appels API qui peuvent \u00eatre utilis\u00e9s pour g\u00e9rer un seul site h\u00e9berg\u00e9 sur nos serveurs.&nbsp;Des choses comme l&#8217;installation de WordPress, l&#8217;\u00e9mission d&#8217;un certificat SSL priv\u00e9, la cr\u00e9ation de comptes de messagerie, la cr\u00e9ation&nbsp;de nouvelles bases de donn\u00e9es MySQL,&nbsp;l&#8217;ajout de cl\u00e9s SSH et m\u00eame la migration de sites entre serveurs se font toutes via des appels API.&nbsp;Ces API nous offrent les avantages suivants&nbsp;:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Favorise l&#8217;utilisation de diff\u00e9rentes langues<\/h3>\n\n\n\n<p>Nous avons des ing\u00e9nieurs logiciels qui \u00e9crivent dans les langages\/frameworks suivants pour notre plate-forme&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>PHP (Symfony, ZendFramework)<\/li><li>Perle (danseuse)<\/li><li>Aller<\/li><li>Python<\/li><li>JavaScript (ReactJS, AngularJS), TypeScript&nbsp;<\/li><\/ul>\n\n\n\n<p>Afin de nous assurer que toutes les pi\u00e8ces mobiles puissent communiquer nous avions besoin d&#8217;API RESTful pour relier la communication.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La conception de l&#8217;API RESTful est bien connue<\/h3>\n\n\n\n<p>Le c\u00f4t\u00e9 positif des API RESTful est que pratiquement tous les d\u00e9veloppeurs de nos jours les comprennent et connaissent le concept.\u00a0Cela signifie que lorsque nous devons ajouter de nouvelles fonctionnalit\u00e9s, nous n&#8217;avons pas besoin de former les d\u00e9veloppeurs ou de leur faire apprendre les entr\u00e9es et les sorties de l&#8217;ensemble du syst\u00e8me afin qu&#8217;ils puissent livrer.\u00a0Ils peuvent simplement se concentrer sur le nouveau morceau de code n\u00e9cessaire et l&#8217;int\u00e9grer dans le syst\u00e8me.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Nos partenaires peuvent utiliser les API<\/h3>\n\n\n\n<p>Le fait que tout soit bas\u00e9 sur une API facilite l&#8217;acc\u00e8s aux partenaires et leur permet de cr\u00e9er des sites, d&#8217;installer un CMS ou d&#8217;effectuer d&#8217;autres fonctions sur notre plateforme.&nbsp;Cela nous rend flexibles et constitue une bonne base pour la croissance future de notre entreprise.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Personnalisation de l&#8217;acc\u00e8s utilisateur<\/h3>\n\n\n\n<p>Les API RESTful appliquent le principe CRUD selon lequel chaque objet manipul\u00e9 par l&#8217;API doit prendre en charge les 4 fonctions suivantes : cr\u00e9er, lire, mettre \u00e0 jour et supprimer.&nbsp;Coupl\u00e9 \u00e0 la repr\u00e9sentation unifi\u00e9e REST des ressources, cela permet une s\u00e9paration facile des actions et un acc\u00e8s personnalis\u00e9 et un contr\u00f4le utilisateur.<\/p>\n\n\n\n<p>Avec les jetons Web JSON, nous avons utilis\u00e9 les API pour fournir des niveaux d&#8217;acc\u00e8s personnalis\u00e9s dans nos nouvelles interfaces.\u00a0Il est d\u00e9sormais possible d&#8217;autoriser un op\u00e9rateur \u00e0 cr\u00e9er des comptes de messagerie pour un nom de domaine, mais de ne pas avoir acc\u00e8s aux comptes de messagerie existants ou \u00e0 tout autre outil.\u00a0Pour commencer, nous n&#8217;avons introduit que 3 r\u00f4les d&#8217;utilisateur : propri\u00e9taire du site, collaborateur et client en marque blanche, mais nous avons pos\u00e9 les bases pour ajouter facilement de nombreuses options de personnalisation \u00e0 l&#8217;avenir.\u00a0Le contr\u00f4le d&#8217;acc\u00e8s bas\u00e9 sur les r\u00f4les nous permet de fournir un acc\u00e8s granulaire \u00e0 des services et fonctionnalit\u00e9s sp\u00e9cifiques.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Identifiez les probl\u00e8mes plus facilement et mesurez plus efficacement<\/h3>\n\n\n\n<p>Plus la construction est granulaire, plus il est facile d&#8217;isoler une pi\u00e8ce non fonctionnelle et de la remplacer ou de la r\u00e9parer.\u00a0C&#8217;est l&#8217;un des principaux avantages que nous pouvons tirer de la philosophie des micro-services.\u00a0Nous pouvons plus facilement suivre et r\u00e9soudre les probl\u00e8mes avec une fonction sp\u00e9cifique fournie par un service sp\u00e9cifique.\u00a0Nous pouvons \u00e9galement mieux suivre les performances et l&#8217;utilisation des diff\u00e9rents services afin de pouvoir faire \u00e9voluer les ressources de la plate-forme et pr\u00e9venir les probl\u00e8mes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Jetons_Web_JSON\"><\/span>3. Jetons Web JSON<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Au moment o\u00f9 nous avons commenc\u00e9 \u00e0 travailler sur des applications d&#8217;une seule page, nous savions que nous devions faire \u00e9voluer notre configuration d&#8217;authentification et d&#8217;autorisation d&#8217;une mani\u00e8re ou d&#8217;une autre.\u00a0\u00c9tant donn\u00e9 le nombre d&#8217;API qui communiquent entre elles et d&#8217;utilisateurs qui interagissent \u00e9galement avec ces API (qui \u00e9taient r\u00e9parties sur diff\u00e9rents domaines), l&#8217;autorisation effectu\u00e9e \u00e0 l&#8217;ancienne &#8211; via des cookies &#8211; n&#8217;\u00e9tait pas optimale et n&#8217;\u00e9tait pas \u00e9volutive.\u00a0Les deux principaux probl\u00e8mes rencontr\u00e9s \u00e9taient les suivants :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>La gestion des cookies de partage de ressources cross-origin et des en-t\u00eates HTTP n&#8217;est pas simple, et nous voulions l&#8217;\u00e9viter.&nbsp;La combinaison des jetons Web JSON avec nos propres API nous permet de r\u00e9soudre ce probl\u00e8me.<\/li><li>La mise \u00e0 l&#8217;\u00e9chelle d&#8217;un syst\u00e8me backend qui v\u00e9rifie chaque demande d&#8217;API a commenc\u00e9 \u00e0 para\u00eetre terrible du point de vue des performances des sessions.<\/li><\/ul>\n\n\n\n<p>Apr\u00e8s quelques recherches, nous avons d\u00e9cid\u00e9 d&#8217;utiliser JSON Web Tokens pour cette partie de l&#8217;infrastructure.&nbsp;Nous avons configur\u00e9 un syst\u00e8me d&#8217;authentification et d&#8217;autorisation personnalis\u00e9 de notre c\u00f4t\u00e9.&nbsp;Cela nous permet de b\u00e9n\u00e9ficier de choses telles que :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>M\u00e9canisme d&#8217;autorisation uniforme pour diff\u00e9rentes API<\/li><li>Charge de serveur r\u00e9duite et moins de hits DB<\/li><li>Capacit\u00e9 \u00e0 utiliser cette solution dans diff\u00e9rents domaines&nbsp;<\/li><li>Plus facile d&#8217;atteindre l&#8217;\u00e9volutivit\u00e9 horizontale<\/li><li>Un niveau de s\u00e9curit\u00e9 sup\u00e9rieur pour nos utilisateurs<\/li><li>Authentification unique pr\u00eate \u00e0 l&#8217;emploi<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Orchestration_et_messagerie\"><\/span>4. Orchestration et messagerie<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Plus nous grandissons, plus nous exploitons de serveurs (en tant qu&#8217;unit\u00e9 mat\u00e9rielle) et de conteneurs (en tant qu&#8217;unit\u00e9 virtuelle).&nbsp;Le conteneur Linux est l&#8217;unit\u00e9 principale de notre infrastructure, mais la fa\u00e7on dont nous g\u00e9rons ces conteneurs \u00e9volue avec le temps.&nbsp;Commander de nouveaux serveurs, d\u00e9ployer un conteneur avec la pile logicielle n\u00e9cessaire, ajouter ce nouveau conteneur \u00e0 toutes les bases de donn\u00e9es qui alimentent diff\u00e9rents services et API, tout cela et bien plus n\u00e9cessite une orchestration.&nbsp;Pour cette partie, nous avons \u00e9crit beaucoup de code, sp\u00e9cifique \u00e0 notre plateforme et nos processus.&nbsp;Pourtant, nous d\u00e9pendons fortement de projets logiciels bien \u00e9tablis pour atteindre nos objectifs.&nbsp;Nous utilisons HashiCorp Consul pour la d\u00e9couverte de services et l&#8217;automatisation des syst\u00e8mes.&nbsp;Notre plate-forme de messagerie de choix est NSQ.&nbsp;Nous utilisons Ansible pour automatiser de nombreuses t\u00e2ches de provisionnement de logiciels et de gestion de la configuration.<\/p>\n\n\n\n<p>Deux bons exemples sont nos syst\u00e8mes retravaill\u00e9s Let&#8217;s Encrypt et WordPress Automatic Updates.&nbsp;Auparavant, ils s&#8217;ex\u00e9cutaient localement sur chaque serveur d&#8217;h\u00e9bergement et sont maintenant bas\u00e9s sur une approche distribu\u00e9e.&nbsp;Les serveurs sont automatiquement enregistr\u00e9s dans le syst\u00e8me.&nbsp;Les services utilisent la d\u00e9couverte automatique fournie par Consul.&nbsp;Ensuite, les API mentionn\u00e9es ci-dessus sont utilis\u00e9es et l&#8217;\u00e9mission et le renouvellement SSL se produisent pour chaque nouveau nom de domaine que nous enregistrons dans le syst\u00e8me.&nbsp;Il en va de m\u00eame pour chaque application qui entre dans les syst\u00e8mes de mises \u00e0 jour automatiques de WordPress.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_PrometheusGrafana_pour_lobservabilite\"><\/span>5. Prometheus\/Grafana pour l&#8217;observabilit\u00e9<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>La fa\u00e7on dont nous fournissons de nouveaux services a \u00e9galement beaucoup chang\u00e9.&nbsp;Dans le monde natif du cloud, nous ne nous soucions plus de la d\u00e9faillance des h\u00f4tes individuels.&nbsp;Aucun ing\u00e9nieur du CNO n&#8217;est appel\u00e9 lorsque cela se produit.&nbsp;Il n&#8217;y a pas d&#8217;administrateurs syst\u00e8me artisanaux qui traitent les machines et les services avec une attention affectueuse.&nbsp;Maintenant, nous surveillons l&#8217;ensemble de l&#8217;infrastructure avec les objectifs suivants \u00e0 l&#8217;esprit&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Nous devons savoir quand les choses tournent mal<\/li><li>Nous pouvons d\u00e9boguer et avoir un aper\u00e7u du contexte sp\u00e9cifique<\/li><li>Nous devons \u00eatre capables de voir les changements dans le temps et de faire des pr\u00e9dictions<\/li><li>Les donn\u00e9es doivent \u00eatre facilement consomm\u00e9es par d&#8217;autres syst\u00e8mes et processus<\/li><\/ul>\n\n\n\n<p>Pour rendre ce qui pr\u00e9c\u00e8de plus pr\u00e9cis, nous red\u00e9finissons maintenant les sc\u00e9narios \u00ab d&#8217;\u00e9chec \u00bb et les alertes que nous recevons pour chacun.\u00a0Par exemple, nous pouvons recevoir des alertes n\u00e9cessitant une intervention humaine lorsqu&#8217;il y a un impact direct sur l&#8217;utilisateur, comme lorsqu&#8217;un service qui affecte directement les sites web des clients a \u00e9t\u00e9 affect\u00e9.\u00a0Mais, nous n&#8217;avons peut-\u00eatre pas besoin d&#8217;intervention humaine lorsqu&#8217;un n\u0153ud sp\u00e9cifique a \u00e9chou\u00e9 car les donn\u00e9es sont automatiquement redistribu\u00e9es sur d&#8217;autres n\u0153uds et il n&#8217;y a aucun impact sur l&#8217;utilisateur, donc aucune alerte n&#8217;est n\u00e9cessaire dans ce cas.\u00a0<\/p>\n\n\n\n<p>Lorsque nous travaillons sur ces alertes, nous cherchons \u00e0 passer de l&#8217;alerte aux sous-syst\u00e8mes probl\u00e9matiques.\u00a0Afin que nos ing\u00e9nieurs puissent faire une analyse rapide et proposer une r\u00e9solution rapide, nous devons disposer de suffisamment de donn\u00e9es.\u00a0C&#8217;est ce qu&#8217;on appelle le tra\u00e7age distribu\u00e9, et cela nous permet de suivre les demandes d&#8217;utilisateurs sp\u00e9cifiques depuis les navigateurs de nos clients, via plusieurs API et diff\u00e9rents services, jusqu&#8217;\u00e0 ce qu&#8217;elles atteignent les bases de donn\u00e9es et\/ou les moteurs de stockage.\u00a0Chaque enregistrement concernant une demande dans le syst\u00e8me de tra\u00e7age distribu\u00e9 nous donne des informations de profilage des performances et un moyen de corr\u00e9ler les probl\u00e8mes avec d&#8217;autres \u00e9v\u00e9nements.\u00a0Nous utilisons le tra\u00e7age distribu\u00e9 pour d\u00e9boguer plus rapidement et optimiser notre code.\u00a0Nous sommes en mesure d&#8217;atteindre une vitesse de fonctionnalit\u00e9 plus \u00e9lev\u00e9e \u00e0 cause de cela.\u00a0<\/p>\n\n\n\n<p>Pour atteindre tous les objectifs, nous avons choisi d&#8217;utiliser Prometheus et Grafana pour le profilage, la collecte de m\u00e9triques, l&#8217;analyse des journaux et le tra\u00e7age distribu\u00e9 des \u00e9v\u00e9nements.&nbsp;Nous sommes maintenant en mesure de corr\u00e9ler les informations provenant de plusieurs sources et de r\u00e9v\u00e9ler et de pr\u00e9voir les lacunes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Le logiciel que nous avons d\u00fb \u00e9crire pour relever le d\u00e9fi et fournir les solutions d\u00e9crites ci-dessus est \u00e9norme mais assez gratifiant.&nbsp;Pour conclure, je vous laisse quelques chiffres directement issus des nouveaux r\u00e9f\u00e9rentiels de logiciels et de notre JIRA&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>2 539 604 lignes de code<\/li><li>Couverture des tests de code \u00e0 99\u00a0%<\/li><li>9250 t\u00e2ches JIRA<\/li><li>199 560 mots dans les historiques JIRA<\/li><\/ul>\n\n\n\n<p>Nous sommes particuli\u00e8rement fiers de la couverture des tests de code.&nbsp;M\u00eame si 2,5 millions de lignes de code sont impressionnantes, nous savons que ce n&#8217;est pas une tr\u00e8s bonne mesure de succ\u00e8s.&nbsp;Le fait que tout notre code soit couvert par des tests est cependant une grande r\u00e9ussite.&nbsp;D\u00e8s le d\u00e9but, nous avons d\u00e9fini la couverture des tests de code comme l&#8217;un de nos principaux crit\u00e8res pour fournir des logiciels de qualit\u00e9.&nbsp;Et si notre nouvel espace client et nos nouveaux outils de site ne peuvent pas fournir de garanties de qualit\u00e9, nous ne pouvons pas fournir le service exceptionnel auquel nos clients sont habitu\u00e9s.&nbsp;Soyez assur\u00e9 que nous nous engageons \u00e0 fournir le m\u00eame service d&#8217;h\u00e9bergement de premier ordre, mais cette fois avec des outils de gestion de site et de collaboration encore meilleurs, bas\u00e9s sur les technologies Web les meilleures et les plus innovantes au monde.<\/p>\n<\/div>\n\n\n<p>Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;<a href=\"https:\/\/newblog.siteground.com\/fr\/nouvel-espace-client-et-site-tools\/\" data-type=\"URL\" data-id=\"https:\/\/newblog.siteground.com\/fr\/nouvel-espace-client-et-site-tools\/\">Notre COO en a parl\u00e9 d&#8217;un point de vue commercial<\/a>&nbsp;et de l&#8217;importance de ce projet pour notre croissance future.&nbsp;Je voudrais vous donner la perspective technique et pourquoi nous consid\u00e9rons que ces nouvelles interfaces sont \u00e9galement une \u00e9tape technique pour SiteGround.&nbsp;<\/p>\n\n\n\n<p>SiteGround a toujours \u00e9t\u00e9 avant tout une entreprise de services.\u00a0Cependant, depuis de nombreuses ann\u00e9es, la croissance de notre activit\u00e9 est \u00e9troitement corr\u00e9l\u00e9e \u00e0 notre \u00e9volution technique.\u00a0Plus nous d\u00e9veloppons de logiciels en interne, plus la qualit\u00e9 de notre service augmente et plus notre r\u00e9putation grandit.\u00a0Non seulement cela, mais nous avons d\u00e9velopp\u00e9 la confiance en soi d&#8217;une entreprise de haute technologie qui produit des solutions logicielles puissantes et intelligentes et qui est toujours parmi les premi\u00e8res \u00e0 mettre en \u0153uvre les technologies les plus innovantes.\u00a0<\/p>\n\n\n\n<p>Ainsi, lorsque nous avons r\u00e9alis\u00e9 que bon nombre de nos id\u00e9es commerciales \u00e9taient ralenties ou rendues impossibles par les limites de notre plate-forme sous-jacente actuellement utilis\u00e9e, nous avons eu le courage de voir plus grand que ce qui est disponible sur le march\u00e9 et avons os\u00e9 tout recr\u00e9er \u00e0 partir de z\u00e9ro<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Le_defi\"><\/span>Le d\u00e9fi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>D&#8217;un point de vue commercial, nous voulions g\u00e9rer une plate-forme (frontend et backend) qui fonctionnerait sur n&#8217;importe quel appareil, aurait un look moderne, serait l\u00e9g\u00e8re, rapide, s\u00e9curis\u00e9e et facilement \u00e9volutive.&nbsp;En traduisant cela en termes techniques, nous avons d\u00e9fini les objectifs suivants&nbsp;:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Vitesse et UX avanc\u00e9e<\/h3>\n\n\n\n<p>Nous avons d\u00e9cid\u00e9 d&#8217;utiliser des applications d&#8217;une seule page car c&#8217;est LA technologie incontournable pour une exp\u00e9rience Web plus rapide.&nbsp;&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u00c9volutivit\u00e9 et s\u00e9curit\u00e9<\/h3>\n\n\n\n<p>Nous avons d\u00e9cid\u00e9 d&#8217;adopter la philosophie des micro-services et de tout baser sur l&#8217;API afin que le syst\u00e8me puisse \u00e9voluer plus facilement et en cas d&#8217;incidents, avoir une port\u00e9e de dommages plus petite.<\/p>\n\n\n\n<p>Cependant, lorsque vous avez de nombreux services, l&#8217;authentification et l&#8217;autorisation sont un gros probl\u00e8me.\u00a0Nous avions donc besoin d&#8217;une solution s\u00e9curis\u00e9e, rapide et simple pour le probl\u00e8me de partage de ressources cross-origin, o\u00f9 nous avons choisi d&#8217;utiliser des jetons web JSON.<\/p>\n\n\n\n<p>Op\u00e9rer \u00e0 grande \u00e9chelle lorsque vous avez des millions de sites h\u00e9berg\u00e9s sur des centaines de milliers de conteneurs n\u00e9cessite \u00e9galement une orchestration, une d\u00e9couverte de services et une couche de messagerie fiable o\u00f9 nous introduisons Consul et NSQ.<\/p>\n\n\n\n<p>Enfin, une bonne observabilit\u00e9, surveillance et alerte sont cruciales compte tenu de la complexit\u00e9 du syst\u00e8me.&nbsp;Nous avons donc mis Prometheus et Grafana en action.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Les_solutions\"><\/span><strong>Les solutions<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.&nbsp;Applications monopage avec React et Redux<\/h3>\n\n\n\n<p>Il y a trois ans, lorsque nous avons commenc\u00e9 \u00e0 travailler sur le projet, nous savions que les applications d&#8217;une seule page devenaient de plus en plus populaires car elles permettaient une meilleure exp\u00e9rience utilisateur, des temps de chargement de page plus rapides, l&#8217;unification des principes de conception, la conception modulaire, etc.&nbsp;L&#8217;\u00e9cosyst\u00e8me SPA \u00e9voluait \u00e9galement rapidement.&nbsp;Il existait de nombreux frameworks JavaScript tels que AngularJS, ReactJS et Vue.js.&nbsp;Il semblait naturel et \u00e9vident que lorsqu&#8217;il s&#8217;agissait de quelque chose de l\u00e9ger, rapide et bas\u00e9 sur une API, l&#8217;application d&#8217;une seule page \u00e9tait la r\u00e9ponse.&nbsp;Apr\u00e8s quelques tests avec diff\u00e9rents frameworks, nous avons d\u00e9cid\u00e9 d&#8217;utiliser ReactJS + Redux pour notre nouvel espace client et nos outils de site, car il a montr\u00e9 les meilleurs r\u00e9sultats de performance.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Chargement rapide des pages<\/h3>\n\n\n\n<p>Nous avons deux applications principales d&#8217;une seule page.&nbsp;L&#8217;une est l&#8217;application Espace client et l&#8217;autre est notre application Outils du site.&nbsp;Ils sont tous deux utilis\u00e9s toutes les heures par des milliers de personnes et leur nombre ne cesse d&#8217;augmenter.&nbsp;D\u00e9placer une partie de la logique d&#8217;application vers les navigateurs des utilisateurs, o\u00f9 JS est ex\u00e9cut\u00e9 localement, a rendu les choses plus rapides.&nbsp;Cela s&#8217;explique en partie par le fait que nous avons moins de manipulations de donn\u00e9es effectu\u00e9es dans le backend.&nbsp;L&#8217;autre partie vient du fait que nos applications vivent sur une solution de mise en cache d&#8217;objets avec CDN devant.&nbsp;Cela permet aux utilisateurs du monde entier de charger rapidement l&#8217;application et de commencer \u00e0 l&#8217;utiliser.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Guide de style unifi\u00e9&nbsp;<\/h3>\n\n\n\n<p>Les applications d&#8217;une seule page vous permettent de travailler avec des composants pr\u00eats \u00e0 l&#8217;emploi qui sont r\u00e9utilisables et de faire en sorte que vos interfaces respectent certaines normes.&nbsp;Pour la n\u00f4tre, nous avons \u00e9crit un guide de style, qui rend nos interfaces homog\u00e8nes et nous permet d&#8217;\u00e9crire du nouveau code plus facilement et plus rapidement.&nbsp;Le compromis est que seul le d\u00e9p\u00f4t du guide de style avec tous les exemples repr\u00e9sente environ 550 000 lignes de code&nbsp;!<\/p>\n\n\n\n<p>\u00c9tant donn\u00e9 que  notre d\u00e9veloppement est assez important et en croissance et que le code avec lequel nous travaillons est assez volumineux, nous devions nous assurer que nos normes seraient respect\u00e9es et non r\u00e9gress\u00e9es par les changements.\u00a0C&#8217;est pourquoi nous avons couvert le code avec des tests visuels et e2e (Cypress).\u00a0Si un changement de code modifie visuellement une certaine page de mani\u00e8re significative, nous avons un drapeau rouge et nous pouvons m\u00eame arr\u00eater automatiquement le d\u00e9ploiement de code et les builds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_API_RESTful_et_microservices\"><\/span>2. API RESTful et microservices<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Nous avons maintenant plus de 100 appels API qui peuvent \u00eatre utilis\u00e9s pour g\u00e9rer un seul site h\u00e9berg\u00e9 sur nos serveurs.&nbsp;Des choses comme l&#8217;installation de WordPress, l&#8217;\u00e9mission d&#8217;un certificat SSL priv\u00e9, la cr\u00e9ation de comptes de messagerie, la cr\u00e9ation&nbsp;de nouvelles bases de donn\u00e9es MySQL,&nbsp;l&#8217;ajout de cl\u00e9s SSH et m\u00eame la migration de sites entre serveurs se font toutes via des appels API.&nbsp;Ces API nous offrent les avantages suivants&nbsp;:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Favorise l&#8217;utilisation de diff\u00e9rentes langues<\/h3>\n\n\n\n<p>Nous avons des ing\u00e9nieurs logiciels qui \u00e9crivent dans les langages\/frameworks suivants pour notre plate-forme&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>PHP (Symfony, ZendFramework)<\/li><li>Perle (danseuse)<\/li><li>Aller<\/li><li>Python<\/li><li>JavaScript (ReactJS, AngularJS), TypeScript&nbsp;<\/li><\/ul>\n\n\n\n<p>Afin de nous assurer que toutes les pi\u00e8ces mobiles puissent communiquer nous avions besoin d&#8217;API RESTful pour relier la communication.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La conception de l&#8217;API RESTful est bien connue<\/h3>\n\n\n\n<p>Le c\u00f4t\u00e9 positif des API RESTful est que pratiquement tous les d\u00e9veloppeurs de nos jours les comprennent et connaissent le concept.\u00a0Cela signifie que lorsque nous devons ajouter de nouvelles fonctionnalit\u00e9s, nous n&#8217;avons pas besoin de former les d\u00e9veloppeurs ou de leur faire apprendre les entr\u00e9es et les sorties de l&#8217;ensemble du syst\u00e8me afin qu&#8217;ils puissent livrer.\u00a0Ils peuvent simplement se concentrer sur le nouveau morceau de code n\u00e9cessaire et l&#8217;int\u00e9grer dans le syst\u00e8me.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Nos partenaires peuvent utiliser les API<\/h3>\n\n\n\n<p>Le fait que tout soit bas\u00e9 sur une API facilite l&#8217;acc\u00e8s aux partenaires et leur permet de cr\u00e9er des sites, d&#8217;installer un CMS ou d&#8217;effectuer d&#8217;autres fonctions sur notre plateforme.&nbsp;Cela nous rend flexibles et constitue une bonne base pour la croissance future de notre entreprise.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Personnalisation de l&#8217;acc\u00e8s utilisateur<\/h3>\n\n\n\n<p>Les API RESTful appliquent le principe CRUD selon lequel chaque objet manipul\u00e9 par l&#8217;API doit prendre en charge les 4 fonctions suivantes : cr\u00e9er, lire, mettre \u00e0 jour et supprimer.&nbsp;Coupl\u00e9 \u00e0 la repr\u00e9sentation unifi\u00e9e REST des ressources, cela permet une s\u00e9paration facile des actions et un acc\u00e8s personnalis\u00e9 et un contr\u00f4le utilisateur.<\/p>\n\n\n\n<p>Avec les jetons Web JSON, nous avons utilis\u00e9 les API pour fournir des niveaux d&#8217;acc\u00e8s personnalis\u00e9s dans nos nouvelles interfaces.\u00a0Il est d\u00e9sormais possible d&#8217;autoriser un op\u00e9rateur \u00e0 cr\u00e9er des comptes de messagerie pour un nom de domaine, mais de ne pas avoir acc\u00e8s aux comptes de messagerie existants ou \u00e0 tout autre outil.\u00a0Pour commencer, nous n&#8217;avons introduit que 3 r\u00f4les d&#8217;utilisateur : propri\u00e9taire du site, collaborateur et client en marque blanche, mais nous avons pos\u00e9 les bases pour ajouter facilement de nombreuses options de personnalisation \u00e0 l&#8217;avenir.\u00a0Le contr\u00f4le d&#8217;acc\u00e8s bas\u00e9 sur les r\u00f4les nous permet de fournir un acc\u00e8s granulaire \u00e0 des services et fonctionnalit\u00e9s sp\u00e9cifiques.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Identifiez les probl\u00e8mes plus facilement et mesurez plus efficacement<\/h3>\n\n\n\n<p>Plus la construction est granulaire, plus il est facile d&#8217;isoler une pi\u00e8ce non fonctionnelle et de la remplacer ou de la r\u00e9parer.\u00a0C&#8217;est l&#8217;un des principaux avantages que nous pouvons tirer de la philosophie des micro-services.\u00a0Nous pouvons plus facilement suivre et r\u00e9soudre les probl\u00e8mes avec une fonction sp\u00e9cifique fournie par un service sp\u00e9cifique.\u00a0Nous pouvons \u00e9galement mieux suivre les performances et l&#8217;utilisation des diff\u00e9rents services afin de pouvoir faire \u00e9voluer les ressources de la plate-forme et pr\u00e9venir les probl\u00e8mes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Jetons_Web_JSON\"><\/span>3. Jetons Web JSON<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Au moment o\u00f9 nous avons commenc\u00e9 \u00e0 travailler sur des applications d&#8217;une seule page, nous savions que nous devions faire \u00e9voluer notre configuration d&#8217;authentification et d&#8217;autorisation d&#8217;une mani\u00e8re ou d&#8217;une autre.\u00a0\u00c9tant donn\u00e9 le nombre d&#8217;API qui communiquent entre elles et d&#8217;utilisateurs qui interagissent \u00e9galement avec ces API (qui \u00e9taient r\u00e9parties sur diff\u00e9rents domaines), l&#8217;autorisation effectu\u00e9e \u00e0 l&#8217;ancienne &#8211; via des cookies &#8211; n&#8217;\u00e9tait pas optimale et n&#8217;\u00e9tait pas \u00e9volutive.\u00a0Les deux principaux probl\u00e8mes rencontr\u00e9s \u00e9taient les suivants :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>La gestion des cookies de partage de ressources cross-origin et des en-t\u00eates HTTP n&#8217;est pas simple, et nous voulions l&#8217;\u00e9viter.&nbsp;La combinaison des jetons Web JSON avec nos propres API nous permet de r\u00e9soudre ce probl\u00e8me.<\/li><li>La mise \u00e0 l&#8217;\u00e9chelle d&#8217;un syst\u00e8me backend qui v\u00e9rifie chaque demande d&#8217;API a commenc\u00e9 \u00e0 para\u00eetre terrible du point de vue des performances des sessions.<\/li><\/ul>\n\n\n\n<p>Apr\u00e8s quelques recherches, nous avons d\u00e9cid\u00e9 d&#8217;utiliser JSON Web Tokens pour cette partie de l&#8217;infrastructure.&nbsp;Nous avons configur\u00e9 un syst\u00e8me d&#8217;authentification et d&#8217;autorisation personnalis\u00e9 de notre c\u00f4t\u00e9.&nbsp;Cela nous permet de b\u00e9n\u00e9ficier de choses telles que :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>M\u00e9canisme d&#8217;autorisation uniforme pour diff\u00e9rentes API<\/li><li>Charge de serveur r\u00e9duite et moins de hits DB<\/li><li>Capacit\u00e9 \u00e0 utiliser cette solution dans diff\u00e9rents domaines&nbsp;<\/li><li>Plus facile d&#8217;atteindre l&#8217;\u00e9volutivit\u00e9 horizontale<\/li><li>Un niveau de s\u00e9curit\u00e9 sup\u00e9rieur pour nos utilisateurs<\/li><li>Authentification unique pr\u00eate \u00e0 l&#8217;emploi<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Orchestration_et_messagerie\"><\/span>4. Orchestration et messagerie<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Plus nous grandissons, plus nous exploitons de serveurs (en tant qu&#8217;unit\u00e9 mat\u00e9rielle) et de conteneurs (en tant qu&#8217;unit\u00e9 virtuelle).&nbsp;Le conteneur Linux est l&#8217;unit\u00e9 principale de notre infrastructure, mais la fa\u00e7on dont nous g\u00e9rons ces conteneurs \u00e9volue avec le temps.&nbsp;Commander de nouveaux serveurs, d\u00e9ployer un conteneur avec la pile logicielle n\u00e9cessaire, ajouter ce nouveau conteneur \u00e0 toutes les bases de donn\u00e9es qui alimentent diff\u00e9rents services et API, tout cela et bien plus n\u00e9cessite une orchestration.&nbsp;Pour cette partie, nous avons \u00e9crit beaucoup de code, sp\u00e9cifique \u00e0 notre plateforme et nos processus.&nbsp;Pourtant, nous d\u00e9pendons fortement de projets logiciels bien \u00e9tablis pour atteindre nos objectifs.&nbsp;Nous utilisons HashiCorp Consul pour la d\u00e9couverte de services et l&#8217;automatisation des syst\u00e8mes.&nbsp;Notre plate-forme de messagerie de choix est NSQ.&nbsp;Nous utilisons Ansible pour automatiser de nombreuses t\u00e2ches de provisionnement de logiciels et de gestion de la configuration.<\/p>\n\n\n\n<p>Deux bons exemples sont nos syst\u00e8mes retravaill\u00e9s Let&#8217;s Encrypt et WordPress Automatic Updates.&nbsp;Auparavant, ils s&#8217;ex\u00e9cutaient localement sur chaque serveur d&#8217;h\u00e9bergement et sont maintenant bas\u00e9s sur une approche distribu\u00e9e.&nbsp;Les serveurs sont automatiquement enregistr\u00e9s dans le syst\u00e8me.&nbsp;Les services utilisent la d\u00e9couverte automatique fournie par Consul.&nbsp;Ensuite, les API mentionn\u00e9es ci-dessus sont utilis\u00e9es et l&#8217;\u00e9mission et le renouvellement SSL se produisent pour chaque nouveau nom de domaine que nous enregistrons dans le syst\u00e8me.&nbsp;Il en va de m\u00eame pour chaque application qui entre dans les syst\u00e8mes de mises \u00e0 jour automatiques de WordPress.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_PrometheusGrafana_pour_lobservabilite\"><\/span>5. Prometheus\/Grafana pour l&#8217;observabilit\u00e9<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>La fa\u00e7on dont nous fournissons de nouveaux services a \u00e9galement beaucoup chang\u00e9.&nbsp;Dans le monde natif du cloud, nous ne nous soucions plus de la d\u00e9faillance des h\u00f4tes individuels.&nbsp;Aucun ing\u00e9nieur du CNO n&#8217;est appel\u00e9 lorsque cela se produit.&nbsp;Il n&#8217;y a pas d&#8217;administrateurs syst\u00e8me artisanaux qui traitent les machines et les services avec une attention affectueuse.&nbsp;Maintenant, nous surveillons l&#8217;ensemble de l&#8217;infrastructure avec les objectifs suivants \u00e0 l&#8217;esprit&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Nous devons savoir quand les choses tournent mal<\/li><li>Nous pouvons d\u00e9boguer et avoir un aper\u00e7u du contexte sp\u00e9cifique<\/li><li>Nous devons \u00eatre capables de voir les changements dans le temps et de faire des pr\u00e9dictions<\/li><li>Les donn\u00e9es doivent \u00eatre facilement consomm\u00e9es par d&#8217;autres syst\u00e8mes et processus<\/li><\/ul>\n\n\n\n<p>Pour rendre ce qui pr\u00e9c\u00e8de plus pr\u00e9cis, nous red\u00e9finissons maintenant les sc\u00e9narios \u00ab d&#8217;\u00e9chec \u00bb et les alertes que nous recevons pour chacun.\u00a0Par exemple, nous pouvons recevoir des alertes n\u00e9cessitant une intervention humaine lorsqu&#8217;il y a un impact direct sur l&#8217;utilisateur, comme lorsqu&#8217;un service qui affecte directement les sites web des clients a \u00e9t\u00e9 affect\u00e9.\u00a0Mais, nous n&#8217;avons peut-\u00eatre pas besoin d&#8217;intervention humaine lorsqu&#8217;un n\u0153ud sp\u00e9cifique a \u00e9chou\u00e9 car les donn\u00e9es sont automatiquement redistribu\u00e9es sur d&#8217;autres n\u0153uds et il n&#8217;y a aucun impact sur l&#8217;utilisateur, donc aucune alerte n&#8217;est n\u00e9cessaire dans ce cas.\u00a0<\/p>\n\n\n\n<p>Lorsque nous travaillons sur ces alertes, nous cherchons \u00e0 passer de l&#8217;alerte aux sous-syst\u00e8mes probl\u00e9matiques.\u00a0Afin que nos ing\u00e9nieurs puissent faire une analyse rapide et proposer une r\u00e9solution rapide, nous devons disposer de suffisamment de donn\u00e9es.\u00a0C&#8217;est ce qu&#8217;on appelle le tra\u00e7age distribu\u00e9, et cela nous permet de suivre les demandes d&#8217;utilisateurs sp\u00e9cifiques depuis les navigateurs de nos clients, via plusieurs API et diff\u00e9rents services, jusqu&#8217;\u00e0 ce qu&#8217;elles atteignent les bases de donn\u00e9es et\/ou les moteurs de stockage.\u00a0Chaque enregistrement concernant une demande dans le syst\u00e8me de tra\u00e7age distribu\u00e9 nous donne des informations de profilage des performances et un moyen de corr\u00e9ler les probl\u00e8mes avec d&#8217;autres \u00e9v\u00e9nements.\u00a0Nous utilisons le tra\u00e7age distribu\u00e9 pour d\u00e9boguer plus rapidement et optimiser notre code.\u00a0Nous sommes en mesure d&#8217;atteindre une vitesse de fonctionnalit\u00e9 plus \u00e9lev\u00e9e \u00e0 cause de cela.\u00a0<\/p>\n\n\n\n<p>Pour atteindre tous les objectifs, nous avons choisi d&#8217;utiliser Prometheus et Grafana pour le profilage, la collecte de m\u00e9triques, l&#8217;analyse des journaux et le tra\u00e7age distribu\u00e9 des \u00e9v\u00e9nements.&nbsp;Nous sommes maintenant en mesure de corr\u00e9ler les informations provenant de plusieurs sources et de r\u00e9v\u00e9ler et de pr\u00e9voir les lacunes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Le logiciel que nous avons d\u00fb \u00e9crire pour relever le d\u00e9fi et fournir les solutions d\u00e9crites ci-dessus est \u00e9norme mais assez gratifiant.&nbsp;Pour conclure, je vous laisse quelques chiffres directement issus des nouveaux r\u00e9f\u00e9rentiels de logiciels et de notre JIRA&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>2 539 604 lignes de code<\/li><li>Couverture des tests de code \u00e0 99\u00a0%<\/li><li>9250 t\u00e2ches JIRA<\/li><li>199 560 mots dans les historiques JIRA<\/li><\/ul>\n\n\n\n<p>Nous sommes particuli\u00e8rement fiers de la couverture des tests de code.&nbsp;M\u00eame si 2,5 millions de lignes de code sont impressionnantes, nous savons que ce n&#8217;est pas une tr\u00e8s bonne mesure de succ\u00e8s.&nbsp;Le fait que tout notre code soit couvert par des tests est cependant une grande r\u00e9ussite.&nbsp;D\u00e8s le d\u00e9but, nous avons d\u00e9fini la couverture des tests de code comme l&#8217;un de nos principaux crit\u00e8res pour fournir des logiciels de qualit\u00e9.&nbsp;Et si notre nouvel espace client et nos nouveaux outils de site ne peuvent pas fournir de garanties de qualit\u00e9, nous ne pouvons pas fournir le service exceptionnel auquel nos clients sont habitu\u00e9s.&nbsp;Soyez assur\u00e9 que nous nous engageons \u00e0 fournir le m\u00eame service d&#8217;h\u00e9bergement de premier ordre, mais cette fois avec des outils de gestion de site et de collaboration encore meilleurs, bas\u00e9s sur les technologies Web les meilleures et les plus innovantes au monde.<\/p>\n","protected":false},"excerpt":{"rendered":"Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;Notre COO en a parl\u00e9 d'un point de vue commercial&nbsp;et de l'importance de ce projet pour notre croissance future.&nbsp;Je voudrais vous donner la perspective technique et pourquoi nous consid\u00e9rons que ces nouvelles interfaces sont \u00e9galement une \u00e9tape technique&hellip;","protected":false},"author":73,"featured_media":40,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,8],"tags":[],"class_list":["post-38","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-conseils-dhebergement","category-technologies"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.2 (Yoast SEO v24.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site - Blog SiteGround<\/title>\n<meta name=\"description\" content=\"Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;Notre COO en a parl\u00e9 d&#039;un point de vue\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site\" \/>\n<meta property=\"og:description\" content=\"Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;Notre COO en a parl\u00e9 d&#039;un point de vue\" \/>\n<meta property=\"og:url\" content=\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/\" \/>\n<meta property=\"og:site_name\" content=\"SiteGround\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-22T13:35:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-03T08:14:31+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1320\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Nikolay Todorov\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nikolay Todorov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/\"},\"author\":{\"name\":\"Nikolay Todorov\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#\/schema\/person\/6c87dfe84afce144e9734bd6026c7bf9\"},\"headline\":\"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site\",\"datePublished\":\"2019-08-22T13:35:18+00:00\",\"dateModified\":\"2025-10-03T08:14:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/\"},\"wordCount\":2695,\"publisher\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg\",\"articleSection\":[\"Conseils d'h\u00e9bergement\",\"Technologies\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/\",\"url\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/\",\"name\":\"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site - Blog SiteGround\",\"isPartOf\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg\",\"datePublished\":\"2019-08-22T13:35:18+00:00\",\"dateModified\":\"2025-10-03T08:14:31+00:00\",\"description\":\"Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;Notre COO en a parl\u00e9 d'un point de vue\",\"breadcrumb\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#primaryimage\",\"url\":\"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg\",\"contentUrl\":\"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg\",\"width\":1320,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/newblog.siteground.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#website\",\"url\":\"https:\/\/newblog.siteground.com\/fr\/\",\"name\":\"Blog SiteGround\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/newblog.siteground.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#organization\",\"name\":\"Blog SiteGround\",\"url\":\"https:\/\/newblog.siteground.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2025\/01\/cropped-Siteground-Logo-on-white.jpg\",\"contentUrl\":\"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2025\/01\/cropped-Siteground-Logo-on-white.jpg\",\"width\":173,\"height\":250,\"caption\":\"Blog SiteGround\"},\"image\":{\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#\/schema\/person\/6c87dfe84afce144e9734bd6026c7bf9\",\"name\":\"Nikolay Todorov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/newblog.siteground.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c6f9568ff224d594b80af4fec5afb1f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c6f9568ff224d594b80af4fec5afb1f4?s=96&d=mm&r=g\",\"caption\":\"Nikolay Todorov\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/nikolay-todorov-1b404a15\/\"],\"url\":\"https:\/\/newblog.siteground.com\/fr\/author\/niki\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site - Blog SiteGround","description":"Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;Notre COO en a parl\u00e9 d'un point de vue","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/","og_locale":"en_US","og_type":"article","og_title":"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site","og_description":"Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;Notre COO en a parl\u00e9 d'un point de vue","og_url":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/","og_site_name":"SiteGround","article_published_time":"2019-08-22T13:35:18+00:00","article_modified_time":"2025-10-03T08:14:31+00:00","og_image":[{"width":1320,"height":600,"url":"http:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg","type":"image\/jpeg"}],"author":"Nikolay Todorov","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Nikolay Todorov","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#article","isPartOf":{"@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/"},"author":{"name":"Nikolay Todorov","@id":"https:\/\/newblog.siteground.com\/fr\/#\/schema\/person\/6c87dfe84afce144e9734bd6026c7bf9"},"headline":"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site","datePublished":"2019-08-22T13:35:18+00:00","dateModified":"2025-10-03T08:14:31+00:00","mainEntityOfPage":{"@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/"},"wordCount":2695,"publisher":{"@id":"https:\/\/newblog.siteground.com\/fr\/#organization"},"image":{"@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg","articleSection":["Conseils d'h\u00e9bergement","Technologies"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/","url":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/","name":"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site - Blog SiteGround","isPartOf":{"@id":"https:\/\/newblog.siteground.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#primaryimage"},"image":{"@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg","datePublished":"2019-08-22T13:35:18+00:00","dateModified":"2025-10-03T08:14:31+00:00","description":"Nous avons r\u00e9cemment annonc\u00e9 le lancement de notre nouvel espace client et de nos nouveaux outils de site.&nbsp;Notre COO en a parl\u00e9 d'un point de vue","breadcrumb":{"@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#primaryimage","url":"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg","contentUrl":"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2023\/03\/Impossible_Until_Done_Blogpost_1320x600.jpeg","width":1320,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/newblog.siteground.com\/fr\/derriere-la-technologie-derriere-nouvel-espace-client-et-nos-site-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/newblog.siteground.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Les technologies derri\u00e8re notre nouvel espace client et nos nouveaux outils de site"}]},{"@type":"WebSite","@id":"https:\/\/newblog.siteground.com\/fr\/#website","url":"https:\/\/newblog.siteground.com\/fr\/","name":"Blog SiteGround","description":"","publisher":{"@id":"https:\/\/newblog.siteground.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/newblog.siteground.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/newblog.siteground.com\/fr\/#organization","name":"Blog SiteGround","url":"https:\/\/newblog.siteground.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/newblog.siteground.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2025\/01\/cropped-Siteground-Logo-on-white.jpg","contentUrl":"https:\/\/newblog.siteground.com\/fr\/wp-content\/uploads\/sites\/6\/2025\/01\/cropped-Siteground-Logo-on-white.jpg","width":173,"height":250,"caption":"Blog SiteGround"},"image":{"@id":"https:\/\/newblog.siteground.com\/fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/newblog.siteground.com\/fr\/#\/schema\/person\/6c87dfe84afce144e9734bd6026c7bf9","name":"Nikolay Todorov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/newblog.siteground.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c6f9568ff224d594b80af4fec5afb1f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c6f9568ff224d594b80af4fec5afb1f4?s=96&d=mm&r=g","caption":"Nikolay Todorov"},"sameAs":["https:\/\/www.linkedin.com\/in\/nikolay-todorov-1b404a15\/"],"url":"https:\/\/newblog.siteground.com\/fr\/author\/niki\/"}]}},"_links":{"self":[{"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/users\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":4,"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":267,"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/posts\/38\/revisions\/267"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/media\/40"}],"wp:attachment":[{"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/newblog.siteground.com\/fr\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}