La pila tecnológica de Healthchecks.io, un SaaS de una sola persona
(blog.healthchecks.io)Hardware: uso de 9 servidores dedicados de Hetzner: €484/mes
- 4 HAProxy, 3 servidores web, 2 Postgres
Software
- Ubuntu 20.04
- Operación de servicios con systemd: haproxy / nginx / postgres
- Red privada entre servidores con Wireguard. Segmentada por niveles, así que HAProxy no puede conectarse a Postgres
- Monitoreo de máquinas/servicios con Netdata agent y conexión con Netdata Cloud para tener una vista general completa
- Balanceo de carga y actualizaciones graduales con HAProxy 2.2
- Replicación por streaming de PostgreSQL 13 desde Primary hacia Standby. Sin failover automático
→ Se puede activar el failover con un solo comando, pero se maneja manualmente
En los servidores de aplicación
- Ejecución de la app en Python de Healthchecks con uWSGI
- Un pequeño programa
hchk, escrito en Go, procesa la API de ping y el correo entrante - NGINX para rate limiting, servir archivos estáticos y reverse proxy (
uWSGIyhchk)
Herramientas SaaS
- AWS S3: almacenamiento de respaldos de la base de datos
- Braintree: pagos y gestión de suscripciones
- Cloudflare: DNS
- Elastic Email: envío de correos transaccionales
- Fastmail: recepción/envío de correos de soporte al cliente
- GitHub: control de versiones y seguimiento; ejecución de pruebas en cada commit con GitHub Actions
- Hardypress: operación del blog del servicio (servicio de hosting estático de WordPress)
- HetrixTools: monitoreo de uptime
- IcoMoon: creación de fuentes de íconos
- pgDash: monitoreo de servidores PostgreSQL
- PingPong: operación de la página de estado del servicio
- SSLMate: aprovisionamiento de certificados desde la línea de comandos
- Syften: alertas cuando se menciona el servicio Healthchecks en HN, Twitter, Reddit, etc.
- Twillio: envío de SMS, alertas por WhatsApp y llamadas
Cron jobs
- Una vez al día, respaldo completo de la base de datos, cifrado con gpg y subida a S3
- Una vez al día, envío de alertas para eliminar usuarios inactivos
- Una vez al día, envío de alertas a suscriptores anuales que renovarán dentro de 1 mes
Entorno de desarrollo
- PC de escritorio + monitor de 27 pulgadas 1440p
- Ubuntu 20.04 + GNOME Shell
- Sublime Text + meld / Sublime Merge
- YubiKeys
- Fabric: ejecución de despliegues y tareas de mantenimiento
- sops: almacenamiento de secretos
- Laptop para emergencias
1 comentarios
Lo que aprendí tras operar un SaaS en solitario durante 1 año
Recomendación de herramientas para desarrolladores de SaaS unipersonal
Retrospectiva de 6 meses operando una startup SaaS unipersonal
El stack de arquitectura de una startup tecnológica unipersonal