프로비저닝 완료 후 테넌트 URL 테스트 기획서
목적: www 데모 위저드 7단계에서 안내되는 테넌트 URL(https://{subdomain}.pregoi.com)을 사용자·운영자가 검증할 수 있는 방법을 요건과 시나리오로 정리한다.
코드 생성 없음 — 기획·요건·테스트 관점만 정의.
참조: tenant-onboarding-demo-www-plan.md §13(위저드 7단계), tenant-onboarding-flow.md, provision-tenant-pipeline.md.
1. 배경·검증 대상
| 항목 | 내용 |
|---|---|
| 테넌트 URL | 프로비저닝 완료 시 Control Plane 콜백의 origin_url = https://{subdomain_slug}.pregoi.com (또는 subdomain_name). |
| 노출 위치 | www 위저드 7단계: “테넌트가 준비되었습니다” 후 「테넌트 열기」 버튼(#origin-url-link)에 href=origin_url로 설정됨. |
| 검증 목표 | 해당 URL이 DNS·TLS·라우팅·Frappe 사이트까지 정상 동작하는지 확인. |
2. 테스트 관점(검증 항목)
테넌트 URL을 “테스트한다”는 것을 아래 관점으로 나눈다.
| 관점 | 검증 내용 | 비고 |
|---|---|---|
| DNS | {subdomain}.pregoi.com이 올바른 CNAME/canonical로 해석되는지. | dig/nslookup 또는 공개 DNS 검사. |
| TLS | HTTPS 인증서가 유효한지, 만료·호스트명 불일치 없는지. | 브라우저·curl -v·openssl. |
| 도달성 | GET 요청 시 2xx 또는 로그인 리다이렉트 등 “사이트 응답”이 오는지. | 5xx·타임아웃이 아니면 통과로 간주 가능. |
| Frappe 사이트 | 해당 호스트로 Frappe 로그인/대시보드 또는 API가 동작하는지. | 실제 사용자 시나리오. |
| 라우팅·KV | Zuplo/Worker가 hostname → origin 매핑을 올바르게 하는지. | TENANT_ORIGINS KV·프록시 설정 반영 여부. |
3. 테스트 수행 주체·시나리오
| 주체 | 시나리오 | 상세 |
|---|---|---|
| 최종 사용자 | www 7단계에서 링크 클릭 후 브라우저로 접속. | 「테넌트 열기」 클릭 → 새 탭/같은 탭에서 URL 이동 → 로그인 화면 또는 대시보드 확인. 수동·체감 테스트. |
| 운영자·QA | URL을 복사해 브라우저·curl·스크립트로 반복 검증. | Runbook에 “프로비저닝 완료 후 확인” 절차로 문서화. |
| 자동화(선택) | CI/스크립트에서 job_id → GET /v1/jobs/:id로 origin_url 획득 후 HTTP GET·헬스체크. | 프로비저닝 파이프라인 후단 또는 별도 스케줄 job. |
4. www 측 테스트 진입점(요건)
현행 www는 7단계에서 「테넌트 열기」 한 개 링크만 제공한다. 아래는 “URL 테스트”를 쉽게 하기 위한 기획 요건이다(구현 범위는 별도 결정).
| 요건 | 설명 | 우선순위 |
|---|---|---|
| 링크 클릭으로 테스트 | 「테넌트 열기」를 새 탭에서 열기(target="_blank")로 하면, www 페이지는 유지한 채 테넌트 사이트만 확인 가능. | 높음(간단 변경) |
| URL 복사 | 7단계에 “URL 복사” 버튼 또는 주소 텍스트 표시. 운영자·문서화·다른 도구에서 재사용 가능. | 중간 |
| 테스트 결과 안내 | “연결이 안 되면 DNS 전파에 수 분 걸릴 수 있습니다” 등 짧은 안내 문구. | 낮음 |
| 빠른 재검사 | 7단계에 “다시 확인” 버튼 → 동일 origin_url로 재요청(HEAD/GET) 후 성공/실패 표시. (구현 시 CORS·프록시 고려.) | 선택 |
| 관리자 전용 “URL 검사” 페이지 | job_id 또는 tenant_id 입력 시 Control Plane·GET /v1/jobs/:id로 origin_url 조회 후, 서버/프록시에서 해당 URL HEAD 요청해 결과 반환. Runbook·수동 검증용. | 선택 |
5. 수동 테스트 절차(Runbook용 요약)
운영자·QA가 “생성된 URL을 테스트한다”고 할 때 따를 수 있는 순서.
-
URL 확보
- www 7단계에서 「테넌트 열기」 우클릭 → 링크 주소 복사, 또는
- Control Plane:
GET /v1/jobs/:job_id응답의origin_url사용 (또는 D1/내부 API로 tenant_id → origin_url 조회).
-
DNS 확인 (선택)
dig {subdomain}.pregoi.com또는nslookup {subdomain}.pregoi.com- CNAME이 canonical 또는 오리진으로 향하는지 확인.
-
HTTPS 접속
- 브라우저 주소창에 URL 입력 후 접속.
- 기대: 로그인 페이지 또는 Frappe 대시보드(또는 302 로그인 리다이렉트).
- 실패: 5xx, 타임아웃, 인증서 오류 → tenant-onboarding-flow §4 장애 확인 순서 참고.
-
curl로 도달성만 확인 (선택)
curl -sI "https://{subdomain}.pregoi.com"- 2xx 또는 302면 “도달 가능”으로 간주.
6. 자동화·CI(선택 요건)
| 항목 | 내용 |
|---|---|
| 프로비저닝 후 스모크 | workflow_dispatch → Ansible·콜백 완료 후, 동일 워크플로 또는 별도 job에서 origin_url로 GET/HEAD 요청. 실패 시 알림·실패 표시. |
| 주기적 헬스체크 | 이미 운영 중인 테넌트 목록(tenant_runtime·D1)의 origin_url을 주기적으로 GET. 5xx 비율·응답 시간 수집. (기존 모니터링·§16 연동 검토.) |
| 데이터 소스 | origin_url은 GET /v1/jobs/:id(완료 후) 또는 내부 API·D1 tenant_runtime에서 조회. |
7. 장애 시 확인 순서와의 연계
URL 테스트 실패 시 tenant-onboarding-flow.md §4와 연결:
- 링크 클릭 시 5xx/타임아웃 → DNS 전파 지연, Cloudflare DNS·TENANT_ORIGINS KV 미반영, Tunnel/오리진 다운 등 순으로 확인.
- 인증서 오류 → 해당 도메인에 대한 TLS 설정·프록시 확인.
- 404/잘못된 페이지 → Frappe site_name·Host 헤더·Zuplo 라우팅 확인.
8. 구현 체크리스트(추후 적용 시)
- www 7단계: 「테넌트 열기」 링크에
target="_blank"적용 (새 탭에서 테스트). - www 7단계: URL 텍스트 표시 또는 “URL 복사” 버튼 (선택).
- www 7단계 또는 Runbook: “연결이 안 되면 수 분 기다려 보세요” 등 안내 문구 (선택).
- Runbook: “프로비저닝 완료 후 테넌트 URL 확인” 절차에 §5 수동 절차 반영 (선택).
- 프로비저닝 파이프라인 후 origin_url 스모크 테스트 단계 (선택).
- 관리자용 “URL 검사” 페이지 또는 API (선택).
9. 참조 문서
| 문서 | 용도 |
|---|---|
| tenant-onboarding-demo-www-plan.md | 위저드 7단계·origin_url 안내. |
| tenant-onboarding-flow.md | 장애 시 확인 순서. |
| provision-tenant-pipeline.md | 콜백·origin_url 전달. |