28 points par xguru 2022-05-30 | 1 commentaires | Partager sur WhatsApp

Matériel : 9 serveurs dédiés Hetzner utilisés : 484 € / mois

  • 4 HAProxy, 3 serveurs web, 2 Postgres

Logiciels

  • Ubuntu 20.04
  • Services opérés avec systemd : haproxy / nginx / postgres
  • Réseau privé entre serveurs via Wireguard. Segmentation en tiers, donc HAProxy ne peut pas se connecter à Postgres
  • Supervision des machines/services avec l’agent Netdata et connexion à Netdata Cloud pour avoir une vue d’ensemble
  • Équilibrage de charge et rolling updates avec HAProxy 2.2
  • Réplication en streaming de PostgreSQL 13 du primaire vers le standby. Pas de failover automatique
    → Le failover peut être déclenché avec une seule commande, mais il est géré manuellement

Sur les serveurs d’application

  • Exécution de l’application Python Healthchecks avec uWSGI
  • Petit programme hchk écrit en Go pour traiter l’API de ping et les e-mails entrants
  • NGINX pour le rate limiting, le service des fichiers statiques et le reverse proxy (uWSGI et hchk)

Outils SaaS

  • AWS S3 : stockage des sauvegardes de la base de données
  • Braintree : gestion des paiements et des abonnements
  • Cloudflare : DNS
  • Elastic Email : envoi d’e-mails transactionnels
  • Fastmail : réception/envoi des e-mails de support client
  • GitHub : gestion de versions et suivi, exécution des tests à chaque commit avec GitHub Actions
  • Hardypress : exploitation du blog du service (hébergement WordPress statique)
  • HetrixTools : supervision de disponibilité
  • IcoMoon : création de polices d’icônes
  • pgDash : supervision des serveurs PostgreSQL
  • PingPong : exploitation de la page d’état du service
  • SSLMate : provisionnement de certificats en ligne de commande
  • Syften : alertes quand le service Healthchecks est mentionné sur HN, Twitter, Reddit, etc.
  • Twillio : envoi de SMS, alertes WhatsApp et appels téléphoniques

Tâches cron

  • Une fois par jour, sauvegarde complète de la base, chiffrement avec gpg puis envoi vers S3
  • Une fois par jour, envoi d’une alerte de suppression aux utilisateurs inactifs
  • Une fois par jour, envoi d’une alerte aux abonnés annuels dont le renouvellement arrive dans le mois

Environnement de développement

  • PC de bureau + écran 27 pouces 1440p
  • Ubuntu 20.04 + GNOME Shell
  • Sublime Text + meld / Sublime Merge
  • YubiKeys
  • Fabric : exécution des déploiements et des tâches de maintenance
  • sops : stockage des secrets
  • Ordinateur portable de secours en cas d’urgence