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