<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>L'infrastructure on INF1410 - Initiation au génie logiciel</title><link>https://cjauvin.github.io/inf1410-teluq/docs/module5/infrastructure/</link><description>Recent content in L'infrastructure on INF1410 - Initiation au génie logiciel</description><generator>Hugo</generator><language>fr</language><atom:link href="https://cjauvin.github.io/inf1410-teluq/docs/module5/infrastructure/index.xml" rel="self" type="application/rss+xml"/><item><title>La conteneurisation (Docker)</title><link>https://cjauvin.github.io/inf1410-teluq/docs/module5/infrastructure/docker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cjauvin.github.io/inf1410-teluq/docs/module5/infrastructure/docker/</guid><description>&lt;h1 id="la-conteneurisation-docker"&gt;La conteneurisation (Docker)&lt;a class="anchor" href="#la-conteneurisation-docker"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Parallèlement à l&amp;rsquo;essor du cloud, une autre approche de l&amp;rsquo;isolation a émergé,&#10;plus légère que la virtualisation classique. L&amp;rsquo;idée de base est ancienne : la&#10;commande &lt;code&gt;chroot&lt;/code&gt; d&amp;rsquo;Unix, disponible depuis 1979, permettait déjà de restreindre&#10;la vision du système de fichiers d&amp;rsquo;un processus. Au fil des années, le noyau&#10;Linux a développé des mécanismes d&amp;rsquo;isolation de plus en plus sophistiqués : les&#10;&lt;em&gt;cgroups&lt;/em&gt; (control groups, 2006), qui permettent de limiter les ressources (CPU,&#10;mémoire) allouées à un groupe de processus, et les &lt;em&gt;namespaces&lt;/em&gt; (2002-2013), qui&#10;isolent différents aspects du système (réseau, identifiants de processus, système&#10;de fichiers). Ces primitives existaient, mais restaient difficiles à utiliser&#10;directement. En 2013, Solomon Hykes et son entreprise dotCloud (qui deviendra&#10;Docker Inc) ont lancé Docker, un outil qui rend ces mécanismes accessibles à&#10;travers une interface simple et élégante. Au lieu de virtualiser une machine&#10;complète avec son propre noyau (comme le fait une VM), un container partage le&#10;noyau du système hôte tout en maintenant une isolation quasi complète de&#10;l&amp;rsquo;environnement applicatif. Le résultat est beaucoup plus léger qu&amp;rsquo;une VM : un&#10;container démarre en secondes plutôt qu&amp;rsquo;en minutes, et consomme une fraction des&#10;ressources. Docker a également popularisé le concept d&amp;rsquo;&lt;em&gt;image&lt;/em&gt; comme artefact&#10;reproductible et distribuable, résolvant de manière élégante le fameux problème&#10;&amp;ldquo;ça marche sur ma machine&amp;rdquo;.&lt;/p&gt;</description></item><item><title>L'orchestration (Kubernetes)</title><link>https://cjauvin.github.io/inf1410-teluq/docs/module5/infrastructure/kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cjauvin.github.io/inf1410-teluq/docs/module5/infrastructure/kubernetes/</guid><description>&lt;h1 id="lorchestration-kubernetes"&gt;L&amp;rsquo;orchestration (Kubernetes)&lt;a class="anchor" href="#lorchestration-kubernetes"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Docker compose, que nous venons de voir, permet de gérer un groupe de containers&#10;sur une seule machine. Mais que se passe-t-il quand une application doit tourner&#10;sur des dizaines ou des centaines de machines, avec des exigences de haute&#10;disponibilité ? Si un container tombe, qui le redémarre ? Si la charge augmente,&#10;qui décide de créer de nouvelles instances ? Comment répartir le trafic entre les&#10;containers disponibles ? Ces questions définissent le problème de&#10;l&amp;rsquo;&lt;em&gt;orchestration&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>L'infrastructure comme code (Terraform)</title><link>https://cjauvin.github.io/inf1410-teluq/docs/module5/infrastructure/iac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cjauvin.github.io/inf1410-teluq/docs/module5/infrastructure/iac/</guid><description>&lt;h1 id="linfrastructure-comme-code-terraform"&gt;L&amp;rsquo;infrastructure comme code (Terraform)&lt;a class="anchor" href="#linfrastructure-comme-code-terraform"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Jusqu&amp;rsquo;ici, nous avons traité l&amp;rsquo;infrastructure comme une donnée acquise. Le cluster&#10;Kubernetes existe, les serveurs tournent, le réseau fonctionne. Mais d&amp;rsquo;où vient&#10;cette infrastructure ? Concrètement, l&amp;rsquo;infrastructure d&amp;rsquo;un système logiciel&#10;comprend tout ce qui doit exister &lt;em&gt;avant&lt;/em&gt; que le code puisse s&amp;rsquo;exécuter. On y&#10;trouve les serveurs (physiques ou virtuels), les réseaux (sous-réseaux, règles de&#10;pare-feu, load balancers), le stockage (disques, espaces de stockage cloud),&#10;les bases de données, les certificats SSL et les entrées DNS. Pendant longtemps,&#10;cette infrastructure était créée et configurée manuellement. Un administrateur&#10;se connectait à une console cloud pour créer un serveur, puis en SSH pour&#10;installer des paquets et modifier des fichiers de configuration. Le résultat&#10;était ce qu&amp;rsquo;on appelle un &lt;em&gt;snowflake server&lt;/em&gt; : une machine unique, configurée à&#10;la main au fil du temps, dont personne ne sait exactement reproduire l&amp;rsquo;état. Si&#10;elle tombe en panne, la reconstruire à l&amp;rsquo;identique relève de l&amp;rsquo;archéologie.&lt;/p&gt;</description></item></channel></rss>