셀프 호스팅 개발에는 별도의 스토리지 계획이 필요합니다. 소스, 데이터베이스, 아티팩트, 캐시, 백업은 각각 내구성과 성능 요구 사항이 다르기 때문입니다.
실험 단계에서는 하나의 대용량 디렉터리로도 운영할 수 있지만, 이렇게 하면 용량 알림, 스냅샷, 권한, 마이그레이션, 복구 기준이 모호해집니다. 호스트를 재구축한 뒤에도 유지해야 하는 상태와 코드에서 다시 생성할 수 있는 데이터를 구분해야 합니다.
재구축 가능성에 따라 데이터 분류
소스 저장소, 데이터베이스 상태, 업로드된 테스트 데이터, 컨테이너 레지스트리 레이어, 패키지 캐시, 빌드 출력물, 로그, 시크릿, 백업 내보내기를 분리하세요. 각각에 담당자와 손실 영향을 지정하세요.
역할 기반 홈랩 스토리지 설계도 같은 원칙을 사용합니다. 부팅, 애플리케이션 상태, 대용량 데이터, 백업은 같은 하드웨어를 공유한다는 이유만으로 하나의 정책을 적용해서는 안 됩니다.
소스는 이미 원격 Git 오리진에 있을 수 있지만, 푸시하지 않은 브랜치는 그렇지 않을 수 있습니다. 레지스트리 레이어는 다시 빌드할 수 있지만, 비공개 기본 이미지는 그렇지 않을 수 있습니다. 디스크를 선택하기 전에 이러한 차이를 문서화하세요.
활성 상태와 대용량 아티팩트를 의도적으로 배치
| 데이터 역할 | 권장 배치 | 이유 |
|---|---|---|
| 데이터베이스 | 지연 시간이 낮고 보호되는 볼륨 | 변경 가능하며 일관성에 민감함 |
| Git 저장소 | 보호되는 볼륨과 원격 미러 | 작지만 가치가 높은 이력 |
| 레지스트리 | 보존 정책이 적용된 용량 계층 | 크기가 크고 일부는 다시 생성 가능함 |
| 빌드 캐시 | 용량이 제한된 고속 스크래치 영역 | 변경이 잦고 삭제 가능함 |
| 백업 | 독립된 대상 | 기본 스토리지 장애에도 남아 있어야 함 |
데이터베이스 파일과 대규모 빌드 캐시 변경 데이터를 동일한 무제한 용량 규칙 아래에 두지 마세요. 데이터베이스 볼륨이 가득 찼을 때 캐시 정리가 긴급 대응책이 되어서는 안 됩니다.
모든 역할이 하나의 물리적 풀에 있더라도 할당량이나 별도의 데이터셋을 사용하세요. 논리적 분리를 통해 스냅샷, 권한, 복구 순서를 명확히 할 수 있습니다.
개발자 액세스와 서비스 ID 분리
개발자에게는 저장소, 미리보기, 데이터베이스 액세스가 필요하고, 빌드 러너에는 더 제한된 쓰기 경로가 필요하며, 백업 작업에는 읽기 권한과 보호된 대상 하나가 필요합니다. 이러한 역할에서 호스트 관리자 계정을 공유하지 마세요.
노트북에서 마운트하는 경로에는 컨테이너 엔진의 전체 데이터 루트가 아니라 프로젝트 데이터만 노출해야 합니다. 클라이언트와 ID 모델에 따라 SMB 또는 NFS를 선택하세요. 다음 결정을 위해 이 SMB와 NFS 비교 가이드를 참고할 수 있습니다.
시크릿은 소스 저장소와 재구축 가능한 캐시 외부에 저장하세요. 개발 서버 없이도 접근할 수 있는 곳에 암호화된 복구 자료를 보관하세요.
애플리케이션 일관성을 중심으로 백업 설계
Git 저장소, 데이터베이스 기본 덤프, 배포 정의, 시크릿 참조, 대체할 수 없는 업로드 파일을 백업하세요. 공개 이미지와 다시 생성할 수 있는 빌드 아티팩트에 동일한 보존 예산을 사용하지 마세요.
컨테이너 복구 워크플로는 Compose 파일, 볼륨, 시크릿이 서로 다른 복구 객체임을 보여줍니다. 호스트 전체를 무작정 스냅샷하는 대신 이를 의도적으로 수집하세요.
저장소 하나와 데이터베이스 하나를 격리된 테스트 환경에 복구하세요. 백업이 성공했다고 판단하기 전에 사용자, 확장 기능, 권한, 애플리케이션 시작을 검증하세요.
폴더 크기가 아니라 역할에 따라 확장
데이터베이스 또는 빌드 지연 시간이 병목이 되면 고속 스토리지를 추가하세요. 레지스트리와 데이터셋이 커지면 용량 스토리지를 추가하세요. 실험적 워크로드가 안정적인 서비스 영역을 위협하면 두 번째 호스트를 추가하세요.
여유 공간, 스냅샷 증가량, 데이터베이스 지연 시간, 캐시 변경량, 백업 소요 시간을 각각 모니터링하세요. 단일 풀 사용률만으로는 어떤 역할을 변경해야 하는지 알 수 없습니다.
한 번의 정리, 업데이트, 권한 오류로 운영 상태와 복구 사본이 모두 삭제될 수 있다면 통합을 중단하세요. 빈 호스트가 정의 파일과 보호된 상태만으로 서비스를 재생성할 수 있을 때 스토리지 계획은 성공한 것입니다.
최종 설정 원칙
모든 서비스에 명확한 역할, 보호되는 상태, 통제된 액세스 경로, 검증된 복구 절차, 토폴로지를 분리하거나 확장해야 하는 시점을 판단할 수 있는 측정 가능한 기준이 있다면 설정이 제대로 된 것입니다.
NAS 및 서버 설정
더 읽어보기

연구 논문, 노트 및 개인 문서를 위한 로컬 RAG 설정
원본 문서를 권위 있는 자료로 유지하고, 색인 작업을 반복 가능하게 만들며, 인용을 필수로 하고, 교체 가능한 모델과 비공개 소스 데이터를 분리하세요.

개발자들은 왜 프라이빗 DNS, VPN, 테스트 앱에 게이트웨이 노드를 사용할까요?
게이트웨이 노드는 비공개 앱에 하나의 통제된 이름과 접근 경로를 제공하고, 컴퓨팅 노드는 외부에 노출되지 않은 채 교체할 수 있습니다.

Compose 파일, 시크릿, 영구 데이터를 분리해 재현 가능한 앱 스택을 구축하는 방법
Compose 정의를 이식 가능하게 유지하고, 비밀 정보를 보호하며, 앱 데이터를 독립적으로 백업하여 깨끗한 호스트에서 스택을 다시 구축할 수 있도록 하세요.

