{"id":30785,"date":"2019-10-31T21:37:25","date_gmt":"2019-10-31T18:37:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\/"},"modified":"2019-10-31T21:37:25","modified_gmt":"2019-10-31T18:37:25","slug":"stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","title":{"rendered":"Les blocs de construction des applications distribu\u00e9es. Approche nulle","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Les blocs de construction des applications distribu\u00e9es. Approche nulle\" src=\"\/wp-content\/uploads\/2019\/04\/88d4e363538bdfc67690c8339dca790b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Le monde ne reste pas immobile. Le progr\u00e8s cr\u00e9e de nouveaux d\u00e9fis technologiques. Les architectures des syst\u00e8mes d'information doivent \u00e9voluer en fonction des exigences changeantes. Aujourd'hui, nous allons parler de l'architecture orient\u00e9e \u00e9v\u00e9nements, de la concurrence, de la parall\u00e9lisation, de l'asynchronisme et de la fa\u00e7on dont on peut vivre sereinement avec tout cela en Erlang.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"vvedenie\">Introduction<\/h2>\n<p><\/p>\n<p>En fonction de la taille du syst\u00e8me \u00e0 concevoir et de ses exigences, nous, les d\u00e9veloppeurs, choisissons le mode de communication au sein du syst\u00e8me. Dans la plupart des cas, pour organiser l'interaction des services, une architecture avec un broker, par exemple bas\u00e9 sur RabbitMQ ou Kafka, peut suffire. Mais parfois, le flux d'\u00e9v\u00e9nements, le SLA et le niveau de contr\u00f4le sur le syst\u00e8me sont tels qu'un messaging pr\u00eat \u00e0 l'emploi ne nous convient pas. Bien s\u00fbr, on peut compliquer un peu le syst\u00e8me en prenant la responsabilit\u00e9 du niveau de transport et de la formation d'un cluster, par exemple en utilisant ZeroMQ ou nanomsg. Mais si le syst\u00e8me a suffisamment de bande passante et de capacit\u00e9s avec un cluster Erlang standard, la question d'introduire une entit\u00e9 suppl\u00e9mentaire n\u00e9cessite une \u00e9tude d\u00e9taill\u00e9e et une justification \u00e9conomique.<\/p>\n<p><\/p>\n<p>Le sujet des applications r\u00e9actives distribu\u00e9es est assez vaste. Pour respecter le format de l'article, nous allons nous concentrer aujourd'hui uniquement sur les environnements homog\u00e8nes bas\u00e9s sur Erlang\/Elixir. L'\u00e9cosyst\u00e8me Erlang\/OTP permet de mettre en \u0153uvre une architecture r\u00e9active avec un minimum d'efforts. Mais dans tous les cas, nous aurons besoin d'une couche d'\u00e9change de messages. <\/p>\n<p><\/p>\n<h2 id=\"teoreticheskiy-bazis\">Fondements th\u00e9oriques<\/h2>\n<p><\/p>\n<p>La conception commence par la d\u00e9finition des objectifs et des contraintes. L'objectif principal ne r\u00e9side pas dans le d\u00e9veloppement pour le d\u00e9veloppement. Nous avons besoin d'un outil s\u00e9curis\u00e9 et \u00e9volutif sur lequel nous pouvons construire, mais surtout \u2013 d\u00e9velopper des applications modernes de diff\u00e9rents niveaux : allant de serveurs individuels, servant un petit public, qui peuvent \u00e9voluer ensuite en clusters de 50 \u00e0 60 n\u0153uds, jusqu'aux f\u00e9d\u00e9rations de clusters. Ainsi, l'objectif principal est la maximisation des profits en r\u00e9duisant le co\u00fbt de d\u00e9veloppement et de possession du syst\u00e8me final.<\/p>\n<p><\/p>\n<p>D\u00e9taillons les 4 exigences principales pour le syst\u00e8me final :<\/p>\n<p><\/p>\n<ul>\n<li><strong>Avec<\/strong>orientation \u00e9v\u00e9nementielle.<br \/>\nLe syst\u00e8me est toujours pr\u00eat \u00e0 faire passer le flux d'\u00e9v\u00e9nements et \u00e0 r\u00e9aliser les actions n\u00e9cessaires ;<\/li>\n<li><strong>M<\/strong>extensibilit\u00e9.<br \/>\nLes blocs individuels peuvent \u00eatre \u00e9volutifs \u00e0 la fois verticalement et horizontalement. L'ensemble du syst\u00e8me doit \u00eatre capable de cro\u00eetre horizontalement de mani\u00e8re infinie;<\/li>\n<li><strong>O<\/strong>tol\u00e9rance aux pannes.<br \/>\nTous les niveaux et tous les services doivent pouvoir se r\u00e9tablir automatiquement en cas de d\u00e9faillance;<\/li>\n<li><strong>G<\/strong>arantir un temps de r\u00e9ponse.<br \/>\nLe temps est pr\u00e9cieux et les utilisateurs ne devraient pas avoir \u00e0 attendre trop longtemps.<\/li>\n<\/ul>\n<p><\/p>\n<p>Rappelez-vous l'ancienne histoire de \"The little engine that could\", aussi connue sous le nom de \"Le petit train qui pouvait\" ? Pour qu'un syst\u00e8me en cours de conception r\u00e9ussisse \u00e0 sortir de la phase de prototypage et soit progressif, sa fondation doit r\u00e9pondre \u00e0 des exigences minimales. <strong>A PU<\/strong>.<\/p>\n<p><\/p>\n<p>\u00c0 la messagerie comme un outil d'infrastructure et une base pour tous les services, un autre point vient s'ajouter : la convivialit\u00e9 pour les programmeurs.<\/p>\n<p><\/p>\n<h3 id=\"orientirovannost-na-sobytiya\">Orientation \u00e9v\u00e9nementielle.<\/h3>\n<p><\/p>\n<p>Pour qu'une application puisse \u00e9voluer d'une petite instance <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/fr\/server\/dts-los-angeles\/\"   title=\"de serveurs\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3480\">de serveurs<\/a> \u00e0 un cluster, son architecture doit assurer un faible couplage. Cette exigence est satisfaite par un mod\u00e8le asynchrone. Dans ce mod\u00e8le, l'exp\u00e9diteur et le r\u00e9cepteur s'occupent de la charge d'information du message sans se soucier de la transmission et du routage au sein du syst\u00e8me.<\/p>\n<p><\/p>\n<h3 id=\"masshtabiruemost\">Scalabilit\u00e9<\/h3>\n<p><\/p>\n<p>L'\u00e9volutivit\u00e9 et l'efficacit\u00e9 du syst\u00e8me vont de pair. Les composants de l'application doivent \u00eatre capables d'exploiter toutes les ressources disponibles. Plus nous pouvons utiliser efficacement les capacit\u00e9s et plus nos m\u00e9thodes de traitement sont optimales, moins nous d\u00e9pensons d'argent en mat\u00e9riel. <\/p>\n<p><\/p>\n<p>Dans le cadre d'une seule machine, Erlang cr\u00e9e un environnement hautement concurrentiel. L'\u00e9quilibre entre concurrence et parall\u00e9lisme peut \u00eatre ajust\u00e9 en choisissant le nombre de threads du syst\u00e8me d'exploitation disponibles pour l'Erlang VM ainsi que le nombre de planificateurs utilisant ces threads.<br \/>\nLes processus Erlang n'ont pas d'\u00e9tat partag\u00e9 et fonctionnent en mode non-bloquant. Cela permet une latence relativement basse et une bande passante plus \u00e9lev\u00e9e que celle des applications traditionnelles bas\u00e9es sur la synchronisation bloquante. Le planificateur d'Erlang veille \u00e0 une distribution \u00e9quitable du CPU et de l'IO, et l'absence de verrous permet \u00e0 l'application de r\u00e9pondre m\u00eame en p\u00e9riode de forte charge ou de d\u00e9faillances. <\/p>\n<p><\/p>\n<p>Au niveau du cluster, un probl\u00e8me d'utilisation existe \u00e9galement. Il est important que toutes les machines du cluster soient charg\u00e9es de mani\u00e8re uniforme et que le r\u00e9seau ne soit pas satur\u00e9. Imaginons une situation : le trafic utilisateur arrive sur les \u00e9quilibreurs de charge entrants (haproxy, nginx, etc.), qui r\u00e9partissent les demandes le plus uniform\u00e9ment possible entre l'ensemble des backends disponibles. Dans l'infrastructure de l'application, le service qui r\u00e9alise l'interface requise n'est que le dernier maillon ; il devra interroger plusieurs autres services pour r\u00e9pondre \u00e0 la demande initiale. Les requ\u00eates internes n\u00e9cessitent \u00e9galement un routage et un \u00e9quilibrage.<br \/>\nPour g\u00e9rer efficacement les flux de donn\u00e9es, le messaging doit fournir aux d\u00e9veloppeurs une interface pour g\u00e9rer le routage et la r\u00e9partition de la charge. Gr\u00e2ce \u00e0 cela, les d\u00e9veloppeurs pourront r\u00e9soudre \u00e0 la fois des t\u00e2ches standard et des cas plus rares en utilisant des mod\u00e8les de microservices (agr\u00e9gateur, proxy, cha\u00eene, branche, etc.). <\/p>\n<p><\/p>\n<p>D'un point de vue commercial, la scalabilit\u00e9 est un outil de gestion des risques. L'essentiel est de satisfaire les demandes des clients tout en utilisant les \u00e9quipements de mani\u00e8re optimale :<\/p>\n<p><\/p>\n<ul>\n<li>Avec l'augmentation des capacit\u00e9s des \u00e9quipements gr\u00e2ce aux avanc\u00e9es technologiques. Ils ne doivent pas rester inactifs en raison des imperfections du logiciel. Erlang se met tr\u00e8s bien \u00e0 l'\u00e9chelle verticalement et pourra toujours tirer parti de tous les c\u0153urs de CPU et de la m\u00e9moire disponible ;<\/li>\n<li>Dans des environnements cloud, nous pouvons g\u00e9rer le nombre d'\u00e9quipements en fonction de la charge actuelle ou pr\u00e9vue et garantir le SLA.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"otkazoustoychivost\">R\u00e9silience<\/h3>\n<p><\/p>\n<p>Consid\u00e9rons deux axiomes : 'Les pannes sont inacceptables' et 'Les pannes arriveront toujours'. Pour les affaires, une panne logicielle signifie une perte d'argent, et ce qui est pire, une perte de r\u00e9putation. En \u00e9quilibrant les pertes potentielles et le co\u00fbt de d\u00e9veloppement d'un logiciel tol\u00e9rant aux pannes, on peut souvent trouver un compromis.<\/p>\n<p><\/p>\n<p>\u00c0 court terme, une architecture int\u00e9grant la tol\u00e9rance aux pannes permet d'\u00e9conomiser de l'argent sur l'achat de solutions de clustering pr\u00eates \u00e0 l'emploi. Elles sont co\u00fbteuses et comportent \u00e9galement des erreurs.<br \/>\n\u00c0 long terme, une architecture tol\u00e9rante aux pannes rembourse largement les co\u00fbts associ\u00e9s \u00e0 son application \u00e0 toutes les \u00e9tapes du d\u00e9veloppement.<br \/>\nLa messagerie au sein de la base de code \u00e9tant encore en phase de d\u00e9veloppement, permet de travailler en d\u00e9tail sur l'interaction des composants au sein du syst\u00e8me. Cela simplifie la t\u00e2che de r\u00e9action et de gestion des pannes, car tous les composants responsables traitent les d\u00e9faillances, et le syst\u00e8me final sait comment revenir automatiquement \u00e0 un \u00e9tat normal apr\u00e8s une panne par conception.<\/p>\n<p><\/p>\n<h3 id=\"otzyvchivost\">R\u00e9activit\u00e9<\/h3>\n<p><\/p>\n<p>Ind\u00e9pendamment des pannes, l'application doit r\u00e9pondre aux demandes et satisfaire les SLA. La r\u00e9alit\u00e9 est que les gens ne veulent pas attendre, donc l'entreprise doit s'adapter. De plus en plus d'applications sont attendues avec une haute r\u00e9activit\u00e9.<br \/>\nLes applications r\u00e9actives fonctionnent en mode proche du temps r\u00e9el. L'Erlang VM fonctionne en mode temps r\u00e9el doux. Pour certains domaines, tels que le trading boursier, la m\u00e9decine et la gestion d'\u00e9quipements industriels, le mode temps r\u00e9el strict est essentiel.<br \/>\nLes syst\u00e8mes r\u00e9actifs am\u00e9liorent l'exp\u00e9rience utilisateur (UX) et sont b\u00e9n\u00e9fiques pour les entreprises.<\/p>\n<p><\/p>\n<h2 id=\"predvaritelnyy-itog\">Bilan pr\u00e9liminaire<\/h2>\n<p><\/p>\n<p>En planifiant cet article, je voulais partager mon exp\u00e9rience de cr\u00e9ation d'un courtier de messages et de construction de syst\u00e8mes complexes sur cette base. Cependant, la partie th\u00e9orique et motivante s'est av\u00e9r\u00e9e assez vaste.<br \/>\nDans la deuxi\u00e8me partie de l'article, je parlerai des nuances de mise en \u0153uvre des points d'\u00e9change, des mod\u00e8les d'\u00e9change de messages et de leur application.<br \/>\nDans la troisi\u00e8me partie, nous examinerons les questions g\u00e9n\u00e9rales d'organisation des services, de routage et d'\u00e9quilibrage. Nous aborderons le c\u00f4t\u00e9 pratique de l'\u00e9volutivit\u00e9 et de la r\u00e9silience des syst\u00e8mes.<\/p>\n<p><\/p>\n<p>Fin de la premi\u00e8re partie.<\/p>\n<p><\/p>\n<p>Photo <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/SRjZtxsK3Os\">@lucabravo<\/a><\/noindex>.<\/p>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446028\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0438\u0440 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435. \u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b. \u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0434\u043e\u043b\u0436\u043d\u0430 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432 Erlang \u043c\u043e\u0436\u043d\u043e \u0441\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c \u043c\u0438\u0440\u043d\u043e. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u043d\u0435\u0439, \u043c\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22770,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30785","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:37:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Les blocs de construction des applications distribu\u00e9. Approche nulle | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:37:25+00:00","article:modified_time":"2019-10-31T18:37:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30785","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-22 15:31:13","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:29:56","updated":"2026-02-22 15:31:13","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/30785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=30785"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/30785\/revisions"}],"predecessor-version":[{"id":162006,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/30785\/revisions\/162006"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/22770"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=30785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=30785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=30785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}