피드로 돌아가기
Dev.toInfrastructure
원문 읽기
분산 환경 백업 관리, gRPC 스트림 기반의 중앙 집중형 아키텍처로 해결
Why I built a self-hosted centralized backup manager
AI 요약
Context
개별 서버마다 백업 툴을 설치하여 관리하는 분산형 구조의 한계. 통합 가시성 부족과 OIDC 기반 SSO 적용의 어려움 발생. ISO 27001 준수를 위한 중앙 제어 및 추적 가능성 확보 필요.
Technical Solution
- Server-Agent 모델을 도입하여 제어 평면(Control Plane)과 실행 평면을 분리한 설계
- Agent가 Server로 아웃바운드 연결을 유지하는 gRPC persistent stream 방식 채택으로 인바운드 포트 개방 없는 보안 구조 구현
- Restic을 백업 엔진으로 활용하고 Agent가 이를 래핑하여 런타임 로그 및 메트릭을 실시간 스트리밍하는 관찰 가능성 확보
- Docker API를 통해 컨테이너 볼륨 마운트 경로를 동적으로 분석하여 백업 대상으로 자동 지정하는 로직 구현
- OIDC(Authorization Code + PKCE) 및 JWT(RS256) 기반 인증 체계를 구축하여 Zitadel, Keycloak 등 외부 IDP와 통합
- Go 언어 기반의 백엔드와 Vue 3 PWA 프론트엔드를 단일 바이너리로 임베딩하여 배포 단순화
Key Takeaway
에이전트의 아웃바운드 연결 방식을 통해 NAT/VPN 환경의 네트워크 제약을 극복하고 중앙 집중식 제어권을 확보하는 설계 전략.
실천 포인트
다수 서버의 백업 가시성 확보가 필요할 때, SSH 기반 원격 실행보다 gRPC 스트림 기반의 에이전트 모델을 우선 검토할 것