{"id":23480,"date":"2020-06-26T16:15:30","date_gmt":"2020-06-26T14:15:30","guid":{"rendered":"https:\/\/www.radioking.com\/blog\/?p=23480"},"modified":"2020-12-23T14:03:34","modified_gmt":"2020-12-23T13:03:34","slug":"comprendre-infrastructure-serveurs-radioking-partie-2","status":"publish","type":"post","link":"https:\/\/fr.radioking.com\/blog\/comprendre-infrastructure-serveurs-radioking-partie-2\/","title":{"rendered":"Comprendre l\u2019infrastructure des serveurs RadioKing : Partie 2"},"content":{"rendered":"<p>Alain, notre administrateur syst\u00e8me, revient aujourd&rsquo;hui sur le blog \u00e0 la suite de son <a href=\"https:\/\/fr.radioking.com\/blog\/comprendre-linfrastructure-des-serveurs-radioking-partie-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">premier article<\/a>. Nous esp\u00e9rons que l&rsquo;infrastructure de nos serveurs n&rsquo;aura plus de secrets pour vous ! <!--more--><\/p>\n<p>Bonjour tout le monde ! Cela fait un moment que je ne vous ai pas \u00e9crit, il est temps de rem\u00e9dier \u00e0 cela ! J&rsquo;aimerais vous pr\u00e9senter les nouvelles concernant l&rsquo;infrastructure de RadioKing. Mais avant cela, un petit glossaire :<\/p>\n<ul>\n<li><span style=\"color: #fb5e30;\"><strong>Cluster<\/strong><\/span> : d\u00e9signe un groupe (ou une \u00ab\u00a0grappe\u00a0\u00bb) (par exemple, nous parlerons de cluster de radio ou de cluster d&rsquo;API)<\/li>\n<li><span style=\"color: #fb5e30;\"><strong>Kubernetes<\/strong><\/span> : technologie qui orchestre des conteneurs (par exemple, les conteneurs peuvent contenir une radio).<\/li>\n<li><span style=\"color: #fb5e30;\"><strong>D\u00e9p\u00f4t Git<\/strong><\/span> :\u00a0endroit o\u00f9 le code est stock\u00e9 pour pouvoir effectuer des modifications \u00e0 celui-ci, sans en perdre l\u2019ancienne version.<\/li>\n<\/ul>\n<h4><span style=\"color: #fb5e30;\"><strong>Le nouveau syst\u00e8me d&rsquo;h\u00e9bergement des radios<\/strong><\/span><\/h4>\n<p>Comme \u00e9voqu\u00e9 pr\u00e9c\u00e9demment dans la <a href=\"https:\/\/fr.radioking.com\/blog\/comprendre-linfrastructure-des-serveurs-radioking-partie-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">premi\u00e8re partie<\/a> de cette s\u00e9rie d&rsquo;articles, nous avons mis en place un <strong>nouveau syst\u00e8me<\/strong> pour g\u00e9rer et h\u00e9berger vos radios. Ce syst\u00e8me permet \u00e0 chaque radio de <strong>disposer de son propre environnement d&rsquo;ex\u00e9cution<\/strong>. Nous avons donc <strong>isol\u00e9 vos radios<\/strong>\u00a0les unes des autres, pour nous permettre de les g\u00e9rer avec une granularit\u00e9 plus fine.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-23492 lazyload\" data-src=\"https:\/\/www.radioking.com\/blog\/wp-content\/uploads\/2020\/06\/rosa.gif\" alt=\"\" width=\"500\" height=\"281\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/281;\" \/><noscript><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-23492\" src=\"https:\/\/www.radioking.com\/blog\/wp-content\/uploads\/2020\/06\/rosa.gif\" alt=\"\" width=\"500\" height=\"281\" \/><\/noscript><\/p>\n<p>Les red\u00e9marrages, mises \u00e0 jour ou m\u00eame les tests de nouvelles versions peuvent donc se faire ind\u00e9pendamment, <strong>sans impacter les autres radios<\/strong>. Ce nouveau syst\u00e8me, enti\u00e8rement <strong>automatis\u00e9<\/strong>, repose sur <strong>Kubernetes<\/strong>. Un <strong>d\u00e9p\u00f4t Git <\/strong>s&rsquo;occupe de maintenir l&rsquo;ensemble du code permettant la gestion et le d\u00e9ploiement des radios. Cela nous permet de garantir la validit\u00e9 de la configuration appliqu\u00e9e aux diff\u00e9rents clusters.<\/p>\n<p>Ce syst\u00e8me, appel\u00e9 le \u00ab\u00a0GitOps\u00a0\u00bb (je ne suis pas un grand fan des buzzwords), assure une r\u00e9silience dans le sens o\u00f9, si le cluster venait \u00e0 \u00eatre enti\u00e8rement d\u00e9truit (ce que je n&rsquo;esp\u00e8re pas) il serait possible d&rsquo;en reconstruire un <strong>\u00e0 l&rsquo;identique rapidement<\/strong>.<\/p>\n<h4><span style=\"color: #fb5e30;\"><strong>Le nouveau Manager Radio<\/strong><\/span><\/h4>\n<p>Vous avez, sans doute, bien pris en main le nouveau Manager Radio et nous en sommes tr\u00e8s fiers ! Ce nouveau manager est <strong>mieux pens\u00e9<\/strong> et surtout <strong>mieux arm\u00e9<\/strong>.<\/p>\n<p>En effet, nous avons r\u00e9\u00e9tudi\u00e9 l&rsquo;ensemble des <strong>API<\/strong> qui desservent les fonctionnalit\u00e9s offertes par ce Nouveau Manager. En suivant la logique des micro-services (ici les API) sans \u00e9tat (=destructibles), c&rsquo;est \u00e9galement un cluster Kubernetes qui h\u00e9berge toutes ces API. Elles sont s\u00e9par\u00e9es du cluster des radios pour assurer une meilleure r\u00e9silience.<\/p>\n<p>\u00c0 nouveau, la gestion, les mises \u00e0 jour et le d\u00e9pannage en sont <strong>grandement facilit\u00e9s et plus fiables<\/strong>. En suivant le pr\u00e9cepte \u00ab\u00a0<strong>Cattle vs Pets<\/strong>\u00a0\u00bb (b\u00e9tail vs animal de compagnie, rempla\u00e7able = b\u00e9tail, indispensable = animal de compagnie), chaque composant de cette infrastructure est <strong>rempla\u00e7able sans dommage<\/strong>.<\/p>\n<h4><span style=\"color: #fb5e30;\"><strong>Le nouveau syst\u00e8me de stockages des fichiers<\/strong><\/span><\/h4>\n<p>Vous avez sans doute pu constater une panne impactant notre service de diffusion durant le mois de juin 2020. Nous avons travaill\u00e9 d&rsquo;arrache-pied pour vous offrir un <strong>stockage de fichiers plus fiable et plus r\u00e9parti<\/strong>. La nouvelle technologie employ\u00e9e est \u00e0 l&rsquo;\u00e9tat de l&rsquo;art, et est en phase de mise en production. Nous avons mis en oeuvre un cluster Ceph, h\u00e9berg\u00e9 sur des machines <strong>puissantes<\/strong> et disposant d&rsquo;un <strong>volume de stockage important<\/strong>.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-23490 lazyload\" data-src=\"https:\/\/www.radioking.com\/blog\/wp-content\/uploads\/2020\/06\/ezgif.com-optimize-1.gif\" alt=\"\" width=\"480\" height=\"320\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 480px; --smush-placeholder-aspect-ratio: 480\/320;\" \/><noscript><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-23490\" src=\"https:\/\/www.radioking.com\/blog\/wp-content\/uploads\/2020\/06\/ezgif.com-optimize-1.gif\" alt=\"\" width=\"480\" height=\"320\" \/><\/noscript><\/p>\n<p>L&rsquo;ensemble des serveurs ont profit\u00e9 des\u00a0<strong>derni\u00e8res mises \u00e0 jour<\/strong>, ce qui les rend\u00a0donc <strong>s\u00e9curis\u00e9s<\/strong> et <strong>fiables<\/strong>. Chaque composant de cette infrastructure a \u00e9t\u00e9 test\u00e9 dans le cadre du PRA (Plan de Reprise d&rsquo;Activit\u00e9). Cela veut dire que nous avons <strong>simul\u00e9 une panne<\/strong> de tout ou partie du syst\u00e8me et <strong>analys\u00e9 le comportement<\/strong> de celui-ci en r\u00e9action \u00e0 ce dysfonctionnement provoqu\u00e9.\u00a0 Nous sommes ainsi en mesure de maintenir plus efficacement le syst\u00e8me de fichiers distribu\u00e9s, permettant le stockage de toutes les pistes audio que vous ajoutez dans votre M\u00e9diath\u00e8que.<\/p>\n<p>Enfin, sachant que deux pr\u00e9cautions valent mieux qu&rsquo;une, ce syst\u00e8me est lui aussi <strong>sauvegard\u00e9 chez un autre h\u00e9bergeu<\/strong>r, sur un <strong>autre serveur<\/strong>. Comme le syst\u00e8me d&rsquo;aujourd&rsquo;hui d&rsquo;ailleurs.<\/p>\n<h4><strong><span style=\"color: #fb5e30;\">Des m\u00e9triques, toujours plus de m\u00e9triques<\/span><\/strong><\/h4>\n<p>Nous continuons de travailler sur l&rsquo;<strong>aper\u00e7u de l&rsquo;enti\u00e8ret\u00e9 de l&rsquo;infrastructure<\/strong>. Un grand nombre de <strong>m\u00e9triques<\/strong>, concernant les serveurs, les machines virtuelles et les conteneurs de RadioKing, sont collect\u00e9es (CPU, RAM, r\u00e9seau, etc&#8230;) cela afin d&rsquo;\u00eatre <strong>alert\u00e9s tr\u00e8s t\u00f4t<\/strong> et de pouvoir <strong>intervenir rapidement<\/strong> et <strong>pr\u00e9cis\u00e9ment<\/strong> en cas de dysfonctionnement.<\/p>\n<p>Ces nombreuses m\u00e9triques offrent une visibilit\u00e9 accrue de l&rsquo;infrastructure, mais \u00e9galement un <strong>indice de performance global<\/strong>. Nous sommes donc en mesure de mettre \u00e0 l&rsquo;\u00e9chelle les diff\u00e9rents serveurs qui composent notre infrastructure.<\/p>\n<p>Par ailleurs, la collecte des logs (historique) des serveurs est d\u00e9sormais <strong>g\u00e9n\u00e9ralis\u00e9e\u00a0<\/strong>et\u00a0<strong>centralis\u00e9e<\/strong>. Nous construisons actuellement des tableaux de bord permettant de visualiser les flux de logs. Ils nous donnent aussi la possibilit\u00e9 de\u00a0<strong>d\u00e9tecter les comportements anormaux<\/strong> de l&rsquo;infrastructure.<\/p>\n<p style=\"text-align: center;\"><a href='https:\/\/fr.radioking.com\/' class='eckosc eckosc_button font_alt eckosc_button_size_large eckosc_button_position_inline eckosc_button_rounded' style='background-color:#fb5e30;' target='_blank'' data-color='#fb5e30'>Lancez votre propre webradio d\u00e8s aujourd'hui !<\/a>\n","protected":false},"excerpt":{"rendered":"<p>Alain, notre administrateur syst\u00e8me, revient aujourd&rsquo;hui sur le blog \u00e0 la suite de son premier article. Nous esp\u00e9rons que l&rsquo;infrastructure de nos serveurs n&rsquo;aura plus de secrets pour vous !<\/p>\n","protected":false},"author":68,"featured_media":23677,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/posts\/23480"}],"collection":[{"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/comments?post=23480"}],"version-history":[{"count":21,"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/posts\/23480\/revisions"}],"predecessor-version":[{"id":25044,"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/posts\/23480\/revisions\/25044"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/media\/23677"}],"wp:attachment":[{"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/media?parent=23480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/categories?post=23480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fr.radioking.com\/blog\/wp-json\/wp\/v2\/tags?post=23480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}