La stack technique de Healthchecks.io, un SaaS géré par une seule personne
(blog.healthchecks.io)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 (
uWSGIethchk)
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
1 commentaires
Ce que j’ai appris après avoir exploité seul un SaaS pendant un an
Recommandation d’outils pour les développeurs de SaaS en solo
Retour d’expérience après six mois d’exploitation d’une startup SaaS en solo
La stack d’architecture d’une startup technologique en solo