28 pontos por xguru 2022-05-30 | 1 comentários | Compartilhar no WhatsApp

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 (uWSGI e hchk)

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