Aller au contenu

Infrastructure Billetterie

Voici le schéma de l'infrastructure actuelle de la billetterie:

flowchart BT
 subgraph Rails_Servers["Serveurs Rails"]
        Muplododucus["<b>Muplododucus</b>"]
        Tranchodon["<b>Tranchodon</b>"]
        Drattak["<b>Drattak</b>"]
        Dracolosse["<b>Dracolosse</b>"]
        Colimucus["<b>Colimucus</b>"]
        Mucuscule["<b>Mucuscule</b>"]
        Trioxhydre["<b>Trioxhydre</b>"]
        Carchacrok["<b>Carchacrok</b>"]
  end
 subgraph Postgres_Replicas["Postgres Replicas"]
        Engloutyran["<b>Engloutyran</b>"]
        Katagami["<b>Katagami</b>"]
        Bamboiselle["<b>Bamboiselle</b>"]
        Vemini["<b>Vemini</b>"]
  end
    Deoxys@{ label: "<b>Deoxys</b><br>Load Balancer<br>HAProxy<br>File d'attente" } --> Rails_Servers & Queulorior@{ label: "<b>Queulorior</b><br>Redis<br>Site gestion file d'attente" }
    Rails_Servers --> Arcanin["<b>Arcanin</b><br>Redis<br>MinIO"] & Zeroid["<b>Zeroid</b><br>Postgres Principal"]
    Rails_Servers -. LB optionnel .-> Lunala["<b>Lunala</b><br>Postgres Pooler<br>"]
    Lunala -. lectures .-> Postgres_Replicas
    Lunala -. ecritures .-> Zeroid
    Zeroid --> Postgres_Replicas & Mouscotto["<b>Mouscotto</b><br>Backup"]

    Deoxys@{ shape: rect}
    Queulorior@{ shape: rect}
     Muplododucus:::rails
     Tranchodon:::rails
     Drattak:::rails
     Dracolosse:::rails
     Colimucus:::rails
     Mucuscule:::rails
     Trioxhydre:::rails
     Carchacrok:::rails
     Engloutyran:::replica
     Katagami:::replica
     Bamboiselle:::replica
     Vemini:::replica
     Deoxys:::lb
     Queulorior:::redis
     Arcanin:::redis
     Zeroid:::postgres
     Lunala:::pooler
     Mouscotto:::backup
    classDef lb fill:#ffcc00,stroke:#333,stroke-width:2px,color:#000
    classDef rails fill:#cce5ff,stroke:#333,color:#000
    classDef redis fill:#ff9999,stroke:#333,color:#000
    classDef postgres fill:#b3e6b3,stroke:#333,color:#000
    classDef replica fill:#d9f2d9,stroke:#333,color:#000
    classDef backup fill:#cccccc,stroke:#333,color:#000
    classDef pooler fill:#e6ccff,stroke:#333,color:#000

Légende

  • Serveurs Rails : Hébergent l'application billetterie.
  • Postgres Principal : Base de données principale (base de donnée pour les opérations en écriture si le load balancer est actif).
  • Postgres Replicas : Bases de données en lecture seule pour améliorer les performances des lectures (uniquement si le load balancer est actif).
  • Load Balancer (Deoxys) : Distribue le trafic entre les serveurs Rails.
  • Redis (Arcanin et Queulorior) : Utilisé pour la gestion des sessions, de la file d'attente, des caches, des jobs, etc...
  • Postgres Pooler (Lunala) : Gère les connexions aux bases de données si le load balancer est actif.
  • Backup (Mouscotto) : Responsable des sauvegardes de la base de données.