백업보다 중요한 복구: 20명에서 100명 규모의 사내 시스템 백업 설계
백업이 성공했다는 알림은 데이터를 되살릴 수 있다는 보증이 아니다. 파일이 손상됐거나, 필요한 암호화 키가 없거나, 복구 순서를 아무도 모르면 백업은 있어도 업무를 재개할 수 없다. 사내 시스템의 백업 설계는 저장 횟수보다 복구 목표와 복원 시험에서 시작해야 한다.
먼저 RPO와 RTO를 정한다
- RPO, 복구 시점 목표: 장애가 나면 최대 몇 분 또는 몇 시간의 데이터를 잃어도 되는가?
- RTO, 복구 시간 목표: 장애 발생 후 몇 시간 안에 업무를 다시 시작해야 하는가?
예를 들어 휴가 신청은 몇 시간 전 데이터로 돌아가도 수기로 보완할 수 있지만, 주문이나 회계 기록은 같은 기준을 적용하기 어렵다. 시스템 전체에 하나의 숫자를 붙이지 말고 업무별로 정한다.
백업 대상은 DB만이 아니다
| 대상 | 반드시 보존할 것 | 복구 때 확인할 것 |
|---|---|---|
| 데이터베이스 | 스키마, 업무 데이터, 권한 정책 | 버전 호환, 확장 기능, 사용자 권한 |
| 객체 저장소 | 원본 파일, 결과 파일, 메타데이터 | DB의 파일 키와 실제 객체 일치 |
| 애플리케이션 | 소스, 이미지, 배포 설정 | 특정 버전을 다시 배포할 수 있는가 |
| 설정과 비밀정보 | 필요한 환경 설정과 키의 안전한 사본 | 접근 권한, 키 교체 여부 |
| 운영 기록 | 복구 절차, 담당자, 최근 시험 결과 | 담당자가 없어도 따라 할 수 있는가 |
소스 저장소는 백업의 일부일 뿐이다. 배포 당시 이미지와 DB 스키마가 맞지 않으면 애플리케이션을 재배포해도 정상 동작하지 않는다. 마이그레이션과 배포 버전을 함께 기록해야 한다.
관리형 백업도 별도 사본이 필요하다
Supabase의 유료 플랜은 자동 일일 백업 보존 기간을 제공하고, 더 짧은 복구 시점이 필요하면 PITR을 선택할 수 있다. 하지만 프로젝트를 삭제하면 해당 프로젝트의 백업도 함께 영구 삭제된다. 무료 프로젝트는 정기적인 논리 백업과 외부 보관이 특히 중요하다. Supabase 데이터베이스 백업
물리 백업이나 PITR을 사용하는 프로젝트는 대시보드에서 내려받는 논리 백업 파일이 없을 수 있다. 이 경우 Supabase CLI의 db dump나 pg_dump로 별도 논리 사본을 만들어야 한다. Supabase 논리 백업 내려받기
R2나 S3의 파일도 같은 계정 안에 복사해 두는 것만으로는 충분하지 않다. 잘못된 삭제 권한이 원본과 복사본에 동시에 적용될 수 있기 때문이다. 보존 잠금, 별도 버킷 또는 별도 계정, 삭제 권한 분리를 조합한다. R2의 Bucket Lock은 정한 기간 동안 객체 삭제를 막을 수 있고, 수명 주기 규칙보다 잠금 규칙이 우선한다. Cloudflare R2 Bucket Lock
인원별 현실적인 운영 단계
20명
- 관리형 DB 자동 백업을 확인한다.
- 주 1회 이상 논리 백업을 다른 저장 위치에 보관한다.
- 중요한 파일은 원본 저장소와 권한이 분리된 위치에 복제한다.
- 분기마다 한 번, 새 환경에 DB와 파일 일부를 복원한다.
50명
- 업무별 RPO와 RTO를 문서화한다.
- 백업 실패, 마지막 성공 시각, 저장 용량을 감시한다.
- 월 1회 복원 시험을 하고 담당자 외 한 명도 절차를 수행해 본다.
- 삭제 사고를 대비해 보존 정책과 관리자 승인 절차를 둔다.
100명
- 핵심 업무에는 PITR이나 더 짧은 백업 간격을 검토한다.
- 운영 계정 침해를 가정해 별도 계정과 별도 자격 증명으로 사본을 보관한다.
- 연 1회 이상 전체 재해 복구 훈련을 하고 실제 RTO를 잰다.
- 복구 중 사용할 임시 업무 절차와 공지 책임자를 정한다.
복원 시험에서 확인할 항목
- 빈 환경에서 시작해 문서만 보고 복구할 수 있는가?
- DB 사용자, 확장 기능, 스토리지 권한까지 돌아오는가?
- 첨부 파일 링크가 깨지지 않는가?
- 복구된 시스템에서 로그인과 핵심 업무가 가능한가?
- 실제 소요 시간이 목표 RTO 안에 들어오는가?
- 복구용 키와 백업에 접근한 기록이 남는가?
좋은 백업은 많은 사본이 아니라, 삭제 사고와 계정 침해를 견디고 정해진 시간 안에 업무를 되살릴 수 있는 사본이다. 마지막 백업 성공 시각보다 마지막 복원 성공 시각을 운영 대시보드에 표시하면 팀의 관심도 자연스럽게 복구 가능성으로 이동한다.
우리 서비스에 적용할 계획이 있으신가요?
클라우드 구축·배포 운영 살펴보기 →함께 읽기
- 20명에서 100명까지, 사내 시스템 배포 아키텍처 설계하기사내 시스템은 직원 수가 적다고 해서 항상 가볍지 않다. 20명이 쓰는 문서 변환 시스템은 100명이 쓰는 단순 결재 시스템보다 더 많은 CPU와 저장 공간을 요구할 수 있다. 그래서 배포 구조는 인원수보다 동시 접속, 요청 시간, 파일 크기, 실시간 연결 수, 장애 허용 시간을 기준으로 정해야 한다.
- VPS를 검토할 신호: 20명에서 100명 규모의 사내 서비스 운영 가이드사내 시스템을 처음 만들 때는 Vercel, Supabase 같은 관리형 서비스를 조합하는 것이 효율적이다. 서버를 직접 관리하지 않아도 되고 사용자가 적은 시기에는 비용도 낮다.
- 직원 20명 사내 시스템, Supabase Micro면 충분할까?사내 시스템을 새로 만들 때 인프라를 처음부터 크게 잡아야 할지 고민하게 됩니다. 특히 Supabase Pro를 검토하면 Micro와 Small의 월 비용 차이는 크지 않지만, 어떤 기준으로 선택해야 하는지는 가격표만 보고 판단하기 어렵습니다.
- 직원 20명에서 50명까지, Vercel과 Supabase 비용은 얼마나 들까?사내 시스템을 만들 때 가장 자주 나오는 질문 중 하나는 "직원 수가 늘어나면 서버 비용도 같은 비율로 늘어나는가"입니다. Vercel과 Supabase 조합에서는 직원 수보다 배포를 관리하는 개발자 수, 동시에 발생하는 요청, 데이터베이스 쿼리와 배치 작업이 비용에 더 큰 영향을 줍니다.
- 사내 시스템 공개 전 확인해야 할 운영 체크리스트 30가지사내 시스템은 외부 고객 서비스보다 사용자가 적다는 이유로 공개 전 점검이 짧아지기 쉽다. 하지만 결재, 계약, 인사, 회계처럼 업무의 기준이 되는 시스템은 한 번의 권한 오류나 데이터 손실도 실제 업무 중단으로 이어진다.