PXFLOW 앱 화면 만들고 배포하기
이 페이지는 Flow 입력과 결과를 사용자용 앱에 배치하고 배포하는 V2 제품 흐름을 설명합니다.
V2 제품 계획
App Builder와 Deployment는 V2 App 전달 계획에 포함됩니다. 이 페이지는 App Builder의 Build·Preview·Deploy 사용 절차와 배포 lifecycle 계약을 정의합니다.
V2 제품 흐름에서는 PXFLOW Studio에서 Flow를 연 뒤 App Builder를 선택하고, 이미 정의한 Flow의 입력과 결과를 사용자용 페이지에 배치한 다음 Preview·검사·배포로 이어집니다.
App Builder UI
| UI 위치 | 여기서 하는 일 | 다음 화면 |
|---|---|---|
| PXFLOW 상단 App Builder → Build | 기존 Flow 입력·결과를 페이지에 배치하고 이름·레이아웃 설정 | 앱 화면 초안 |
| Preview | Desktop·Tablet·Mobile과 선택적 Test run 확인 | 화면 미리 보기와 저장 결과 |
| Deploy | 배포 후보, 필요한 기능, 접근 범위와 실행 환경 검토 | 배포 요청 |
| Deployment history | 현재·이전 배포, 상태와 영향받는 Embed 확인 | 선택한 배포의 상세 상태 |
Builder는 Flow 입력·결과의 이름, 값 종류와 단위를 다시 정의하지 않습니다. 앱 화면 배치는 Builder 또는 작성 원본에서 바꾸고, 계산 자체는 PXFLOW·SDK에서 바꿉니다.
화면에서 앱 만들기
Build
- 페이지를 추가하고 이름을 정합니다.
- 왼쪽 목록에서 사용할 Flow input과 result를 찾습니다.
- 페이지로 끌어 놓습니다.
- 열, 그룹, 너비와 표시 형식을 조정합니다.
- 사용자가 볼 필요가 없는 input이나 result는 앱 화면에서 숨깁니다.
Builder는 Flow가 선언한 type, unit, 기본값과 설명을 그대로 사용합니다. 화면에서는 label과 배치에 집중하면 됩니다.
Preview
- Desktop, Tablet과 Mobile 화면을 확인합니다.
- 필수 input 누락과 type·unit 오류를 확인합니다.
- 입력 값을 편집하는 동안에는 계산을 실행하지 않습니다. Test run을 선택하면 고정된 Flow revision으로 계산을 시작합니다.
- Test run의 상태와 결과는 Preview의 Run detail에서 확인합니다.
Deploy
- 배포할 Workspace와 환경을 확인합니다.
- Public, Anyone with link 또는 Signed in 중 접근 방식을 선택합니다.
- 포함되는 Flow와 설치 기능을 확인합니다.
- 보안, 라이선스와 용량 검사를 실행합니다.
- Request deployment를 선택합니다.
- 상태가 Active가 되면 실행 주소를 열어 배포된 앱을 확인합니다.
목적에 맞는 기능 선택
| 하고 싶은 일 | 사용할 기능 |
|---|---|
| Function package를 다른 개발자가 설치하게 만들기 | pxlab package publish |
| Flow를 사용자용 앱 화면으로 구성하기 | PXFLOW App Builder 또는 @px.app |
| 실행 가능한 주소 만들기 | Builder의 Request deployment |
| 결과를 다른 사람에게 읽기 전용으로 전달하기 | Share → Publish |
| 읽기 전용 Flow 링크나 HTML 삽입 코드 만들기 | Share → Publish / Embed |
입력하고 실행하는 웹 화면이 필요하면 App Deployment를, Flow 구조와 고정 결과만 보여 주려면 읽기 전용 Publication을 사용합니다. 자세한 순서는 PXFLOW 공유·게시·HTML 삽입을 확인하세요.
개발자·배포 기록 참고
배포된 앱의 정확한 상태 확인하기
SDK/API 기술 이름은 DeploymentRevision입니다. 검증을 마친 PXFLOW App candidate를 실행 환경에 올린 변경되지 않는 배포 상태입니다. SDK와 Builder는 앱 화면을 정의하고, Deploy plan·request가 그 정의와 exact Flow·dependency를 고정해 revision을 만듭니다.
| 단계 | 사용자가 작성·실행하는 것 | 화면에서 확인하는 곳 | 만들어지는 것 |
|---|---|---|---|
| 앱 화면 정의 | @px.app source 또는 Builder의 Build | Build canvas와 SDK-linked source diff | App surface definition |
| 후보 고정 | pxlab app build 또는 Builder의 Deploy | candidate의 Flow revision·dependency·digest | immutable App Candidate |
| 영향 검토 | pxlab deploy plan 또는 Builder의 Deploy | environment·access·resource·차단 사유 | Deployment Plan |
| 배포 요청 | pxlab deploy request 또는 Request deployment | 진행 상태와 diagnostic | Active가 되면 새 DeploymentRevision |
| 버전 확인 | pxlab deploy status 또는 Deployment history | Active·Superseded revision과 Embed 영향 | 선택한 exact revision의 상태 |
SDK에서는 기존 Flow의 input과 result를 앱 페이지에 배치합니다.
from pipelinexlab import px
from structural_checks.flows.girder_design import flow as girder_design
@px.app(flow=girder_design, title="Girder design")
def girder_design_app(app: px.App):
main = app.page("main", title="Design")
main.input(girder_design.inputs.span)
main.result(girder_design.results.resistance_summary)@px.app은 Flow interface를 사용하는 App surface definition을 등록합니다. Canvas Node의 배치와 연결은 owning Flow module의 flow.node(...)와 flow.connect(...)가 소유합니다.
같은 정의를 Builder에서 Preview한 뒤 다음 control-plane 명령으로 배포합니다.
pxlab app build . --app girder_design_app --output dist/girder-design-app
pxlab deploy plan dist/girder-design-app \
--workspace civil-team \
--environment production \
--access unlisted
pxlab deploy request <plan_ref> \
--confirm-digest sha256:<reviewed_plan_digest>V2 UI 계약: Deployment history는 revision 번호, 상태, candidate digest, Flow revision과 생성 시각을 한 행에 표시합니다. 행을 열면 고정된 dependency와 해당 revision을 사용하는 Embed를 확인하고, Rollback은 선택한 candidate로 새 배포 요청을 만듭니다.
앱 화면 변경은 owning @px.app source 또는 Builder draft에서 시작합니다. 변경을 검사·빌드하고 새 배포 요청을 완료하면 history에 다음 DeploymentRevision이 추가됩니다.
SDK에서 앱 화면 정의하기
같은 화면을 Python source에서 관리하려면 @px.app을 사용합니다.
from pipelinexlab import px
from structural_checks.flows.girder_design import flow as girder_design
@px.app(
flow=girder_design,
title="Girder design",
description="Enter design data and review the named results.",
)
def girder_design_app(app: px.App):
main = app.page("main", title="Design")
main.input(girder_design.inputs.span)
main.input(girder_design.inputs.design_cases)
main.result(girder_design.results.resistance_summary)
main.result(girder_design.results.governing_utilization)이 decorator는 App surface definition과 Flow interface projection을 등록합니다. Run은 이 정의가 가리키는 saved Flow를 실행합니다.
이 예제에서:
girder_design_app은 앱을 찾는surfaceKey입니다.main은 사용자가 읽을 수 있는 안정적인pageKey입니다.girder_design.inputs.span은 Flow의 exact input을 가리킵니다.girder_design.results.resistance_summary는 Flow의 exact result를 가리킵니다.- 입력의 type과 unit은 Flow 계약에서 그대로 가져옵니다.
SDK App을 Builder에서 열면 SDK-linked 상태입니다. Builder에서 바꾼 내용은 Python source diff로 먼저 표시됩니다.
- Apply를 선택하면 source를 바꾸고 다시 materialize해 같은 화면 정의가 나오는지 검사합니다.
- Cancel을 선택하면 source와 Builder draft를 모두 원래대로 유지합니다.
- source로 안전하게 표현할 수 없는 변경은 PXFLOW-native 사본으로 분리할지 먼저 묻습니다.
CLI로 전체 과정 실행하기
1. 로그인
Cloud Builder와 배포를 사용하려면 로그인합니다.
pxlab auth login --workspace civil-team로그인은 시스템 브라우저에서 완료됩니다. 비밀번호나 token을 command에 붙이지 않습니다.
2. Builder 열기
pxlab app open . --app girder_design_appLocal 앱이 설치되어 있으면 해당 Builder를 엽니다. Local 앱이 없으면 로그인한 Cloud Workspace에서 열 수 있는 주소를 안내합니다.
3. 검사하기
pxlab app check . --app girder_design_app다음을 검사합니다.
- target Flow와 port가 존재하는지
- 외부 화면에서 사용할 수 있는 port인지
- required input과 result projection이 유효한지
- page key가 중복되지 않는지
- layout과 접근성 규칙이 유효한지
- 필요한 Function release와 asset을 찾을 수 있는지
이 명령은 검사 결과만 표시합니다. 계산은 Test run, 배포는 이후 build·plan·request 단계에서 시작합니다.
4. Local Preview
pxlab app preview . --app girder_design_appLocal Preview는 현재 장치에서 화면을 확인합니다. 계산은 Preview 화면의 Test run에서 시작하고, 공개 주소는 Cloud Deployment Request에서 만듭니다.
5. 배포 후보 만들기
pxlab app build . \
--app girder_design_app \
--output dist/girder-design-app배포 후보는 다음을 고정합니다.
- 앱 화면 정의
- Flow revision
- Function package와 dependency
- 필요한 asset
- 각 파일과 계약의 digest
source를 바꿨다면 새 후보를 만들어야 합니다.
6. 배포 계획 확인하기
pxlab deploy plan dist/girder-design-app \
--workspace civil-team \
--environment production \
--access unlistedunlisted는 Builder 화면의 Anyone with link와 같은 접근 방식입니다.
Plan에서 예상 route, 접근 방식, resource, 라이선스, secret requirement와 차단 사유를 검토한 뒤 배포 요청으로 넘어갑니다.
7. 배포 요청하기
Plan 출력에서 검토한 planRef와 digest를 사용합니다.
pxlab deploy request <plan_ref> \
--confirm-digest sha256:<reviewed_plan_digest>Interactive terminal에서는 영향과 digest를 다시 보여 주고 확인을 요청합니다. 확인한 planRef와 digest가 일치할 때 외부 환경 변경을 시작합니다.
8. 상태 확인하기
pxlab deploy status <deployment_request_ref>주요 상태는 다음과 같습니다.
| 상태 | 의미 |
|---|---|
| Requested | 요청이 접수되었습니다. |
| Admitted | 권한·정책·quota 검사를 통과했습니다. |
| Provisioning | 실행 환경을 준비하고 있습니다. |
| Verifying | health와 실행 경로를 확인하고 있습니다. |
| Active | 실행 주소를 사용할 수 있습니다. |
| Rejected | 권한·정책 또는 license 조건을 충족하지 못했습니다. |
| Failed | 준비 또는 검증에 실패했습니다. |
| Cancelled | 진행 중인 요청이 취소되었습니다. |
| Indeterminate | 최종 상태를 확정할 수 없어 다시 조회하거나 지원 정보가 필요합니다. |
9. 취소·내리기·이전 버전 복구
아직 진행 중인 요청을 취소합니다.
pxlab deploy cancel <deployment_request_ref>현재 실행 중인 앱을 내립니다.
pxlab deploy withdraw \
--workspace <workspace_key> --project <project_key> --flow <flow_key> \
--app <surface_key> --environment <environment_key>이전 정상 revision으로 복구 요청을 만듭니다.
pxlab deploy rollback \
--workspace <workspace_key> --project <project_key> --flow <flow_key> \
--app <surface_key> --environment <environment_key> --to-revision <number>Rollback은 이전 후보를 다시 활성화하는 새 요청을 만들고 기존 revision을 보존합니다.
Local과 Cloud의 차이
| 작업 | Local | Cloud |
|---|---|---|
| App check·build | 로그인 없이 가능 | 로그인 없이 Local에서 가능 |
| Preview | Launcher가 Local runtime 관리 | 로그인한 Workspace에서 session 생성 |
| 공개 주소 | Local Preview 주소 사용 | Deployment Request로 실행 주소 생성 |
| 계산 계약 | 같은 Flow와 Function release | 같은 Flow와 Function release |
| 저장 형식 | 같은 .pxflow App Surface | 같은 direct object와 candidate digest |
Local과 Cloud는 같은 앱 화면과 port 의미를 사용합니다. 실제 process와 저장 위치만 host에 따라 달라집니다.
자주 묻는 질문
화면 label과 Flow 계약 바꾸기
Builder에서는 화면 label을 바꿀 수 있습니다. Flow의 portKey, type과 unit을 바꾸려면 Flow source에서 계약을 수정하고 영향을 확인하세요.
배포 후보에 포함되는 범위
배포 후보에는 실행에 필요한 승인된 closure만 포함됩니다. source 공개, 편집 권한과 Library 공개는 각 화면에서 별도로 선택합니다.
App build와 Deployment Request가 필요한 경우
Function package만 배포하는 작업은 package publish에서 끝납니다. 해당 Function을 사용하는 사용자용 PXFLOW 앱 주소를 만들 때 App build와 Deployment Request를 이어서 진행하세요.
Builder와 CLI 중 무엇을 사용해야 하나요?
화면 배치와 Preview는 Builder가 편합니다. 반복 가능한 검사·build·배포 요청과 CI는 CLI가 적합합니다. 둘은 같은 App Surface와 서버 명령을 사용합니다.