Spaces에서 Dash

Spaces에서 Dash

Dash Open Source를 사용하면 자바스크립트 없이 순수 Python으로 노트북에서 데이터 앱을 만들 수 있어요.

출처: 문서

본문

오픈소스로 샘플 앱을 만들며 Dash에 익숙해져 보세요. Dash 앱이 부서나 회사 전체에서 사용할 준비가 되면 Dash Enterprise로 확장하세요. 또는 처음부터 Dash Enterprise로 프로젝트를 시작해 Plotly 팀의 개발자 생산성 향상과 실무 가속을 누릴 수도 있어요.

Spaces에 Dash 배포

Spaces에서 Dash를 시작하려면 아래 버튼을 클릭하세요.

Plotly의 Dash Docker 템플릿을 사용해 Space 빌드가 시작돼요. 성공하면 Dash 템플릿 앱과 비슷한 애플리케이션을 볼 수 있어요.

Dash 앱 커스터마이징

Dash로 만든 적이 없다면 Dash in 20 minutes 튜토리얼부터 시작하는 걸 권장해요.

Dash Space를 만들면 시작하는 데 도움 되는 몇 가지 핵심 파일이 생겨요.

1. app.py

프로젝트의 핵심 로직을 정의하는 메인 앱 파일이에요. Dash 앱은 보통 모듈로 구성되고, 선택적으로 레이아웃·콜백·데이터를 layout.py 같은 다른 파일로 분리할 수 있어요.

app.py 안에는 다음이 보여요.

  1. from dash import Dash, html 앱을 정의하는 Dash 객체와 프로젝트를 조립하는 빌딩 블록을 제공하는 html 라이브러리를 import해요.

  2. app = Dash() 여기서 앱을 정의해요. 레이아웃, 서버, 콜백은 app 객체에 바인딩 돼요.

  3. server = app.server 프로덕션에서 앱을 실행하는 데 사용되는 서버 변수를 정의해요.

  4. app.layout = 스타터 앱 레이아웃은 Dash 컴포넌트 목록, 개별 Dash 컴포넌트, 또는 그중 하나를 반환하는 함수로 정의돼요. app.layout은 프로젝트의 콜백과 다른 로직에 의해 단일 페이지 애플리케이션으로 업데이트될 초기 레이아웃이에요.

  5. if __name__ == '__main__': app.run(debug=True) python app.py로 로컬에서 프로젝트를 실행하면 app.run(...)이 실행되어 핫 리로딩, 콜백 그래프 등의 기능이 있는 개발 서버를 시작해요. 프로덕션에서는 프로덕션급 서버인 gunicorn을 권장해요. gunicorn으로 프로젝트를 실행하면 디버그 기능이 활성화되지 않으므로 이 줄은 실행되지 않을 거예요.

2. Dockerfile

Dash 앱의 Dockerfile은 Dash가 시스템 의존성이 거의 없어서 최소화돼요. 핵심 요구사항은:

  • requirements.txt에 나열된 의존성 설치(uv 사용)
  • 보안을 위해 비루트(non-root) 사용자 생성
  • gunicorn app:server --workers 4로 앱 실행

애플리케이션이 추가 시스템 의존성·권한·다른 CLI 플래그를 요구하면 이 파일을 수정해야 할 수 있어요.

3. requirements.txt

Space는 requirements.txt 파일에 나열된 의존성을 자동으로 설치해요. 최소한 dashgunicorn은 이 파일에 포함해야 해요. 앱에 필요한 다른 패키지도 추가하고 싶을 거예요.

Dash Space 템플릿은 필요에 따라 확장할 수 있는 기본 설정을 제공해요.

추가 리소스와 지원

문제 해결

문제가 발생하면:

  1. 노트북이 python app.py로 앱 모드에서 로컬로 실행되는지 확인
  2. 필요한 모든 패키지가 requirements.txt에 있는지 확인
  3. 포트 구성이 일치하는지 확인(Spaces 기본값은 7860)
  4. Space 로그에서 Python 오류 확인

더 많은 도움이 필요하면 Plotly 커뮤니티 포럼을 방문하거나 이슈를 열어주세요.

더 알아보기 (Learn more)

Dash는 순수 Python으로 데이터 앱을 만들고, Spaces에서는 Plotly의 Dash Docker 템플릿으로 바로 배포돼요. app.py, Dockerfile, requirements.txt 세 파일이 핵심이고, 프로덕션은 gunicorn으로 실행해요. 디버깅 시에는 requirements.txt 의존성과 기본 포트 7860을 먼저 확인하세요.