สแตกเทคโนโลยีของ Healthchecks.io ที่เป็น SaaS แบบคนเดียว
(blog.healthchecks.io)ฮาร์ดแวร์ : ใช้เซิร์ฟเวอร์ Dedicated ของ Hetzner 9 เครื่อง : €484 ต่อเดือน
- HAProxy 4 เครื่อง, เว็บเซิร์ฟเวอร์ 3 เครื่อง, Postgres 2 เครื่อง
ซอฟต์แวร์
- Ubuntu 20.04
- รันบริการด้วย Systemd : haproxy / nginx / postgres
- ใช้ Wireguard สำหรับเครือข่ายส่วนตัวระหว่างเซิร์ฟเวอร์ โดยแยกชั้นไว้ทำให้ HAProxy เชื่อมต่อกับ Postgres ไม่ได้
- ใช้ Netdata agent มอนิเตอร์เครื่อง/บริการ และเชื่อมกับ Netdata Cloud เพื่อดูภาพรวมทั้งหมดได้
- ใช้ HAProxy 2.2 สำหรับ load balancing และ rolling update
- ใช้ PostgreSQL 13 ทำ streaming replication จาก Primary ไปยัง Standby ไม่มี automatic failover
→ สามารถ trigger failover ได้ด้วยคำสั่งเดียว แต่จัดการแบบแมนนวล
บนแอปเซิร์ฟเวอร์
- รันแอป Python ของ Healthchecks ด้วย uWSGI
- โปรแกรมเล็กชื่อ hchk ที่เขียนด้วย Go ใช้จัดการ ping API และ inbound email
- NGINX สำหรับ rate limiting, เสิร์ฟไฟล์สแตติก, reverse proxy (uWSGI และ hchk)
เครื่องมือ SaaS
- AWS S3 : จัดเก็บแบ็กอัป DB
- Braintree : การชำระเงินและจัดการ subscription
- Cloudflare : DNS
- Elastic Email : ส่ง transactional email
- Fastmail : รับ/ส่งอีเมลซัพพอร์ตลูกค้า
- GitHub : version control และการติดตามงาน, ใช้ GitHub Actions รันทดสอบทุกครั้งที่มี commit
- Hardypress : ดูแลบล็อกของบริการ (บริการโฮสต์ WordPress แบบสแตติก)
- HetrixTools : มอนิเตอร์ uptime
- IcoMoon : สร้าง icon font
- pgDash : มอนิเตอร์เซิร์ฟเวอร์ PostgreSQL
- PingPong : ดูแลหน้าสถานะบริการ
- SSLMate : ทำ certificate provisioning ได้จาก command line
- Syften : รับการแจ้งเตือนเมื่อมีการพูดถึงบริการ Healthchecks บน HN, Twitter, Reddit ฯลฯ
- Twillio : ส่ง SMS, การแจ้งเตือนผ่าน Whatsapp และโทรศัพท์
Cron jobs
- วันละครั้งแบ็กอัป DB ทั้งหมด เข้ารหัสด้วย gpg แล้วอัปโหลดไป S3
- วันละครั้งส่งการแจ้งเตือนลบผู้ใช้ที่ไม่เคลื่อนไหว
- วันละครั้งส่งการแจ้งเตือนให้ผู้ใช้ที่เป็นสมาชิกแบบรายปีซึ่งจะต่ออายุภายใน 1 เดือน
สภาพแวดล้อมการพัฒนา
- เดสก์ท็อปพีซี + จอ 27 นิ้ว 1440p
- Ubuntu 20.04 + GNOME shell
- Sublime Text + meld / Sublime Merge
- Yubikeys
- Fabric : รันงาน deploy และบำรุงรักษา
- sops : จัดเก็บ secret
- โน้ตบุ๊กสำหรับรับมือกรณีฉุกเฉิน
1 ความคิดเห็น
สิ่งที่ได้เรียนรู้จากการเปิด SaaS คนเดียวเป็นเวลา 1 ปี
แนะนำเครื่องมือสำหรับนักพัฒนา SaaS แบบคนเดียว
ย้อนมองการดำเนินงาน 6 เดือนของสตาร์ทอัป SaaS แบบคนเดียว
สแตกสถาปัตยกรรมของสตาร์ทอัปเทคโนโลยีแบบคนเดียว