28 ポイント 投稿者 xguru 2022-05-30 | 1件のコメント | WhatsAppで共有

ハードウェア : 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