원문 캡처 · github.com
원문 캡처 · github.com

Ployz는 직접 임대한 리눅스 서버에서 앱을 빌드하고 HTTPS 주소를 제공하며, 데이터베이스와 워커도 함께 실행하는 배포 플랫폼이다. 풀 리퀘스트마다 별도의 미리보기 환경을 만들 수 있고, 서버 한 대로 시작해 필요할 때 서버를 추가할 수 있다.

Ployz는 Rust로 만든 엔진과 명령줄 인터페이스(CLI), 데몬을 포함하며 대시보드는 TypeScript로 작성됐다. 프로젝트는 GitHub 저장소에서 확인할 수 있다. Ployz는 소개 페이지에서 여러 호스팅 플랫폼의 작업 방식을 임대한 서버에서 제공한다고 설명하며, 해당 플랫폼들과 제휴 관계는 아니라고 밝혔다.

미리보기 환경과 배포 방식

각 풀 리퀘스트에 독립된 HTTPS 주소를 가진 환경을 만들 수 있다. 데이터베이스 서비스를 복사하면 미리보기 환경에는 별도의 빈 데이터베이스가 생성되고, 설정 명령으로 초기 데이터를 넣는다. 데이터베이스를 공유하도록 두면 미리보기 환경이 운영 데이터를 사용한다. 변경 사항을 병합하면 코드가 운영 환경에 반영되고 미리보기 환경의 설정도 바뀐다. 병합 전에 풀 리퀘스트의 Ployz · ready to merge 확인 항목에서 변경 사항을 살펴볼 수 있다.

대시보드, CLI 또는 에이전트에서 편집한 내용은 초안으로 대기한다. 배포 전에 차이를 확인하고 승인할 수 있다. CLI는 대시보드에서 할 수 있는 작업을 수행하며, --json 옵션을 사용하면 명령 결과를 JSON으로 출력한다. 서비스·볼륨·도메인을 삭제하는 변경은 사람이 승인할 때까지 중단되며, 에이전트는 이를 승인할 수 없다.

ployz server add로 서버를 추가하면 서버들이 WireGuard 네트워크를 공유한다. 서비스 하나는 여러 서버에 걸쳐 최대 50개 복제본으로 실행할 수 있다. 볼륨을 사용하는 서비스는 데이터가 있는 서버에서 실행되며, 기본 복제본 수는 1개다.

Ployz Cloud가 중단되거나 사라져도 서버에서 실행 중인 앱은 계속 작동한다. 엔진과 대시보드는 오픈소스다.

에이전트와 빠른 시작

코딩 에이전트에 다음 내용을 붙여 넣으면 CLI와 Ployz 스킬을 설치하고, 로그인한 뒤 Ployz MCP 도구를 등록한다. 이후 에이전트는 사용자가 직접 실행하는 것과 같은 명령을 사용한다.

Set me up for Ployz: https://ployz.dev/agents.md

저장소에는 운영 환경을 복사해 워커를 별도로 둔 다음 배포하고, 다시 운영 환경으로 변경 사항을 보내는 예시가 있다.

> Copy production with its own worker, deploy it there, then stage it back. $ ployz env branch try-worker --copy worker # Made Branch shop/try-worker of production. $ ployz deploy --env try-worker # 2 deployed · across 1 server $ ployz env sync --env try-worker --to # Synced try-worker → shop/production.

변경 사항은 운영 환경에서 검토하고 배포할 때까지 대기한다.

시작하려면 SSH로 root 접근이 가능한 systemd 기반 리눅스 서버가 필요하다. 자세한 조건은 서버 요구사항에 나와 있다.

  • CLI를 설치한다: curl -fsSL https://ployz.sh | sh
  • Ployz Cloud에 로그인한다: ployz login
  • 앱 디렉터리에서 서버를 지정한다: ployz up --server root@your-server. Ployz가 서버에 설치되고 앱을 빌드한 뒤 HTTPS 주소를 출력한다.
  • 푸시할 때마다 배포하고 풀 리퀘스트마다 초기 데이터가 채워진 데이터베이스를 포함한 미리보기 환경을 만들려면 다음 명령을 사용한다.

