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

기숙사 서버는 잠을 자거나 공부하고 화상 통화를 할 때 방해되지 않을 만큼 조용하게 작동할 수 있을까요?
네, 전력 소비가 적은 하드웨어를 사용하고, 저장 장치의 진동을 제어하며, 부하가 큰 작업은 예약하고, 방 안에서 소음을 확인하면 기숙사 서버를 조용히 사용할 수 있습니다.

기숙사에서 첫 자취방으로 옮겨갈 수 있는 학생용 홈랩
서비스를 특정 공간의 네트워크 환경과 분리하고, 하드웨어를 최소화하며, 상태를 백업하고, 깔끔하게 이전하는 과정을 미리 연습해 학생용 홈랩을 휴대하기 편하게 유지하세요.

계정이나 개인 파일을 공유하지 않고 룸메이트와 하나의 홈 서버를 공유하는 방법
모든 룸메이트에게 이름이 부여된 계정과 개인 저장 공간을 제공하고, 필요한 공유 역할만 부여하세요. 관리, 백업, 계정 정리는 별도로 처리하세요.



