iBetter Books
수정

shinyapps.io 배포

shinyapps.io는 Posit(구 RStudio)이 운영하는 Shiny 앱 전용 클라우드 서비스입니다. 서버 설정 없이 R 콘솔 명령어 하나로 앱을 배포할 수 있어서 처음 배포를 시도하는 분에게 가장 적합합니다.

계정 만들기

  1. https://www.shinyapps.io에 접속합니다.
  2. "Sign Up"을 클릭하고 계정을 만듭니다. Google 계정으로도 가입할 수 있습니다.
  3. 가입 후 계정 이름(예: myname)을 설정합니다. 앱 URL이 myname.shinyapps.io/앱이름 형태가 됩니다.

rsconnect 패키지 설치 및 인증

install.packages("rsconnect")

shinyapps.io 대시보드에서 "Account → Tokens → Show"를 클릭하면 토큰과 시크릿이 나타납니다. 해당 화면에서 "Copy to clipboard"를 누르면 아래 형태의 명령어가 복사됩니다.

rsconnect::setAccountInfo(
  name   = "myname",
  token  = "ABCDEF1234567890",
  secret = "secretkey"
)

이 코드를 R 콘솔에 붙여넣어 실행합니다. 인증 정보는 로컬에 저장되어 다시 설정할 필요가 없습니다.

앱 배포

library(rsconnect)

deployApp(
  appDir  = "modular-app",   # app.R이 있는 폴더
  appName = "public-dashboard"
)

처음 배포하면 rsconnect가 앱이 사용하는 패키지를 분석해서 서버에 설치하고 실행합니다. 5~10분 정도 걸립니다. 완료되면 브라우저가 자동으로 열리고 배포된 앱 URL이 표시됩니다.

재배포

코드를 수정한 후 같은 명령어를 다시 실행하면 새 버전으로 교체됩니다.

deployApp("modular-app", appName = "public-dashboard")

앱 관리

shinyapps.io 대시보드에서 배포된 앱을 관리합니다.

메뉴 기능
Applications 배포된 앱 목록
Logs 실시간 앱 로그 확인
Metrics 접속자 수, 메모리 사용량
Settings 앱 공개 여부, 인스턴스 크기

R 콘솔에서도 관리할 수 있습니다.

# 배포된 앱 목록
rsconnect::listApplications()

# 앱 종료 (비용 절감)
rsconnect::terminateApp("public-dashboard")

# 앱 삭제
rsconnect::purgeApp("public-dashboard")

무료 vs 유료 플랜 비교

항목 무료(Starter) 기본(Basic) 표준(Standard)
월 활성 시간 25시간 무제한 무제한
앱 개수 5개 25개 무제한
동시 사용자 1명 무제한 무제한
사용자 인증 없음 없음 있음
월 비용 무료 $13 $99

수업 발표용이나 포트폴리오 용도라면 무료 플랜으로 충분합니다. 회사 내부 도구라면 사용자 인증이 포함된 표준 플랜이 필요합니다.

배포 시 자주 겪는 문제

배포 후 앱이 오류를 내면 대부분 패키지 문제입니다. Logs 탭에서 오류 메시지를 확인합니다.

Error in library(DT) : there is no package called 'DT'

이런 메시지가 나오면 app.R 맨 위에 library(DT)가 있는지 확인합니다. rsconnectlibrary() 호출을 분석해 패키지 목록을 만들기 때문에, 명시적으로 선언해야 합니다.

한글 폰트가 깨지는 경우에는 시스템 폰트 대신 구글 폰트를 씁니다.

# app.R 상단에 추가
theme <- bs_theme(
  bootswatch = "flatly",
  base_font  = font_google("Noto Sans KR")
)