PART 09. 노트북을 앱으로 배포하기
PART 07에서 만든 앱은 로컬 환경에서만 실행됐습니다. 터미널에서 marimo run app.py를 입력하면 브라우저가 열렸고, Ctrl + C로 서버를 종료하면 앱도 사라졌습니다. 그 앱을 다른 사람에게 보여주려면 URL을 공유해야 하는데, localhost로는 할 수 없습니다.
이 파트는 그 다음 질문을 다룹니다. "어떻게 하면 다른 사람도 이 앱을 쓸 수 있게 할 수 있을까요?"
배포 경로는 크게 세 가지입니다. 서버나 컨테이너에서 marimo를 직접 실행하는 방법, WASM으로 내보내 브라우저 자체가 Python을 실행하게 하는 방법, 정적 HTML을 생성해 GitHub Pages 같은 호스팅에 올리는 방법입니다. 세 경로는 서로 대체재가 아닙니다. 앱의 용도와 사용하는 라이브러리에 따라 선택이 달라집니다.
Ch 01에서는 marimo run의 배포 관점 옵션을 정리합니다. PART 07 Ch 04에서 이미 기본 실행은 다뤘으니, 이 파트는 그 다음 단계인 다중 사용자 접근과 공개 노출 시 고려사항을 집중적으로 다룹니다. Ch 02와 Ch 03에서는 WASM 내보내기를 다루되, Ch 02에서 동작 원리와 사용법을 익히고 Ch 03에서 WASM이 모든 상황에 맞지 않는다는 현실적 한계를 솔직하게 살펴봅니다. Ch 04에서 Docker로 앱을 컨테이너에 묶고 서버에 올리는 방법을 다루며, Ch 05에서 정적 파일로 GitHub Pages에 게시하는 절차로 마무리합니다.
선행 지식: PART 07 (프로젝트 2 _ 인터랙티브 데이터 앱), 특히 Ch 04 (marimo run으로 앱 실행).
이 파트를 마치면
marimo run의--host,--port옵션이 배포 환경에서 의미하는 바를 설명하고, 다중 사용자 접근 시 상태 격리 구조를 이해할 수 있습니다.marimo export html-wasm명령으로 노트북을 브라우저 단독 실행 HTML로 내보내고, 로컬에서 HTTP 서버를 실행해 결과를 확인할 수 있습니다.- WASM 배포가 어떤 경우에 적합하고 어떤 경우에 적합하지 않은지 판단할 수 있으며, MW003 린트 규칙으로 비호환 패키지를 사전에 감지할 수 있습니다.
- Dockerfile을 작성해 marimo 앱을 컨테이너로 묶고,
--host 0.0.0.0 --port 8080으로 외부 접근이 가능한 형태로 실행할 수 있습니다. marimo export html로 정적 HTML을 생성하고, WASM 결과물을 GitHub Pages에 게시하는 절차를 따를 수 있습니다.