# Spaces의 Dash

Dash Open Source를 사용하면 순수 Python으로 노트북에서 데이터 앱을 만들 수 있으며, JavaScript가 필요하지 않습니다.

오픈 소스를 사용하여 [샘플 앱](https://dash.plotly.com/tutorial)을 구축하여 Dash에 익숙해지세요. Dash 앱이 부서나 회사 전체에서 사용될 준비가 되면 [Dash Enterprise](https://plotly.com/dash/)로 확장하세요. 또는 처음부터 Dash Enterprise로 프로젝트를 시작하여 개발 생산성 향상과 Plotly 팀의 직접적인 지원을 활용하세요.

## Spaces에서 Dash 배포

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

    

이 과정을 통해 Plotly의 Dash Docker 템플릿을 사용하여 Space가 빌드되기 시작합니다. 성공적으로 완료되면 [Dash template app](https://huggingface.co/spaces/dash/dash-app-template)과 유사한 애플리케이션을 확인할 수 있습니다.

## Dash 앱 사용자 정의

Dash를 이용해 본 적이 없다면 [Dash 20분 튜토리얼](https://dash.plotly.com/tutorial)로 시작하는 것을 권장합니다.

Dash Space를 생성하면 시작에 도움이 되는 몇 가지 주요 파일을 받게 됩니다:

### 1. app.py

이 파일은 프로젝트의 핵심 로직을 정의하는 메인 앱 파일입니다. Dash 앱은 모듈로 구성되는 경우가 많으며, `layout.py`와 같은 다른 파일에 레이아웃, 콜백, 데이터를 선택적으로 분리할 수 있습니다.

`app.py` 안에는 다음이 표시됩니다:

1. `from dash import Dash, html` 앱을 정의하기 위해 `Dash` 객체를 가져오고, 프로젝트를 조립하는 데 필요한 빌딩 블록을 제공하는 `html` 라이브러리를 가져옵니다.

2. `app = Dash()` 여기서 앱을 정의합니다. Layout, server, callbacks는 `app` 객체에 _바인딩_됩니다.

3. `server = app.server` 여기서 프로덕션 환경에서 앱을 실행하는 데 사용되는 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` 사용)
- 보안을 위해 루트가 아닌 사용자를 생성합니다
- `gunicorn app:server --workers 4`를 사용하여 `gunicorn`로 앱을 실행합니다.

애플리케이션에 추가적인 시스템 종속성, 권한 또는 기타 CLI 플래그가 필요한 경우 이 파일을 수정해야 할 수 있습니다.

### 3. requirements.txt

Space는 `requirements.txt` 파일에 나열된 의존성을 자동으로 설치합니다. 이 파일에는 최소한 `dash`와 `gunicorn`를 포함해야 합니다. 앱에 필요한 기타 패키지도 추가해야 합니다.

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

## 추가 리소스 및 지원

- [Dash 문서](https://dash.plotly.com)
- [Dash GitHub 저장소](https://github.com/plotly/dash)
- [Dash 커뮤니티 포럼](https://community.plotly.com)
- [Dash Enterprise](https://plotly.com/dash)
- [Dash 템플릿 Space](https://huggingface.co/spaces/plotly/dash-app-template)

## 문제 해결

문제가 발생하면:

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

추가 도움이 필요하시면 [Plotly Community Forums](https://community.plotly.com)를 방문하시거나 [이슈를 생성](https://github.com/plotly/dash/issues)하세요.

