피드로 돌아가기
Dev.toDevOps
원문 읽기
Hexagonal Architecture 기반의 확장형 통합 백업 서비스 구축
Building backupctl: what it took to replace a cron job with a backup service
AI 요약
Context
개별 프로젝트마다 파편화된 Shell Script와 Cron Job 기반의 백업 환경으로 인한 관리 복잡도 증가. 프로젝트 확장 시 환경 변수 관리 부재 및 암호화 설정 누락 등 휴먼 에러 발생 가능성이 높은 구조적 한계 노출.
Technical Solution
- NestJS 프레임워크 채택을 통한 개발 속도 확보 및 서비스 구조 표준화
- Hexagonal Architecture 적용으로 비즈니스 로직과 외부 도구(pg_dump, GPG, Restic 등)의 완전한 분리
- Adapter 패턴을 통한 데이터베이스 타입(PostgreSQL, MySQL, MongoDB) 및 알림 채널의 유연한 확장 구조 설계
- YAML 기반 선언적 설정을 통한 프로젝트별 백업 대상, 스케줄, 저장소 경로의 단일 관리 지점 구축
- Audit Log 및 Uptime Kuma 연동을 통한 백업 성공 여부의 실시간 모니터링 체계 마련
- Domain Layer의 독립성 유지로 CLI, HTTP, Scheduler 등 다양한 진입점(Driving Adapter)에 대응 가능한 구조 구현
실천 포인트
1. 외부 도구 의존성이 높은 기능 설계 시 Wrapper 클래스를 통한 인터페이스 추상화 검토
2. 단순 Append-only 데이터 저장소에는 운영 오버헤드가 큰 RDBMS보다 SQLite 같은 경량 DB 우선 고려
3. 설정 파일의 선언적 구조(YAML 등)를 통해 인프라 변경 없이 동작을 제어하는 패턴 적용