28 Punkte von xguru 2022-05-30 | 1 Kommentare | Auf WhatsApp teilen

Hardware: 9 dedizierte Server von Hetzner im Einsatz: 484 € pro Monat

  • 4 HAProxy, 3 Webserver, 2 Postgres

Software

  • Ubuntu 20.04
  • Betrieb der Dienste mit Systemd: haproxy / nginx / postgres
  • Privates Networking zwischen den Servern mit WireGuard. Per Tiering aufgesetzt, sodass HAProxy keine Verbindung zu Postgres herstellen kann
  • Monitoring von Maschinen/Services mit dem Netdata-Agent und Anbindung an Netdata Cloud für einen Gesamtüberblick
  • Load Balancing und Rolling Updates mit HAProxy 2.2
  • Streaming-Replikation von Primary zu Standby mit PostgreSQL 13. Kein automatisches Failover
    → Failover kann per Single-Command ausgelöst werden, wird aber manuell durchgeführt

Auf den App-Servern

  • Ausführung der Python-App von Healthchecks mit uWSGI
  • Ein kleines in Go geschriebenes Programm namens hchk verarbeitet die Ping-API und eingehende E-Mails
  • NGINX für Rate Limiting, Auslieferung statischer Dateien und als Reverse Proxy (uWSGI und hchk)

SaaS-Tools

  • AWS S3: Speicherung von DB-Backups
  • Braintree: Zahlungs- und Abonnementverwaltung
  • Cloudflare: DNS
  • Elastic Email: Versand transaktionaler E-Mails
  • Fastmail: Empfang/Versand von Kundensupport-E-Mails
  • GitHub: Versionsverwaltung und Tracking, mit GitHub Actions werden bei jedem Commit Tests ausgeführt
  • Hardypress: Betrieb des Service-Blogs (Hosting-Service für statisches WordPress)
  • HetrixTools: Uptime-Monitoring
  • IcoMoon: Erstellung von Icon-Fonts
  • pgDash: Monitoring von PostgreSQL-Servern
  • PingPong: Betrieb der Service-Statusseite
  • SSLMate: Certificate Provisioning über die Kommandozeile
  • Syften: Benachrichtigungen, wenn der Healthchecks-Service auf HN, Twitter, Reddit usw. erwähnt wird
  • Twillio: SMS-Versand sowie Benachrichtigungen über WhatsApp und Telefon

Cron jobs

  • Einmal täglich vollständiges DB-Backup, danach Verschlüsselung mit gpg und Upload nach S3
  • Einmal täglich Versand von Hinweisen zum Löschen inaktiver Nutzer
  • Einmal täglich Versand von Hinweisen an Jahresabonnenten, deren Verlängerung innerhalb eines Monats ansteht

Entwicklungsumgebung

  • Desktop-PC + 27-Zoll-1440p-Monitor
  • Ubuntu 20.04 + GNOME Shell
  • Sublime Text + meld / Sublime Merge
  • YubiKeys
  • Fabric: Ausführung von Deployment- und Wartungsaufgaben
  • sops: Speicherung von Secrets
  • Laptop für Notfälle