28 điểm bởi xguru 2022-05-30 | 1 bình luận | Chia sẻ qua WhatsApp

Phần cứng: dùng 9 máy chủ dedicated của Hetzner: €484/tháng

  • 4 máy HAProxy, 3 máy chủ web, 2 máy Postgres

Phần mềm

  • Ubuntu 20.04
  • Vận hành dịch vụ bằng Systemd: haproxy / nginx / postgres
  • Mạng riêng giữa các máy chủ bằng Wireguard. Phân tầng nên HAProxy không thể kết nối tới Postgres
  • Giám sát máy/dịch vụ bằng Netdata agent và tích hợp với Netdata Cloud để có cái nhìn tổng quan toàn bộ
  • Cân bằng tải và rolling update bằng HAProxy 2.2
  • Streaming replication từ Primary sang Standby bằng PostgreSQL 13. Không có failover tự động
    → Có thể kích hoạt failover bằng một lệnh duy nhất, nhưng xử lý thủ công

Trên máy chủ ứng dụng

  • Chạy ứng dụng Python của Healthchecks bằng uWSGI
  • Chương trình nhỏ hchk viết bằng Go xử lý ping API và email đến
  • Rate limiting, phục vụ file tĩnh và reverse proxy (uWSGI và hchk) bằng NGINX
Quảng cáo

Công cụ SaaS

  • AWS S3: lưu bản sao lưu DB
  • Braintree: thanh toán và quản lý thuê bao
  • Cloudflare: DNS
  • Elastic Email: gửi email giao dịch
  • Fastmail: nhận/gửi email hỗ trợ khách hàng
  • GitHub: quản lý phiên bản và theo dõi, chạy test cho mỗi commit bằng GitHub Actions
  • Hardypress: vận hành blog dịch vụ (dịch vụ hosting WordPress tĩnh)
  • HetrixTools: giám sát uptime
  • IcoMoon: tạo icon font
  • pgDash: giám sát máy chủ PostgreSQL
  • PingPong: vận hành trang trạng thái dịch vụ
  • SSLMate: có thể provisioning certificate từ dòng lệnh
  • Syften: nhận thông báo khi dịch vụ Healthchecks được nhắc đến trên HN, Twitter, Reddit...
  • Twillio: gửi SMS, cảnh báo qua WhatsApp và cuộc gọi

Cron jobs

  • Mỗi ngày một lần sao lưu toàn bộ DB, mã hóa bằng gpg rồi tải lên S3
  • Mỗi ngày một lần gửi thông báo xóa người dùng không hoạt động
  • Mỗi ngày một lần gửi thông báo cho người dùng thuê bao năm sẽ gia hạn trong vòng 1 tháng

Môi trường phát triển

  • PC để bàn + màn hình 27 inch 1440p
  • Ubuntu 20.04 + GNOME shell
  • Sublime Text + meld / Sublime Merge
  • Yubikeys
  • Fabric: chạy tác vụ triển khai và bảo trì
  • sops: lưu secret
  • Laptop dùng cho tình huống khẩn cấp