자신의 인프라에서 셀프 호스티드 개발 환경을 설정하는 방법 (단계별 가이드)
Source: Dev.to
번역을 진행하려면 번역하고자 하는 전체 텍스트를 제공해 주시겠어요?
텍스트를 주시면 원본 형식과 마크다운을 그대로 유지하면서 한국어로 번역해 드리겠습니다.
사전 요구 사항
시작하기 전에 다음을 확인하세요:
- sudo/root 권한이 있는 Linux 서버 1대(물리 서버 또는 가상 서버)
- 개발 디스크와 스냅샷을 저장할 ZFS 풀이 해당 서버에 구성되어 있음
- 개발자들이 이 서버(또는 앞단에 있는 리버스 프록시)로 네트워크 접근이 가능함
Step 1 – ZFS로 Linux 호스트 준비
-
개발 환경 호스트 역할을 할 깨끗한 Linux 머신부터 시작합니다.
-
Ubuntu, Debian, CentOS와 같은 최신 배포판을 선택하고, 여러 개발 환경을 동시에 실행할 수 있을 만큼 충분한 CPU, RAM, 디스크 공간이 있는지 확인합니다.
-
ZFS가 아직 설치되지 않았다면 설치하고, 개발 작업에 전용된 ZFS 풀을 생성합니다.
# Example: create a pool named "tank" sudo zpool create tank /dev/sdX # Create a dataset for Velovol sudo zfs create tank/velovol -
ZFS는 복사‑쓰기 스냅샷과 효율적인 클로닝을 제공하며, 이는 재현 가능한 개발 환경을 빠르게 구축하는 데 정확히 필요한 기능입니다.
Source: …
Step 2 – Download and Start velovol‑adm
-
Linux 호스트에 Velovol 관리 서비스(
velovol‑adm)를 설치합니다. 이 구성 요소는 프로젝트, 사용자, 기본 디스크, 스냅샷 및 클론을 관리합니다. -
공식 배포 소스에서 바이너리 또는 패키지를 다운로드하고 서버의 적절한 위치에 배치합니다.
-
서비스를 시작합니다. 명령줄에서 직접 실행하거나 systemd 서비스로 구성하여 부팅 시 자동으로 시작되도록 할 수 있습니다.
# Example systemd unit (/etc/systemd/system/velovol-adm.service) [Unit] Description=Velovol Admin Service After=network.target [Service] ExecStart=/usr/local/bin/velovol-adm Restart=on-failure User=root [Install] WantedBy=multi-user.target -
로그(
journalctl -u velovol-adm -f)를 확인하여 서비스가 실행 중인지 검증하고, 웹 UI가 제공되는 경우 브라우저에서 관리 인터페이스를 열어 확인합니다.
Step 3 – 포털 구성
포털은 개발자가 자신의 환경에 접근하는 진입점입니다. 웹 대시보드, SSH 엔드포인트, 혹은 VS Code Remote와 같은 도구와의 통합이 될 수 있습니다.
-
Velovol 관리 인터페이스에서 팀이 선호하는 작업 방식에 맞는 하나 이상의 포털을 설정합니다.
-
예시: 기본 HTTPS URL을 설정하고(예: )
velovol‑adm에 역프록시(예: Nginx 또는 Caddy)를 통해 연결합니다.# Nginx example server { listen 443 ssl; server_name dev.yourcompany.com; ssl_certificate /etc/letsencrypt/live/dev.yourcompany.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/dev.yourcompany.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; # velovol‑adm listening port proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
DNS가 올바르게 설정되고 TLS 인증서가 구성되어 개발자가 자신의 머신에서 포털에 안전하게 접근할 수 있도록 합니다.
Step 4 – Connect Velovol to ZFS Storage
-
Velovol에 ZFS 스토리지를 등록합니다. 이는 시스템에 기본 디스크, 스냅샷 및 복제 디스크를 생성하고 저장할 위치를 알려줍니다.
-
스토리지 구성 섹션에서 Velovol이 사용할 ZFS 풀 또는 데이터셋을 지정합니다. 예:
/tank/velovol. -
프로젝트별 또는 사용자별로 적용할 할당량이나 제한을 지정하고, 필요에 따라 워크로드에 맞게 압축이나 레코드 크기와 같은 ZFS 옵션을 조정합니다.
# Example ZFS options sudo zfs set compression=lz4 tank/velovol sudo zfs set recordsize=128K tank/velovol -
설정이 완료되면 Velovol은 이 ZFS 백엔드를 사용하여 각 개발 환경에 대해 효율적인 copy‑on‑write 볼륨을 생성합니다.
Step 5 – Create a Project
- Velovol 관리자 인터페이스를 엽니다.
- 명확하고 설명적인 이름(예: “Payments Service” 또는 “Monorepo‑Platform”)으로 새 프로젝트를 생성합니다.
- 선택적으로 프로젝트의 목적, 기술 스택, 담당 팀을 설명하는 설명을 추가합니다.
잘 이름이 지정된 프로젝트는 여러 프로젝트와 다수의 사용자를 다룰 때 확장성을 높여줍니다.
6단계 – 사용자 생성 및 역할 할당
-
프로젝트 내에서 접근이 필요한 각 개발자를 위해 사용자 계정을 생성합니다.
-
책임에 따라 역할을 할당합니다:
- Administrators – 기본 디스크와 설정을 관리할 수 있습니다.
- Developers – 환경을 활용할 수 있습니다(스냅샷 및 클론 사용).
이 역할 기반 모델은 팀이 성장함에 따라 환경을 일관되고 안전하게 유지하는 데 도움이 됩니다.
Step 7 – Create a Base Disk (Golden Environment)
- 이 베이스 디스크가 될 새로운 환경을 생성합니다.
- 해당 환경 안에 표준 툴체인(컴파일러, 패키지 매니저, 빌드 도구, 데이터베이스 클라이언트 등)을 설치합니다.
- 메인 저장소(또는 여러 저장소)를 클론하고, 설정 파일을 구성한 뒤, 환경이 애플리케이션을 빌드하고 실행할 수 있도록 초기 설정 스크립트를 실행합니다.
- 모든 것이 만족스럽게 구성되면, 이 환경을 Velovol에 베이스 디스크로 저장하여 템플릿으로 재사용할 수 있게 합니다.
Step 8 – Mount the Base Disk and Start Developing
- 포털이나 관리자 인터페이스에서 개발자는 프로젝트를 선택하고 새 환경의 시작점으로 베이스 디스크를 선택합니다.
- Velovol은 이 디스크(또는 그 위에 쓰기 가능한 레이어)를 마운트하고, 구성된 접근 방식(예: SSH 또는 VS Code Remote)을 통해 노출합니다.
- 개발자는 IDE를 열고 환경에 연결한 뒤 작업을 시작합니다.
기본 데이터가 ZFS 스냅샷 및 클론을 통해 공유되기 때문에, 각 개발자는 가볍고 쓰기 가능한 워크스페이스를 얻으며 스토리지 사용량은 최소로 유지됩니다.
🎉 You’re all set!
이제 ZFS와 Velovol이 구동하는 완전한 자체 호스팅 개발 환경 플랫폼을 갖추었습니다. 개발자는 몇 초 만에 격리된 재현 가능한 환경을 띄울 수 있고, 관리자는 리소스, 스냅샷 및 보안에 대한 세밀한 제어를 유지합니다.
추가 읽기, 문제 해결 또는 고급 구성에 대해서는 공식 Velovol 문서를 참조하십시오 .
단계 9 – 마운트 해제 및 스냅샷 생성
환경을 원하는 상태(예: 특정 의존성을 추가하거나 프로젝트 설정을 맞춤화)로 구성한 후, 해당 상태를 스냅샷으로 캡처할 수 있습니다. 스냅샷은 ZFS가 빠르고 효율적으로 만들 수 있는 시점‑특정, 읽기 전용 디스크 복사본입니다.
- 모든 중요한 데이터가 디스크에 기록되었고, 중요한 프로세스가 실행 중이지 않은지 확인합니다.
- Velovol 인터페이스에서 환경을 마운트 해제하거나 실행 중인 세션을 중지합니다.
- 디스크의 스냅샷을 생성합니다.
스냅샷은 언제든지 롤백하거나 새로운 복제 환경의 소스로 사용할 수 있는 안정적인 기준점이 되며, 기본 데이터를 모두 복제할 필요가 없습니다.
Step 10 – 다른 사용자용 스냅샷 복제
이 설정의 진정한 힘은 다른 개발자를 위해 스냅샷을 복제할 때 발휘됩니다. 각 사람이 직접 환경을 설정하는 대신, 하나의 스냅샷을 만들고 필요에 따라 여러 번 복제합니다.
- 관리자에서