Der Tech-Stack von Healthchecks.io, einem One-Person-SaaS
(blog.healthchecks.io)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
1 Kommentare
Was ich daraus gelernt habe, ein Jahr lang allein ein SaaS zu betreiben
Tool-Empfehlungen für Solo-SaaS-Entwickler
Rückblick auf sechs Monate Betrieb eines Solo-SaaS-Startups
Der Architektur-Stack eines technischen Solo-Startups