A stack técnica do Healthchecks.io, um SaaS de uma pessoa só
(blog.healthchecks.io)Hardware: uso de 9 servidores dedicados da Hetzner: €484/mês
- 4 HAProxy, 3 servidores web, 2 Postgres
Software
- Ubuntu 20.04
- Operação dos serviços com Systemd: haproxy / nginx / postgres
- Rede privada entre servidores com Wireguard. Com segmentação em camadas, o HAProxy não pode se conectar ao Postgres
- Monitoramento de máquinas/serviços com o agente Netdata e integração com o Netdata Cloud para ter uma visão geral completa
- Balanceamento de carga e rolling updates com HAProxy 2.2
- Replicação por streaming do PostgreSQL 13 do Primary para o Standby. Sem failover automático
→ É possível acionar o failover com um único comando, mas o processo é manual
Nos servidores de aplicação
- Execução do app Python do Healthchecks com uWSGI
- Um pequeno programa
hchk, escrito em Go, processa a API de ping e os emails recebidos - NGINX para rate limiting, servir arquivos estáticos e reverse proxy (
uWSGIehchk)
Ferramentas SaaS
- AWS S3: armazenamento dos backups do banco de dados
- Braintree: pagamentos e gerenciamento de assinaturas
- Cloudflare: DNS
- Elastic Email: envio de emails transacionais
- Fastmail: recebimento/envio de emails de suporte ao cliente
- GitHub: controle de versão e tracking, com testes executados a cada commit via GitHub Actions
- Hardypress: operação do blog do serviço (serviço de hospedagem estática de WordPress)
- HetrixTools: monitoramento de uptime
- IcoMoon: criação de fontes de ícones
- pgDash: monitoramento do servidor PostgreSQL
- PingPong: operação da página de status do serviço
- SSLMate: provisionamento de certificados pela linha de comando
- Syften: alertas quando o serviço Healthchecks é mencionado em HN, Twitter, Reddit etc.
- Twillio: envio de SMS, alertas por WhatsApp e telefone
Cron jobs
- Uma vez por dia, faz backup completo do banco, criptografa com gpg e envia para o S3
- Uma vez por dia, envia avisos de exclusão para usuários inativos
- Uma vez por dia, envia avisos para assinantes anuais cuja renovação ocorrerá dentro de 1 mês
Ambiente de desenvolvimento
- PC desktop + monitor 27" 1440p
- Ubuntu 20.04 + GNOME Shell
- Sublime Text + meld / Sublime Merge
- YubiKeys
- Fabric: execução de deploys e tarefas de manutenção
- sops: armazenamento de secrets
- Notebook para emergências
1 comentários
O que aprendi ao operar um SaaS sozinho por 1 ano
Recomendação de ferramentas para desenvolvedores de SaaS solo
Retrospectiva de 6 meses operando uma startup SaaS solo
Stack de arquitetura de uma startup de tecnologia de uma pessoa só