<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>FinOps on Valérian Pyckaert</title>
        <link>https://valerian-pyckaert.dev/categories/finops/</link>
        <description>Recent content in FinOps on Valérian Pyckaert</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>fr-FR</language>
        <lastBuildDate>Thu, 16 Jul 2026 19:00:39 +0200</lastBuildDate><atom:link href="https://valerian-pyckaert.dev/categories/finops/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Infracost</title>
            <link>https://valerian-pyckaert.dev/posts/infracost/</link>
            <pubDate>Thu, 16 Jul 2026 19:00:39 +0200</pubDate>
            <guid>https://valerian-pyckaert.dev/posts/infracost/</guid>
            <description>&lt;img src=&#34;https://valerian-pyckaert.dev/posts/infracost/infracost.png&#34; alt=&#34;Featured image of post Infracost&#34; /&gt;&lt;p&gt;Dans la continuité du post précédent sur mon outil CLI d&amp;rsquo;analyse de coûts à partir d&amp;rsquo;export FOCUS, je vous propose aujourd&amp;rsquo;hui de découvrir &lt;a class=&#34;link&#34; href=&#34;https://www.infracost.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Infracost&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Il permet de &lt;strong&gt;Shift Left&lt;/strong&gt; (terme souvent utilisé en FinOps) en intégrant la prévision des coûts directement dans le workflow de développement, en particulier lors de l&amp;rsquo;utilisation d&amp;rsquo;Infrastructure as Code (IaC) comme Terraform.&lt;/p&gt;&#xA;&lt;h2 id=&#34;mise-en-place&#34;&gt;&lt;a href=&#34;#mise-en-place&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Mise en place&#xA;&lt;/h2&gt;&lt;h3 id=&#34;installation&#34;&gt;&lt;a href=&#34;#installation&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Installation&#xA;&lt;/h3&gt;&lt;p&gt;Windows&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;choco install infracost&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Mac/Linux&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;brew install infracost&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Validation&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;infracost &amp;ndash;version #retourne 2.9.x&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;api-key&#34;&gt;&lt;a href=&#34;#api-key&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;API Key&#xA;&lt;/h3&gt;&lt;p&gt;Il est possible d&amp;rsquo;expérimenter gratuitement l&amp;rsquo;outil en récupèrant une clé d&amp;rsquo;API.&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;infracost setup&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Suivez les instructions pour créer un compte et obtenir votre clé d&amp;rsquo;API.&lt;/p&gt;&#xA;&lt;h3 id=&#34;premier-scan&#34;&gt;&lt;a href=&#34;#premier-scan&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Premier scan&#xA;&lt;/h3&gt;&lt;p&gt;Pour tester l&amp;rsquo;outil je l&amp;rsquo;ai implémenté dans mon projet fil rouge &lt;a class=&#34;link&#34; href=&#34;https://github.com/Bernedotcom2312/theforge-infra&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;TheForge&lt;/a&gt; en CLI pour démarrer.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Infracost first scan&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://valerian-pyckaert.dev/infracost-first-scan.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour avoir plus de détails :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;infracost&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inspect&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;failing&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Failing&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;policies&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;policy&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;·&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;resource&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;⚙️&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;Compute&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;consider&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;generation&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;machine&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;google_container_node_pool&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary_nodes&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;·&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;gke&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;N1s&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;are&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generation&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;general&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;purpose&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;VMs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;For&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;most&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;use&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cases&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;excluding&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GPU&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;workloads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Google&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recommends&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;one&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;their&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;second&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generation&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;types&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;such&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;**&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;E2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;offers&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lowest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;total&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cost&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ownership&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;up&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;31&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;savings&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compared&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;N1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;**&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;N2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;uses&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nd&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Gen&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Intel&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Xeon&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Scalable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Processors&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Cascade&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Lake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;offers&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;greater&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;than&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;price&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;performance&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;improvement&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;many&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;workloads&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;support&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;up&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;more&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;memory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;per&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vCPU&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;**&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;N2D&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;uses&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;latest&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nd&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Gen&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AMD&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;EPYC&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Rome&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CPUs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;support&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;highest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;core&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;memory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;any&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;general&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;purpose&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Compute&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Engine&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;VM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le message est explicite, le template Terraform utilisé pour créer le cluster GKE est obsolète et il est recommandé d&amp;rsquo;utiliser un type de machine plus récent pour réduire les coûts.&#xA;Fixons cette erreur.&lt;/p&gt;&#xA;&lt;p&gt;En utilisant le calculateur de côuts GCP j&amp;rsquo;obtiens un tarif de 39$/mois pour une machine n1-standard-1 (1 vCPU, 3.75 GB RAM) et 27$/mois pour une machine e2-medium (1 vCPU, 4 GB RAM) et jusqu&amp;rsquo;à 13$/mois en basculant sur des machines &amp;ldquo;spot&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est cette dernière option que j&amp;rsquo;ai choisie car il s&amp;rsquo;agit d&amp;rsquo;un cluster de test, nous verrons un peu plus loin le résultat.&lt;/p&gt;&#xA;&lt;h2 id=&#34;quelques-features&#34;&gt;&lt;a href=&#34;#quelques-features&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Quelques features&#xA;&lt;/h2&gt;&lt;h3 id=&#34;cli&#34;&gt;&lt;a href=&#34;#cli&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;CLI&#xA;&lt;/h3&gt;&lt;p&gt;Sa CLI est plutôt bien fournie et dispose notamment de nombreuses fonctionnalités telles que :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infracost inspect --group-by resource  Show every resource sorted by cost&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infracost inspect --failing  Show only failing policies&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infracost inspect --group-by policy  Group results by policy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infracost inspect --policy &amp;lt;name&amp;gt;  Drill into a specific policy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infracost inspect --diagnostics  Show warning-severity diagnostics from this scan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infracost inspect --json  Re-run with full JSON output&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Vous noterez que certaines commandes sont similaires à celles de l&amp;rsquo;outil FOCUS que j&amp;rsquo;ai présenté dans le post précédent, la grande différence étant qu&amp;rsquo;Infracost fait des estimations de coûts à partir de l&amp;rsquo;IaC là où ma CLI se base sur les coûts réels.&#xA;Les deux outils ont des similarités mais sont complémentaires.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;dashboard&#34;&gt;&lt;a href=&#34;#dashboard&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Dashboard&#xA;&lt;/h3&gt;&lt;p&gt;Infracost propose également une interface web &lt;a class=&#34;link&#34; href=&#34;https://dashboard.infracost.io/org/theforge/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;dashboard&lt;/a&gt; pour visualiser les coûts et vos politiques FinOps.&lt;/p&gt;&#xA;&lt;h3 id=&#34;agents-ia&#34;&gt;&lt;a href=&#34;#agents-ia&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Agents IA&#xA;&lt;/h3&gt;&lt;p&gt;Infracost s&amp;rsquo;intègre avec vos agents IA, vous pouvez ainsi donner accès à Claude / Copilot accès à votre organisation pour qu&amp;rsquo;ils puissent vous aider à analyser vos coûts et vos politiques FinOps.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Claude&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;claude plugin marketplace add infracost/agent-skills&#xA;claude plugin install infracost@infracost&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Copilot&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;copilot plugin marketplace add infracost/agent-skills&#xA;copilot plugin install infracost@infracost&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;puis &lt;code&gt;Give me a full cost breakdown of this project and highlight the most expensive resources.&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;extension-ide&#34;&gt;&lt;a href=&#34;#extension-ide&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Extension IDE&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;VsCode : &lt;code&gt;ext install Infracost.infracost&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;JetBrains : &lt;code&gt;https://plugins.jetbrains.com/plugin/24761-infracost&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;integration-cicd&#34;&gt;&lt;a href=&#34;#integration-cicd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Integration CI/CD&#xA;&lt;/h2&gt;&lt;p&gt;Enfin, il est possible d&amp;rsquo;intégrer ces scans dans des pipelines de CI/CD et d&amp;rsquo;intégrer le rapport dans vos revues de PR.&#xA;Infracost bénéficie d&amp;rsquo;une intégration native avec GitHub Actions, GitLab CI/CD et Azure Pipelines si vous avez suivi l&amp;rsquo;étape de setup vous devriez en bénéficier par défaut.&lt;/p&gt;&#xA;&lt;p&gt;Sinon il est également possible d&amp;rsquo; implémenter manuellement les scans dans vos pipelines.&lt;/p&gt;&#xA;&lt;p&gt;Enfin, le fichier de configuration &lt;code&gt;infracost.yml&lt;/code&gt; permet de personnaliser le comportement de l&amp;rsquo;outil et des scans.&lt;/p&gt;&#xA;&lt;p&gt;Résultat après avoir corrigé les remontées du scan précédent et poussé une PR :&#xA;&lt;img alt=&#34;Infracost Github Integrations&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://valerian-pyckaert.dev/infracost-github-integration.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;pour-aller-plus-loin&#34;&gt;&lt;a href=&#34;#pour-aller-plus-loin&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Pour aller plus loin&#xA;&lt;/h2&gt;&lt;p&gt;Comme nous l&amp;rsquo;avons vu, Infracost est un outil complet pour mettre en place une stratégie FinOps et &amp;ldquo;Shift Left&amp;rdquo; dans vos projets IaC.&#xA;Il est possible d&amp;rsquo;aller plus loin et d&amp;rsquo;avoir une vision globale de vos coûts cloud à travers vos différents repository.&#xA;Infracost est aussi capable de vous accompagner sur la stratégie de tagging de vos ressources et de mener des itérations FinOps &amp;ldquo;Campaigns&amp;rdquo; dans une optique d&amp;rsquo;amélioration continue.&lt;/p&gt;&#xA;&lt;p&gt;N&amp;rsquo;hésitez pas à consulter la &lt;a class=&#34;link&#34; href=&#34;https://www.infracost.io/docs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;documentation officielle&lt;/a&gt; pour découvrir toutes les fonctionnalités et possibilités offertes par Infracost.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>FinOps FOCUS Analyzer : construire une CLI d&#39;analyse de facturation cloud</title>
            <link>https://valerian-pyckaert.dev/posts/focus-analyzer/</link>
            <pubDate>Tue, 14 Jul 2026 17:30:00 +0200</pubDate>
            <guid>https://valerian-pyckaert.dev/posts/focus-analyzer/</guid>
            <description>&lt;img src=&#34;https://valerian-pyckaert.dev/posts/focus-analyzer/focus-analyzer.png&#34; alt=&#34;Featured image of post FinOps FOCUS Analyzer : construire une CLI d&#39;analyse de facturation cloud&#34; /&gt;&lt;p&gt;Depuis quelques années, la spécification &lt;a class=&#34;link&#34; href=&#34;https://focus.finops.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;FOCUS&lt;/a&gt; (FinOps Open Cost and Usage Specification) s&amp;rsquo;impose comme le format commun pour normaliser les exports de facturation des majors comme AWS, Azure et GCP.&#xA;Un seul modèle de données pour analyser ses coûts cloud, quel que soit le fournisseur.&lt;/p&gt;&#xA;&lt;p&gt;Il existe déjà des outils qui exploitent ce format pour mettre en place une stratégie FinOps, mais souvent sous forme de Saas.&#xA;Je n&amp;rsquo;ai pas trouvé d&amp;rsquo;alternative Open Source répondant à mes besoins, c&amp;rsquo;est pourquoi j&amp;rsquo;ai décidé de le développer moi même.&lt;/p&gt;&#xA;&lt;h2 id=&#34;le-projet&#34;&gt;&lt;a href=&#34;#le-projet&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Le projet&#xA;&lt;/h2&gt;&lt;h3 id=&#34;objectif&#34;&gt;&lt;a href=&#34;#objectif&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Objectif&#xA;&lt;/h3&gt;&lt;p&gt;Obtenir un diagnostic rapide de la maturité FinOps d&amp;rsquo;une organisation, en m&amp;rsquo;appuyant sur des exports FOCUS.&#xA;A partir de ce diagnostic il est ensuite plus simple de prioriser les actions à mener pour réduire le gaspillage et améliorer la visibilité des coûts.&lt;/p&gt;&#xA;&lt;h3 id=&#34;utilisation&#34;&gt;&lt;a href=&#34;#utilisation&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Utilisation&#xA;&lt;/h3&gt;&lt;p&gt;Le script se lance en ligne de commande avec un export FOCUS (csv, parquet ou JSON) en entrée et produit un rapport console, un export JSON et un rapport HTML.&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;uv run focus_analyzer my_focus_export.csv&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;ou après un &lt;code&gt;uv tool install --editable .&lt;/code&gt;&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;focus-analyzer my_focus_export.csv&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;les-features&#34;&gt;&lt;a href=&#34;#les-features&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Les features&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Concentration (Pareto)&lt;/strong&gt; : quelles ressources concentrent 80 % de la facture ?&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Commitments sous-utilisés&lt;/strong&gt; : quelle part des Reserved Instances / CUDs est billée comme &lt;code&gt;Unused&lt;/code&gt; ?&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hygiène de tagging&lt;/strong&gt; : quel pourcentage du coût est billé sur des ressources sans tag exploitable ?&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anomalies de coût&lt;/strong&gt; : détection de pics/chutes journaliers par service via un z-score sur moyenne mobile.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;le-rapport&#34;&gt;&lt;a href=&#34;#le-rapport&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Le rapport&#xA;&lt;/h3&gt;&lt;p&gt;Aperçu du rapport HTML généré en sortie du script :&lt;/p&gt;&#xA;&lt;iframe&#xA;  src=&#34;https://valerian-pyckaert.dev/finops-analyzer-result.html&#34;&#xA;  title=&#34;Exemple de rapport FinOps FOCUS Analyzer&#34;&#xA;  loading=&#34;lazy&#34;&#xA;  style=&#34;width:100%; height:900px; border:1px solid var(--card-separator-color); border-radius:var(--card-border-radius);&#34;&gt;&#xA;&lt;/iframe&gt;&#xA;&#xA;&lt;h2 id=&#34;la-stack-technique&#34;&gt;&lt;a href=&#34;#la-stack-technique&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;La stack technique&#xA;&lt;/h2&gt;&lt;p&gt;Même si ma stack de prédilection est plutot NodeJS j&amp;rsquo;ai choisi de développer cet outil en Python (avec l&amp;rsquo;aide de Claude Code) pour me familiariser avec l&amp;rsquo;écosystème Python grandissant.&lt;/p&gt;&#xA;&lt;p&gt;Je suis parti sur les derniers standard d&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://astral.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Astral&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;uv&lt;/strong&gt; pour la gestion des dépendances et l&amp;rsquo;environnement virtuel&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ruff&lt;/strong&gt; pour le linting et le formatage&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;pytest&lt;/strong&gt; pour les tests unitaires&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;python-semantic-release&lt;/strong&gt; pour la release sémantique automatique&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;limitations&#34;&gt;&lt;a href=&#34;#limitations&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Limitations&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;FOCUS 1.2&lt;/strong&gt; : Je me suis limité à l&amp;rsquo;analyse FOCUS 1.2 qui est la version actuellement supportée par GCP, AWS et Azure.&#xA;J&amp;rsquo;envisage de faire évoluer le projet pour supporter les prochaines versions.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Format des données&lt;/strong&gt; : selon le provider le script peut encore être capricieux, en effet, les majors respectent FOCUS mais se permettent d&amp;rsquo;ajouter des propriétés supplémentaires.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Volume de données&lt;/strong&gt; : Je n&amp;rsquo;ai pas encore l&amp;rsquo;occasion de tester le script sur plusieurs millions de lignes.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;PyPi&lt;/strong&gt; : le projet n&amp;rsquo;est pas encore publié sur PyPi, je le distribue pour l&amp;rsquo;instant via GitHub.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ce-que-ce-projet-montre&#34;&gt;&lt;a href=&#34;#ce-que-ce-projet-montre&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Ce que ce projet montre&#xA;&lt;/h2&gt;&lt;p&gt;Au-delà de l&amp;rsquo;outil lui-même, c&amp;rsquo;est un exercice complet : compréhension d&amp;rsquo;un référentiel métier (FOCUS), architecture modulaire pensée pour évoluer sans dette, et un pipeline de qualité outillé de bout en bout.&lt;/p&gt;&#xA;&lt;p&gt;Le code est disponible sur &lt;a class=&#34;link&#34; href=&#34;https://github.com/Bernedotcom2312/finOpsFocusAnalyzer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
