28 puntos por xguru 2022-05-30 | 1 comentarios | Compartir por WhatsApp

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

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