1人SaaSのHealthchecks.ioの技術スタック
(blog.healthchecks.io)ハードウェア : HetznerのDediサーバーを9台使用 : 月額 €484
- HAProxy 4台、Webサーバー 3台、Postgres 2台
ソフトウェア
- Ubuntu 20.04
- Systemdでサービスを運用 : haproxy / nginx / postgres
- Wireguardでサーバー間のプライベートネットワーキング。ティアリングしているため、HAProxyはPostgresに接続不可
- Netdata agentでマシン/サービスを監視し、Netdata Cloudと連携して全体のオーバービューを確認可能
- HAProxy 2.2でロードバランシングおよびローリングアップデート
- PostgreSQL 13でPrimaryからStandbyへストリーミングレプリケーション。自動failoverはなし
→ 単一コマンドでフェイルオーバーをトリガー可能だが、手動で対応
アプリサーバーでは
- uWSGI で Healthchecks の Python アプリを実行
- Goで書かれた小さな
hchkプログラムが ping API と inbound email を処理 - NGINXでRate limiting、静的ファイル配信、リバースプロキシ(uWSGI と hchk)
SaaSツール
- AWS S3 : DBバックアップを保存
- Braintree : 決済およびサブスクリプション管理
- Cloudflare : DNS
- Elastic Email : トランザクションメール送信
- Fastmail : カスタマーサポートメールの受信/送信
- GitHub : バージョン管理およびトラッキング、GitHub Actionsでコミットごとにテストを実行
- Hardypress : サービスブログを運営(静的なWordPressホスティングサービス)
- HetrixTools : アップタイム監視
- IcoMoon : アイコンフォント作成
- pgDash : PostgreSQLサーバー監視
- PingPong : サービスのステータスページを運営
- SSLMate : コマンドラインからCertificate Provisioningが可能
- Syften : HN、Twitter、Reddit などで Healthchecks サービスに言及があると通知を受け取る
- Twillio : SMS送信、Whatsapp および電話通知
Cron jobs
- 1日1回、DB全体をバックアップし、gpgで暗号化してからS3にアップロード
- 1日1回、非アクティブユーザー削除の通知を送信
- 1日1回、年間契約者のうち1か月以内に更新されるユーザーへの通知を送信
開発環境
- デスクトップPC + 27インチ 1440p モニター
- Ubuntu 20.04 + GNOME shell
- Sublime Text + meld / Sublime Merge
- Yubikeys
- Fabric : デプロイおよびメンテナンス作業を実行
- sops : Secret保存
- 緊急時対応用ノートPC
1件のコメント
ひとりでSaaSを1年間運営して学んだこと
1人SaaS開発者のためのおすすめツール
1人SaaSスタートアップ運営6か月の振り返り
1人技術スタートアップのアーキテクチャスタック