README.md

Arthur · Milekat

Le cloud à portée d'idée.

Software DevOps Engineer

À propos

Avant l'informatique, j'ai fait de l'électrotechnique et de la robotique industrielle, avec un BTS en 2017 puis une licence d'automatisme en alternance. En 2020, pendant le confinement, j'ai appris Java en écrivant des plugins Minecraft, et je suis entré à EPITECH en alternance chez Société Générale CIB, où je suis aujourd'hui Software DevOps Engineer. À côté, je m'occupe de l'infrastructure des événements Minecraft d'Equinox Studios, jusqu'à une LAN de 108 joueurs à la Grande Arche de La Défense.

git log --graph

Mon parcours sous forme d'historique Git. Cliquez sur un commit pour le détail.

Projets

Quelques réalisations.

  • MilekatUtils

    Bibliothèque Java partagée par mes plugins Minecraft. Elle abstrait le stockage (MySQL, MariaDB, PostgreSQL, Elasticsearch) et la messagerie RabbitMQ.

    • Java
    • MySQL
    • PostgreSQL
    • RabbitMQ
    Ouvrir
  • MileShops

    Plugin Bukkit de boutiques d'échange, avec une API et des tags personnalisables. Il gère plusieurs agencements, les échanges d'objets et d'argent et des modificateurs par joueur, et stocke ses données en SQL ou dans Elasticsearch.

    • Java
    • Bukkit
    • SQL
    • Elasticsearch
    Ouvrir
  • K8daPanel

    Panneau de contrôle Kubernetes en temps réel, avec une carte des workloads et le pilotage du scaling KEDA via le RBAC natif.

    • Kubernetes
    • KEDA
    • Node.js
    Dépôt privé
  • MileBanks

    Plugin Bukkit de gestion d'argent. Les joueurs sont regroupés par tags, une API publique permet d'en ajouter, et l'historique des transactions part dans Elasticsearch pour être visualisé dans Kibana.

    • Java
    • Bukkit
    • Elasticsearch
    • Kibana
    Ouvrir
  • MileNpc

    Plugin de PNJ léger. Il utilise les Mannequins natifs sur Paper 1.21.9+ et se rabat sur NMS/ProtocolLib pour les versions plus anciennes, avec des événements d'interaction et des skins personnalisables.

    • Java
    • Paper
    • NMS
    • ProtocolLib
    Ouvrir
  • SkUltimateChat

    Un des premiers systèmes de chat Minecraft que j'ai écrits, en Skript (2018).

    • Skript
    • Minecraft
    Ouvrir

Stack de prédilection

Les technologies que j'utilise le plus, au travail comme sur mes projets.

Elasticsearch, c'est l'outil vers lequel je me tourne dès qu'il faut chercher dans des données ou les surveiller.

  • Recherche full-text et sémantique, par exemple pour retrouver des incidents similaires
  • Exploitation de cluster (mappings, ILM, snapshots, migrations) et tableaux de bord de supervision

incidents.http

POST /incidents/_search
{
  "query": {
    "semantic": {
      "field": "report",
      "query": "players stuck in the nether portal"
    }
  },
  "aggs": {
    "by_server": { "terms": { "field": "server" } }
  }
}
took: 18 ms · hits: 3
  0.94  "Portal to the nether freezes on join"
  0.91  "Stuck loading after entering the nether"
  0.87  "Nether portal sends me back to spawn"
aggregations.by_server: lobby-2 (2) · survival-1 (1)

Compétences

Cloud et infrastructure
  • Kubernetes
  • KEDA
  • OpenStack
  • AWS
  • Azure
  • Docker
  • Linux
  • Cloudflare
CI/CD et automatisation
  • GitHub Actions
  • Jenkins
  • Python scripting
  • Ansible
Données et messagerie
  • Elasticsearch
  • Kibana
  • SQL
  • MySQL
  • RabbitMQ
  • S3 / MinIO
Développement
  • Java
  • Python
Sécurité
  • Cloud security
  • SSO / OIDC
  • Firewall
  • Security groups
  • WAF
IA
  • Claude Code
  • ChatGPT
  • Mistral

Des agents IA, avec des garde-fous

J'utilise des agents IA pour opérer de vraies infrastructures, encadrés par des règles écrites à l'avance.

  1. demande

    « Liste mes VMs chez mon hébergeur cloud. »

  2. skill

    Les déclencheurs « VMs » et « hébergeur » correspondent à la skill hetzner, qui est chargée.

    .claude/skills/hetzner/SKILL.md
    
  3. règle

    C'est une lecture, donc l'agent prend le jeton en lecture seule et ne demande pas de confirmation. Le secret est lu depuis un fichier et n'est jamais affiché.

    secrets/hetzner/<project>.env → HCLOUD_READ_TOKEN=••••••••
    
  4. exécution

    L'agent lance la CLI officielle hcloud.

    $ hcloud server list -o columns=name,status,type
    NAME     STATUS    TYPE
    web-01   running   cax21
    lab-02   off       cax11
    
  5. résultat

    Deux serveurs, dont un éteint. Rien n'a été modifié.

Exécutions reconstituées et anonymisées, fidèles au fonctionnement réel de mes skills.

  • Une skill par intégration

    Chaque intégration (SQL, Elasticsearch, Kubernetes, cloud) est une skill versionnée, avec ses déclencheurs, sa CLI officielle et l'emplacement de ses secrets. Je n'ai pas besoin de redonner la syntaxe à chaque demande.

  • Lecture par défaut, écriture sur confirmation

    Chaque intégration a deux jetons, un en lecture et un en écriture. L'agent utilise la lecture par défaut, et toute action qui modifie un état (DNS, cluster, base de données) attend ma confirmation explicite. Les secrets ne sont jamais affichés ni commités.

L'architecture de ce site

Ce qui se passe entre votre navigateur et mes services.

VisiteurDNSEdge CloudflarePages (statique)Origine (VMs)
  1. 1VisiteurLe navigateur demande milekat.fr.
  2. 2DNSCloudflare répond à la place de mes serveurs, qui restent cachés.
  3. 3Edge CloudflareLa connexion est chiffrée, puis les règles du pare-feu web la laissent passer.autorisé
  4. 4Pages (statique)La page est servie telle quelle depuis le cache, sans qu'aucun serveur n'ait à calculer quoi que ce soit.autorisé

Contact

Envie d'échanger ? C'est par ici.

[email protected]:~$arthur contact --list

cv.pdfarthur-barthelme-cv.fr.pdftélécharger
linkedinArthur Barthelméouvrir
githubm1lekatouvrir
discordMilekatouvrir

[email protected]:~$

Vous êtes arrivé au bout de la page.