하드웨어 : 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 저장
- 응급시 대처용 노트북