Serveur GitLab et runners de build CI/CD sur mesureGitLab server and CI/CD build runner hardware

Une chaîne d'intégration continue interne se decompose en deux besoins distincts : la forge, qui doit rester disponible et répondre vite, et les runners, qui encaissent une charge de compilation intense et très irreguliere. Mélanger les deux sur une machine unique produit des ralentissements a chaque build. S2I dimensionne et assemble les deux rôles séparément.An in-house continuous integration chain splits into two distinct needs: the forge, which must stay available and respond quickly, and the runners, which absorb intense and highly irregular compilation load. Mixing both on a single machine produces slowdowns at every build. S2I sizes and assembles the two roles separately.

Séparer la forge des runners de buildSeparating the forge from the build runners

Le serveur GitLab héberge les depots, l'interface web, la base de données et le registre de conteneurs : il demande de la mémoire et un stockage rapide, mais une charge processeur régulière. Les runners, eux, saturent tous leurs cœurs pendant quelques minutes puis retombent a zero. Cette irregularite perturbe la forge si les deux cohabitent. Séparer les rôles rend l'interface fluide même quand dix builds tournent en parallèle.The GitLab server hosts repositories, the web interface, the database and the container registry: it needs memory and fast storage, but a fairly steady CPU load. Runners, by contrast, saturate every core for a few minutes then drop back to zero. That irregularity disturbs the forge when both share a machine. Separating the roles keeps the interface responsive even when ten builds run in parallel.

  • Forge dimensionnée en mémoire et en latence de stockage
  • Runners dimensionnés en cœurs pour la compilation parallèle
  • Registre de conteneurs prévu avec une politique de purge
  • Interface web restant fluide pendant les builds
  • Forge sized on memory and storage latency
  • Runners sized on cores for parallel compilation
  • Container registry planned with a clear purge policy
  • Web interface staying responsive while builds are running

Endurance du stockage sur les runnersStorage endurance on the build runners

Un runner écrit enormement : clonage du dépôt, téléchargement des dépendances, artefacts intermédiaires, caches, puis nettoyage. Ce cycle repete des dizaines de fois par jour use un SSD grand public en un temps etonnamment court. Il faut donc choisir une endurance exprimee en DWPD cohérente avec le volume écrit quotidiennement. Un cache de dépendances local et persistant réduit à la fois le temps de build et le volume écrit.A runner writes an enormous amount: repository cloning, dependency downloads, intermediate artefacts, caches, then cleanup. That cycle repeated dozens of times a day wears out a consumer SSD surprisingly quickly. You therefore need endurance expressed in DWPD that matches the volume written daily. A local, persistent dependency cache reduces both build times and the written volume.

  • SSD NVMe a endurance DWPD adaptée au rythme de build
  • Cache de dépendances local et persistant entre les builds
  • Nettoyage automatique des artefacts et images obsolètes
  • Surveillance de l'usure des SSD dans la supervision
  • NVMe SSDs with DWPD endurance matched to the build cadence
  • Local dependency cache persisted between builds
  • Automated cleanup of stale artefacts and images
  • SSD wear tracked as part of routine monitoring

Sauvegarde de la forge et montée en chargeBacking up the forge and scaling out

La forge contient l'historique complet du code : sa sauvegarde est aussi critique que celle de la comptabilite. Elle doit inclure la base de données, les depots, les artefacts et la configuration, puis sortir de la machine vers un stockage immuable. Cote montée en charge, ajouter des runners est simple et sans risque, alors que grossir la forge demande plus de precautions. S2I assemble, teste en charge, garantit et fournit les pièces détachées.The forge holds the complete history of your code: backing it up is as critical as backing up the accounts. That backup must include the database, the repositories, the artefacts and the configuration, then leave the machine for immutable storage. On scaling, adding runners is simple and low risk, whereas growing the forge demands more care. S2I assembles, load-tests, warrants and supplies spare parts.

  • Sauvegarde incluant base, depots, artefacts et configuration
  • Copie exportee vers un stockage immuable hors machine
  • Montée en charge par ajout de runners plutôt que de forge
  • Restauration testée réellement sur un environnement de recette
  • Backup covering database, repositories, artefacts and configuration
  • Copy exported to immutable storage away from the machine
  • Scaling by adding runners rather than growing the forge
  • Restore genuinely tested on a staging environment

Repères de configurationConfiguration guidance

Processeur forgeForge CPUIntel Xeon ou AMD EPYC — charge régulière, fréquence utile
Processeur runnerRunner CPUAMD EPYC 9004/9005 — densité de cœurs pour la compilation
MémoireMemoryDDR5 RDIMM ECC, généreuse sur la forge et sur les runners
Stockage forgeForge storageSSD NVMe en miroir pour depots, base et registre
Stockage runnerRunner storageSSD NVMe à forte endurance DWPD pour les caches de build
RéseauNetwork10 GbE entre forge, runners et registre de conteneurs
SauvegardeBackupExport vers stockage immuable, restauration testée

Repères indicatifs : la configuration finale est validée avec vous selon vos contraintes réelles (charge, budget, environnement).Indicative guidance: the final configuration is validated with you against your real constraints (workload, budget, environment).

Questions fréquentesFrequently asked questions

Autant que votre compilation sait en exploiter, multiplie par le nombre de builds que vous voulez traiter en parallèle. Une compilation reste souvent limitée par les étapes sequentielles et par les accès disque, donc mesurer un build reel avant d'acheter évite d'investir dans des cœurs qui resteront inutilises.As many as your compilation can actually use, multiplied by how many builds you want to run in parallel. Compilation is often limited by sequential steps and disk access, so measuring a real build before purchasing avoids investing in cores that will simply sit idle.
Ils n'ont pas besoin d'être exotiques, mais leur endurance doit correspondre au volume écrit chaque jour. Un runner actif écrit et efface en permanence, ce qui epuise rapidement un SSD grand public. Choisir un modèle classe mixed-use, avec une endurance annoncée cohérente, évite un remplacement premature coûteux.They need not be exotic, but their endurance must match the volume written each day. An active runner writes and erases constantly, which quickly exhausts a consumer SSD. Choosing a mixed-use class model with coherent rated endurance avoids a costly premature replacement down the line.
Techniquement oui, pour une petite équipe et des builds courts. Le problème apparaît des que plusieurs builds tournent ensemble : l'interface web devient lente et les developpeurs le ressentent immédiatement. Séparer les rôles, même sur deux machines modestes, améliore nettement le confort au quotidien.Technically yes, for a small team and short builds. The problem appears as soon as several builds run together: the web interface becomes slow and developers feel it immediately. Separating the roles, even onto two modest machines, noticeably improves day-to-day comfort.

Un besoin précis à chiffrer ?A specific need to quote?

Décrivez votre contexte : nous revenons sous 24 à 72 heures avec une approche et un devis.Tell us your context: we come back within 24-72 hours with an approach and a quote.