28P by xguru 2022-05-30 | favorite | 댓글 1개

하드웨어 : Hetzner의 Dedi 서버 9대 사용 : 월 €484

  • HAProxy 4대, 웹 서버 3대 , Postgres 2대

소프트웨어

  • Ubuntu 20.04
  • Systemd로 서비스 운용 : haproxy / nginx / postgres
  • Wireguard로 서버간 사설 네트워킹. 티어링 하여 HAProxy는 Postgres에 연결 불가
  • Netdata agent로 머신/서비스 모니터링하고 Netdata Cloud에 연동해서 전체 오버뷰 가능
  • HAProxy 2.2로 로드밸런싱 및 롤링업데이트
  • PostgreSQL 13으로 Primary 에서 Standby로 스트리밍 복제. 자동 failover 없음
    → 싱글 커맨드로 페일오버 트리거링 가능하지만 매뉴얼로 처리

앱 서버 에선

  • uWSGI 로 Healthchecks 파이썬 앱 실행
  • Go 작성된 작은 hchk 프로그램이 ping API 및 inbound email 처리
  • NGINX로 Rate limiting, 정적 파일 서빙, 리버스 프록시(uWSGI 와 hchk)

SaaS 도구

  • AWS S3 : DB 백업 저장
  • Braintree : 결제 및 구독 관리
  • Cloudflare : DNS
  • Elastic Email : 트랜잭션 메일 전송
  • Fastmail : 고객지원 메일 수신/발신
  • GitHub : 버전 관리 및 트래킹, GitHub Actions로 커밋마다 테스트 실행
  • Hardypress : 서비스 블로그 운영(스태틱한 워드프레스 호스팅 서비스)
  • HetrixTools : 업타임 모니터링
  • IcoMoon : 아이콘 폰트 저작
  • pgDash : PostgreSQL 서버 모니터링
  • PingPong : 서비스 상태 페이지 운영
  • SSLMate : 커맨드라인에서 Certificate Provisioning 가능
  • Syften : HN, Twitter, Reddit 등에서 Healthchecks 서비스가 거론되면 알림 받기
  • Twillio : SMS 전송, Whatsapp 및 전화 알림

Cron jobs

  • 하루에 한번 전체 DB 백업해서, gpg로 암호화후 S3에 업로드
  • 하루에 한번 비활성 사용자 삭제 알림 전송
  • 하루에 한번 년간 구독자들 중 1개월 내 갱신될 사용자들 알림 전송

개발 환경

  • 데스크탑 PC + 27인치 1440p 모니터
  • Ubuntu 20.04 + GNOME shell
  • Sublime Text + meld / Sublime Merge
  • Yubikeys
  • Fabric : 배포 및 메인터넌스 작업 실행
  • sops : Secret 저장
  • 응급시 대처용 노트북