`ployz github connect # install the Ployz GitHub App

ployz set shop.repository=you/shop # build from GitHub instead of uploads

ployz deploy

ployz env pr you/shop --on --from production --copy postgres --setup 'shop=pnpm db:seed'`

ployz up은 앱 디렉터리 이름을 서비스 이름으로 사용한다. 위 예에서는 shop이다. 미리보기 환경은 추가해 둔 postgres 서비스를 복사한다. 자세한 내용은 데이터베이스 서비스 안내를 참고할 수 있다.

구성과 운영 조건

각 서버에서는 Docker와 함께 소형 Ployz 데몬이 실행된다. 서버들은 WireGuard 네트워크를 공유하고 서로의 상태를 최신으로 유지한다. 각 서버는 Caddy를 통해 직접 HTTPS를 제공하므로 별도의 로드 밸런서를 임대할 필요가 없다. 대시보드와 CLI가 서버에 실행할 작업을 전달한다. 배포가 끝난 앱은 대시보드와 CLI에 의존하지 않는다.

자동 생성되는 ployz.app 주소에는 Ployz의 DNS가 사용된다. 서버를 가리키는 A 레코드를 설정한 사용자 지정 도메인은 Ployz DNS를 사용하지 않는다.

Ployz는 아직 초기 단계이며 빠르게 바뀌고 있다. 운영 앱을 옮길 수는 있지만, 현재 제공되지 않는 기능을 고려해야 한다. 관리형 백업과 자동 장애 조치가 당장 필요하다면 도입을 기다리는 편이 낫다고 안내한다. 운영 전에는 운영 체크리스트를 확인해야 한다.

  • 운영체제 관리는 사용자가 맡아야 한다. Ployz는 운영체제 업데이트를 설치하지 않는다.
  • 아직 외부 장소에 보관하는 백업은 없다. 볼륨 미러는 다른 서버에 사본을 보관한다. 데이터베이스를 일정에 따라 덤프해 서버 밖에 보관하거나, 기존 호스팅 데이터베이스를 계속 사용해야 한다.
  • 자동 장애 조치는 제공하지 않는다. 서버가 중단되면 그 서버에서만 실행되던 작업도 멈춘다. 다른 서버의 복제본은 계속 실행된다.
  • Docker Compose 파일은 지원하지 않는다. 컨테이너마다 별도 서비스로 추가해야 한다.
  • 알림은 이메일로만 제공된다. 서비스가 중단되거나 충돌하면 Ployz Cloud가 이메일을 보낸다.

향후 외부 백업, 자동 롤백, 중단 시간 없이 데이터베이스를 더 큰 서버로 옮기는 기능을 계획하고 있다.

Ployz는 사용자 소유 서버에서 무료로 사용할 수 있으며 사용자 지정 도메인도 포함된다. 유료 Ployz Cloud 요금제는 추후 제공될 예정이다. 서버 비용은 호스팅 제공업체가 청구한다. 대시보드도 직접 호스팅할 수 있으며, 방법은 dashboard/README.md에 안내돼 있다.

개발과 라이선스

Ployz 소개 페이지에 따르면 에이전트가 대부분의 Ployz를 작성한다. 변경 사항은 작은 풀 리퀘스트로 제출하고, 에이전트는 실제 서버에서 사용자가 할 방식으로 Ployz를 실행해 변경을 입증해야 한다. 이를 보여주지 못하면 병합하지 않는다. 위험도가 낮은 풀 리퀘스트는 검사를 통과하면 병합하며, 오케스트레이터와 네트워킹, 사용자 데이터에 영향을 주는 변경은 먼저 사람이 검토한다. 에이전트의 실수는 린트 규칙이나 테스트로 바꾼다고 설명한다.

버그 제보와 기능 요청은 GitHub Issues에서 받는다. 저장소는 두 프로젝트로 구성된다. 엔진·CLI·데몬을 담은 core/는 Rust로 작성됐고 Apache-2.0 라이선스를 따른다. Ployz Cloud 대시보드인 dashboard/는 TypeScript로 작성됐으며 AGPL-3.0 라이선스를 따른다. 각 README에 빌드 방법이 있다. 라이선스 전문은 core 라이선스와 dashboard 라이선스에서 확인할 수 있다.