피드로 돌아가기
Building backupctl: what it took to replace a cron job with a backup service
Dev.toDev.to
DevOps

Hexagonal Architecture 기반의 확장형 통합 백업 서비스 구축

Building backupctl: what it took to replace a cron job with a backup service

Vineeth N Krishnan2026년 4월 22일12intermediate

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 등)를 통해 인프라 변경 없이 동작을 제어하는 패턴 적용

원문 읽기