R-Blogger블로그·해설한국어2025-10-22
R 패키지 하나로 다중 Shiny 앱 배포
Shiny 앱 통합 개발 및 배포 전략 여러 개의 Shiny 앱이 같은 로직을 공유해야 할 때, 하나의 R 패키지 안에서 관리하면 코드 재사용성과 유지보수성을 크게 향상시킬 수 있습니다. 이때 monorepo 방식을 도입하면 프로젝트 전체 구조를 한눈에 파악하고 배포 파이프라인을 효율적으로 구성할 수 있습니다. 1. 프로젝트 구조 예시 R/ – 공통 함수 및 모듈 app1/ – Shiny 앱 1 (app.R, www/, ui.R, server.R 등) app2/ – Shiny 앱 2 inst/ – 패키지 설치 시 포함될 자원 파일 DESCRIPTION – 패키지 메타데이터 NAMESPACE – 공개 함수 선언 tests/ – 유닛 테스트 2. 공통 로직 모듈화 공통적으로 사용되는 함수는 R/common.R 같은 파일에 모아 두고, 각 앱에서 source("R/common.R") 로 불러옵니다. 필요 시 Namespace를 이용해 export() 시키면 다른 패키지에서도 재사용이 가능합니다. 3. 배포 전략 패키지 배포: devtools::build() 로 패키지 파일을 만들고, CRAN이나 GitHub에 업로드합니다. 앱 배포: rsconnect::deployApp() 으로 각각의 앱을 shinyapps.io 또는 자체 서버에 배포합니다. 앱 디렉터리 안의 app.R 이 패키지 내부 함수만 호출하도록 설계하면 배포가 간단합니다. CI/CD: GitHub Actions 혹은 GitLab CI를 이용해 코드 커밋 시마다 패키지 빌드와 테스트, 앱 배포가 자동으로 실행되도록 합니다. 4. 장점 요약 공통 코드 한 곳에 집중 → 버그 수요 감소 배포 파이프라인 일관성 확보 팀원간 협업 효율성 ↑ 위와 같은 구조와 전략을 채택하면, Shiny 앱 개발이 훨씬 체계적이고 유지보수가 용이해집니다. 여러분도 한 번 시도해 보시길 권장합니다.
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
- 작성자
- R-Blogger
- 출처
- R-Blogger
- 플랫폼
- R-Blogger
- 분류
- 블로그·해설
- 언어
- 한국어
- 발행일
- 2025-10-22