RStudio Workbench, Shiny와 보고서
RStudio Workbench를 사용하려면 플랫폼 관리자가 Control Panel에 운영 라이선스를 구성해야 합니다. 관리자가 라이선스를 설정할 수 없으면 Palantir Support에 문의합니다.
작업공간은 Palantir R SDK의 표/파일 읽기와 쓰기, CRAN/Posit Package Manager/Bioconductor 패키지, Shiny 앱과 R transform 게시를 지원합니다. 데이터 접근의 별칭과 권한 조건을 따릅니다.
Shiny 앱 게시
RStudio의 기본 앱 위치는 /home/user이지만 Foundry에서 세션 사이에 보존하고 게시할 앱은 /home/user/repo의 Git 저장소 안에 두어야 합니다.
- Publish application을 선택하고 Files and Projects의 게시 위치를 정합니다.
- 새 app.R을 만들 디렉터리를 저장소 루트 기준으로 입력합니다. 비워 두면 저장소 루트에 만듭니다.
- 필요하면 Advanced 설정을 바꿉니다. 기본으로 RStudio 작업공간 설정을 사용합니다.
- Publish and sync로 앱 등록과 코드 동기화를 수행합니다.
- CI 및 게시 완료 후 Applications의 링크로 엽니다.
게시한 Shiny는 앱 파일 실행 후 30초 안에 서버가 시작되어야 합니다. 대화형 개발에서는 app.R을 열고 Run App을 선택하면 새 창에 미리보기를 표시합니다.
새 작업공간 브랜치에서 게시하거나 동기화하면 해당 브랜치의 앱 버전을 만듭니다. 사용자에게 제공하기 전에 확인하고 master로 배포하려면 브랜치를 master에 병합합니다.
네트워크 복원 후 재연결
WebSocket이 닫히면 Shiny 화면이 회색으로 바뀔 수 있습니다. 예를 들어 네트워크 장애가 15초 넘게 지속되는 경우입니다. 기존 server 함수의 session 인자를 사용해 다음을 설정합니다.
session$allowReconnect("force")
네트워크가 돌아오면 브라우저는 새 WebSocket 연결을 시도하고 마지막 UI 입력 값을 서버에 보냅니다. 서버는 그 입력으로 출력을 다시 계산합니다. 이 설정을 서버 메모리 상태 전체의 저장/복원으로 간주하지 않습니다.
R 스크립트를 transform으로 게시
RStudio 작업공간에 네트워크 정책을 붙였더라도 여기서 게시한 R transform은 외부 서비스 API 호출을 지원하지 않습니다.
- Data의 출력 데이터셋 옆 파란 Build 아이콘을 선택합니다.
- 추론한 R 스크립트와 입력 및 출력을 확인하고 필요한 경우 수정합니다.
- Sync and run으로 설정을 저장하고 CI를 실행해 transform 및 출력의 JobSpecs를 게시합니다. CI가 끝나면 일반 데이터 파이프라인의 빌드와 스케줄로 관리합니다.
관리형 환경을 사용하면 아래 설정 파일로 환경을 복원합니다. 관리형 환경을 사용하지 않는 경로에서는 대화형 설치 상태를 transform이 자동으로 이어받지 않으므로 필요한 의존성을 스크립트에 명시합니다.
renv::install(c("dplyr", "tidyr"))
Markdown 보고서
.Rmd 또는 .qmd 파일은 Quarto로 렌더링한 HTML을 담는 데이터셋 보고서로 게시할 수 있습니다. 보고서도 transform으로 빌드하므로 변경한 파일과 입력을 기준으로 스케줄링할 수 있습니다.
- 사용할 .Rmd 또는 .qmd를 만듭니다. 읽을 Foundry 데이터셋은 Data 패널에 추가합니다.
- Applications > Reports에서 Add를 선택합니다.
- 보고서 이름과 저장 위치를 정합니다. 이 위치에 HTML 보고서 데이터셋을 만듭니다.
- 렌더링할 파일과 필요한 데이터셋 입력을 선택합니다. Auto-configure inputs and outputs로 파일에서 찾은 데이터셋을 채울 수 있습니다.
- Create를 선택하면 데이터셋을 만들고 보고서 transform을 실행합니다. 빌드에는 몇 분이 걸릴 수 있습니다.
- 완료 후 Applications에서 보고서 이름을 열고 링크를 공유합니다.
카드 오른쪽 메뉴에서 설정 편집, 삭제 또는 링크 복사를 선택할 수 있습니다.
보고서 버전
카드를 펼치거나 보고서 페이지 헤더의 버전 선택기로 과거 버전을 볼 수 있습니다. 특정 버전을 선택하면 공유 링크도 그 버전을 가리키므로 원본 Markdown이 바뀌어도 그 링크의 과거 보고서는 바뀌지 않습니다.
기본은 최신 버전이므로 기본 링크를 보는 사용자는 최신 변경을 받습니다.
관리형 Conda 및 CRAN 환경
Maestro 관리 환경은 요청을 meta.yaml, 해결한 라이브러리/버전/채널을 hawk.lock에 기록합니다. 둘 다 /home/user/repo/.envs/maestro에 있으며 코드와 함께 동기화됩니다. 실제 환경은 /home/user/envs/default에 설치합니다.
이 환경은 RStudio 세션, Shiny 앱, R transform 실행과 Markdown 보고서 렌더링 전에 복원합니다. hawk.lock은 Deprecated conda.lock을 대체하며 직접 고치지 않습니다. 파일을 임의 수정하면 오래된 환경이 복원되거나 환경 빌드가 실패할 수 있습니다.
기능 켜기
Settings > Advanced features의 Managed Conda environments를 켜고 작업공간을 재시작합니다. 이미 기본으로 켜져 있을 수 있습니다.
CRAN을 Maestro로 관리하려면 Settings > Experimental features에서 Managed CRAN environments도 켜고 다시 시작합니다. 이 설정 역시 기본 활성화된 환경이 있을 수 있습니다.
패키지 출처와 이름
Conda로 설치하면 CRAN 설치보다 시작 시간을 줄일 수 있습니다.
| 경로 | Libraries 검색 이름 예 |
|---|---|
| Conda의 일반 R 패키지 | r-ggplot2 |
| Conda의 Bioconductor | bioconductor-genomeinfodb처럼 소문자 접두사 이름 |
| CRAN의 일반 패키지 | ggplot2 |
| CRAN 경로의 Bioconductor | GenomeInfoDb처럼 해당 패키지의 대소문자 |
Conda 설치 예:
maestro env conda install r-ggplot2 bioconductor-genomeinfodb
CRAN 설치 예:
maestro env cran install ggplot2
버전 지정 문법은 Conda의 ==와 CRAN의 @가 다릅니다. LIBRARY_NAME과 LIBRARY_VERSION에는 실제 패키지와 선택한 버전을 제공합니다.
: "${LIBRARY_NAME:?LIBRARY_NAME is required}"
: "${LIBRARY_VERSION:?LIBRARY_VERSION is required}"
maestro env conda install "${LIBRARY_NAME}==${LIBRARY_VERSION}"
: "${LIBRARY_NAME:?LIBRARY_NAME is required}"
: "${LIBRARY_VERSION:?LIBRARY_VERSION is required}"
maestro env cran install "${LIBRARY_NAME}@${LIBRARY_VERSION}"
제거할 때는 설치한 출처를 지정합니다.
maestro env uninstall --conda-dependencies "$LIBRARY_NAME"
maestro env uninstall --cran-dependencies "$LIBRARY_NAME"
Libraries에서 고른 설치 명령은 스크립트나 앱 코드가 아닌 RStudio 콘솔에서 실행되며 manifest와 lockfile을 갱신합니다. 설치한 Conda 라이브러리는 Libraries 목록에서 볼 수 있습니다.
동기화, 충돌과 업그레이드
브랜치 변경이나 Git 갱신으로 hawk.lock이 달라졌으면 작업공간 터미널에서 maestro env install을 실행합니다. manifest에서 lockfile을 다시 해결하고 default 환경에 설치합니다.
Git 충돌은 생성 lockfile을 제거한 뒤 meta.yaml의 요청을 해결하고 브랜치를 병합합니다. 이후 maestro env install로 재생성합니다.
전체 환경을 업그레이드할 때는 필요한 작업을 저장한 뒤 다음 고정 경로의 lockfile과 설치 환경을 제거하고 새로 해결합니다. 원래 환경을 삭제하는 작업이므로 대상 경로를 확인한 뒤 실행합니다.
rm /home/user/repo/.envs/maestro/hawk.lock &&
rm -rf /home/user/envs/default &&
maestro env install
공통 파일 형식은 Jupyter의 manifest와 lockfile 설명을 참고합니다. R과 CRAN의 설치 요청은 해당 Maestro 명령이 기록하도록 둡니다.