Construction d'infrastructure

Postgres on-premise

Table des matières

There is no cloud. It’s just someone else’s computer

Someone else computer

Même si j’ai suivi le virage du cloud, j’ai toujours souhaité garder un pied dans l’infrastructure et le système 1.

Je pense qu’il est indispensable de maintenir ce type de connaissances pour comprendre les problématiques de performance.

Cela me permet aujourd’hui de construire des infrastructures complètes pour des clients pour différentes raisons :

  • Gros acteur public qui possède déjà une infrastructure physique et ne souhaite pas dépendre d’un cloud provider.
  • Recherche de performances : des serveurs dédiés avec stockage local sont bien plus performance que les instances dans le cloud.
  • Economiques : quand l’infrastructure devient conséquente, le cloud peut s’avérer très cher.

Je constate depuis le courant de l’année 2023 un virement à propos du cloud et visiblement, je ne suis pas le seul à partager ce constat :

David Heinemeier Hansson, créateur du framework Ruby On Rails a écris de nombreux articles à ce sujet :

TL;DR :

  • Ils ont déployé plusieurs serveurs physique sur deux sites séparés (4000 vCPUs, 7680GB de RAM, et 384TB de stockage NVMe)
  • Ils vont économiser 7 millions 10 millions de dollars sur 5 ans.
  • L’achat du matériel a été rentabilisé en 6 mois.
  • Les performances sont bien meilleures.

The Big Cloud Exit FAQ

Exemple d’architecture

Exemple architecture

Voici un exemple d’architecture que j’ai réalisé pour un client :

  • 1 primaire et 5 réplicas : 2 synchrones, 2 asynchrones en cascade
  • Serveur Postgres :
    • AMD EPYC 9354 32-Core / 64 threads
    • 512Go RAM DDR5
    • 5.5To de stockage NVMe utile (plusieurs millions d’IOPS)
    • Réseau en 25 Gb/s
  • Sauvegarde “locale” :
    • Point In Time Recovery
    • AMD EPYC 9124 16-Core
    • 128Go DDR5
    • 15To de stockage utile en NVMe
    • Réseau en 25 Gb/s
  • Sauvegarde externalisée sur équivalent S3
  • Cout : environ 4000€HT/mois vs plus de 300 000$/mois sur AWS RDS. Les performances sont même meilleures grace au stockage.
  • Temps de sauvegarde pour une base de 1To moins de 5 minutes pour une sauvegarde full, quelques secondes pour sauvegarde différentielle.
  • Temps de restauration 5 minutes.
  • Tuning Linux : RAID, Kernel…
  • Tuning Postgres
  • Rédaction des procédures d’installation, sauvegardes / restauration, bascules…

Bien sûr, il m’est arrivé de réaliser des architectures plus modestes :

  • Sur des machines virtuelles
  • Avec un pooler de connexion (PgBouncer)
  • Accompagnement sur supervision : Datadog, Nagios like (Icinga, Thruk) avec check_pgactivity.

  1. La page que vous lisez est hébergée chez moi. J’administre mon petit serveur (HTTPS, reverse proxy, sauvegardes…). ↩︎

Adrien Nayrat
Adrien Nayrat
Expert DBA PostgreSQL Freelance

Passionné d’open source et de PostgreSQL..