모든 셀프 호스팅 설치본에는 워커를 AWS microVM에서 실행하든 평가용으로 같은 컴퓨터에서 실행하든 라이선스 토큰이 필요합니다. 라이선스 하나는 설치본 하나에 해당합니다. 웹사이트에서 직접 라이선스를 구매할 수 있으며, 별도 계약에 따라 Ephemeral이 조직에 사용 허용량을 부여할 수도 있습니다.
라이선스 동작 방식
- 소유자 또는 관리자가 고객 포털의 배포를 열어 월간 또는 연간 결제, 설치 수, 추가 실행 블록을 선택하고, 셀프 호스팅 라이선스 계약에 동의한 뒤 Stripe로 결제합니다. 결제가 완료되면 라이선스가 바로 활성화됩니다. 별도 계약을 맺은 조직은 대신 Ephemeral에서 허용량을 받으므로 이 단계를 건너뜁니다.
- 소유자나 관리자가 배포에서 이름으로 각 설치본을 등록합니다. 머신 ID와 라이선스 토큰은 Ephemeral이 만들며, 토큰은 한 번만 표시됩니다. 라이선스 파일 다운로드 버튼으로 토큰, 머신 ID, 배포 ID를 저장할 수 있습니다.
- 설치본에는
EPHEMERAL_LICENSE_TOKEN,EPHEMERAL_MACHINE_ID,EPHEMERAL_CUSTOMER_URL=https://ephemer.al을 설정합니다. 설치본은 시작할 때와 작업을 실행하기 전에 Ephemeral에서 토큰을 검증합니다. 같은 배포 ID와 토큰으로 이미지 레지스트리에도 로그인합니다(셀프 호스팅 참고).
배포를 등록하는 것은 라이선스 작업일 뿐입니다. 인프라를 만들거나, 시작하거나, 중지하지 않습니다. 인프라는 셀프 호스팅에 설명된 대로 직접 설치하고 업데이트합니다.
요금제와 라이선스에 포함된 내용
| 구성 | 월간 | 연간 |
|---|---|---|
| 기본 요금제: 설치 1개와 월 100,000회 실행 | $5,000 | $50,000 |
| 추가 설치 1개당 | $2,500 | $25,000 |
| 월 100,000회 실행 추가 1블록당 | $1,000 | $10,000 |
기본 요금제에는 설치 1개와 월 100,000회 실행이 포함됩니다. 필요에 따라 설치와 100,000회 단위의 실행 블록을 추가할 수 있습니다. 예를 들어 기본 요금제에 추가 설치 2개와 추가 블록 3개를 더하면 설치 3개가 월 400,000회 실행을 공유하며, $5,000 + 2 × $2,500 + 3 × $1,000 = 월 $13,000(연간 결제 시 $130,000)입니다.
실행 횟수는 풀로 묶입니다. 월간 실행 횟수는 조직의 것이며 모든 설치가 함께 사용하고, 설치 간 배분은 상관없습니다. 모든 설치에서 동시 실행 20개를 허용하며 모든 업데이트와 이메일 지원이 포함됩니다. 더 큰 허용량은 별도 계약으로 제공됩니다. 문의해 주세요. 가격에는 세금이 포함되어 있지 않습니다. 구독은 취소하기 전까지 자동으로 갱신됩니다.
변경, 취소, 결제 실패
- 배포 페이지의 구독 관리를 누르면 Stripe 결제 포털이 열리며, 소유자와 관리자가 카드 업데이트, 청구서 다운로드, 취소를 할 수 있습니다.
- 취소는 결제한 기간이 끝날 때 적용됩니다. 그때까지 설치본은 계속 작동합니다.
- 요금제 변경: 배포 페이지의 요금제 변경에서 설치 수와 추가 실행 블록 수를 바꿀 수 있습니다. Stripe가 해당 기간의 남은 부분을 일할 계산하며, 이전의 라이선스당 가격 구독은 기본 요금제와 추가 항목으로 변환됩니다.
- 설치 줄이기는 등록된 설치가 새 수보다 많으면 거부됩니다. 먼저 일부를 비활성화하세요. 실행 블록을 줄이면 공유 월간 실행 횟수가 즉시 줄어듭니다.
- 결제 실패가 발생해도 설치본이 바로 중단되지는 않습니다. Stripe가 결제를 재시도하며, 마지막으로 결제한 기간이 끝난 뒤 7일까지 라이선스는 유효합니다. 그래도 결제되지 않으면 라이선스가 만료되고 설치본의 검증이 중단됩니다. 나중에 결제하면 복구됩니다.
- 라이선스가 끝나면 토큰과 레지스트리 로그인이 작동하지 않습니다. 데이터는 처음부터 Ephemeral에 없었으며 사용자의 설치본에 그대로 남습니다.
사용 권한 확인
/v1/organizations/{id}/licenseentitlement(조직에 없으면 null)와 그 현재 사용량, 구매한 라이선스의 subscription(상태, 주기, 수량, paid_through), 웹사이트가 구매를 안내하는 데 쓰는 sales 정보를 반환합니다.max_deploymentsintegermax_concurrencyintegermax_runs_per_monthintegerpooledbooleanpooled_runs_per_monthintegerruns_used_this_monthintegerexpires_attimestampstatusstringactive 또는 expired.sourcestringsubscription은 직접 구매한 라이선스, operator는 Ephemeral이 부여한 허용량.active_deploymentsintegeravailable_deploymentsintegersubscription에는 installations, run_blocks(추가 실행 블록 수), pooled_runs_per_month도 포함됩니다.
/v1/organizations/{id}/license/plan409를 반환합니다.installationsinteger필수extra_run_blocksinteger설치본 등록
/v1/organizations/{id}/deploymentsnamestring필수machine_idstring{
"id": "dep_2c8f0e6a4b1d9375c0e8a2f4b6d1c3e5",
"name": "production-eu",
"machine_id": "mch_3f9a0c1e7b2d4a6c8e10",
"token": "lic_…",
"max_concurrency": 4,
"max_runs_per_month": 20000,
"expires_at": "2027-09-30T00:00:00Z"
}조직에 활성 라이선스가 없으면 등록이 403으로 실패하고, 허용된 배포가 모두 등록되어 있으면 409로 실패합니다.
목록 조회와 비활성화
/v1/organizations/{id}/deploymentsid, name, machine_id, max_concurrency, max_runs_per_month, expires_at, revoked와 함께 나열합니다./v1/organizations/{id}/deployments/{deployment_id}설치본이 적용하는 규칙
| 검사 | 효과 |
|---|---|
| 시작 시 | 유효한 토큰과 머신 ID가 없거나, 설정된 동시 실행 수가 라이선스를 초과하면 엔진이 시작되지 않습니다. |
| 실행 전 | 라이선스를 다시 확인하며, 최대 30초간 캐시된 결과를 사용합니다. 더 이상 유효하지 않으면 실행이 실패합니다. |
| 월간 실행 | 그 달의 허용량을 모두 사용하면 다음 달까지 POST /v1/runs가 402를 반환합니다. 구독의 경우 허용량은 모든 설치가 공유하는 풀입니다(아래 참조). |
풀 적용 방식: 각 설치는 라이선스를 검증할 때마다(실행을 시작하는 동안 최대 30초마다) 이번 달에 시작한 실행 횟수를 보고합니다. Ephemeral은 그 설치의 이번 달 실행 횟수에 풀의 남은 양을 더한 값을 한도로 응답하므로, 조직 전체가 허용량 안에 머뭅니다. 설치는 30초마다 갱신하므로 풀을 잠시 초과할 수 있으며, 초과량은 모든 설치가 약 1분 동안 시작한 실행 횟수를 넘지 않습니다. 풀 도입 이전 릴리스를 쓰는 설치는 보고하지 않으며, 풀을 균등하게 나눈 몫을 받습니다.
적용되는 한도는 등록에 기록된 값과 현재 사용 권한의 값 중 낮은 쪽이므로, 사용 권한이 줄어들면 다시 등록하지 않아도 바로 적용됩니다. Ephemeral이 사용 권한을 갱신하면 기존 등록은 새 만료일과 한도를 받고 토큰은 그대로 유지됩니다. 사용 권한을 폐기하면 그 아래의 모든 등록이 폐기됩니다.