이전 이야기
[Streamlit] 내가 만든 앱 스마트폰에서 쓰는 법 — Github, Streamlit 웹 배포 실험 (앱 만들기 2편)
이전 이야기2026.05.26 - [AIffee 한 잔 — 오늘의 AI 활용/써보니까] - [Google AI 스튜디오] 파이썬 없어도 45분 만에 앱 만든 후기 — 비개발자 실전 기록노션에 결과가 자동으로 척 저장되는 거 보고 혼
morning-aiffee.tistory.com
웹앱을 만들고 폰에서도 쓸 수 있게 된게 너무 신기했었다.
웹앱 하나 더 추가하는건 엄청 쉽겠다!
스트림릿(Streamlit)으로 간단한 웹앱 하나를 만들어서 배포에 성공하고 나면, 자연스럽게 이런 생각이 든다.
"오, 생각보다 쉽네? 그럼 두 번째 앱도 하나 만들어볼까?"
streamlit 에 private으로 새 앱을 추가하려 하니까, 이상하게 막혔다.
"분명 첫 번째 앱은 잘 됐는데 왜 두 번째는 안 되지?" 하면서 삽질하면서 찾은 해결책, 멀티페이지(Multipage) 구성에 대한 이야기이다.
그래서, 왜 앱이 여러 개 안 만들어졌을까?
결론부터 말하면, 무료 요금제의 앱 개수 제한 때문이었다.
- 비공개(Private) 앱: 1개
코드를 공개하기 싫어서 비공개로 만들려고 하면 딱 1개까지만 무료로 허용됩니다.
아무것도 모르고 두 번째 앱을 비공개로 올리려다가 여기서 막혔었다.
이것 역시 AI한테 해결책을 물었고, 멀티페이지라는 대답이 나왔다.
앱을 여러 개 만드는 대신, 앱 하나 안에 여러 페이지를 넣자.
멀티페이지가 대체 뭔가요?
멀티페이지는 하나의 앱 안에 여러 페이지를 두는 구조이다.
화면 왼쪽 사이드바에서 페이지를 골라 이동하는 그 방식이다.
블로그에 카테고리가 여러 개 있어도 블로그 자체는 하나인 것과 비슷하다.
이렇게 하면 좋은 점 이 있다.
- 스트림릿 입장에서는 앱 1개로 카운트되니까 개수 제한에 안 걸린다.
- 깃허브 저장소도 하나로 통합 관리된다.
- 도구 여러 개를 한 주소에서 깔끔하게 모아 보여줄 수 있다.
스트림릿에서 멀티페이지를 만드는 방법은 크게 두 가지인 것 같은데, 나는 간단한 1번 으로 시작했다.
- pages/ 폴더를 쓰는 방법 (간단)
- st.Page + st.navigation을 쓰는 방법
실제로 이렇게 구성했어요 (코드 포함)
방법 1. 가장 간단한 pages/ 폴더 방식
깃허브 저장소를 이런 구조로 만들면 된다.
your-repo/
├── streamlit_main_app.py ← 메인(첫 화면)
└── pages/
├── 1_첫번째도구.py
└── 2_두번째도구.py
pages/ 폴더 안에 파이썬 파일을 넣기만 하면, 스트림릿이 자동으로 사이드바에 메뉴를 만들어 줍니다.
파일명 앞에 숫자를 붙이면 그 순서대로 정렬된다. 정말 별다른 코드가 필요 없습니다. - 사실 이것도 바이브코딩으로 짜달라고 하면 된다.
내가 사용한 코드는 이거다.
import streamlit as st
st.title("🔒 나의 AI 작업실")
st.write("원하는 앱을 선택해 주세요!")
st.divider()
st.subheader("📱 앱 바로가기")
col1, col2, col3 = st.columns(3)
with col1:
if st.button("AI 오운완 코치", use_container_width=True):
st.switch_page("pages/my-workout-app.py")
with col3:
if st.button("AI 살림 도우미", use_container_width=True):
st.switch_page("pages/my-smarthome-app.py")
with col2:
if st.button("AI 식단 코치", use_container_width=True):
st.switch_page("pages/my-foodAI-app.py")
Streamlit 연동은 어떻게?
이전엔 1_첫번째도구.py를 연결한 앱을 만들었다면,
이젠 streamlit_main_app.py 를 연결해주면 된다.
그럼 짜잔!

마무리하며
정리하자면, 무료 스트림릿에서 비공개 앱은 1개까지만 만들 수 있기 때문에,
도구를 여러 개 운영하고 싶다면 앱을 쪼개지 말고 멀티페이지로 합치면 된다.
처음엔 "왜 안 되지?" 하고 답답했지만, 덕분에 오히려 더 깔끔한 구조를 배우게 됐다.
여러분은 어떠셨나요?
혹시 스트림릿으로 앱 만들다가 비슷한 벽에 부딪힌 적 있으신가요? 어떤 도구를 페이지로 묶어 봤는지 댓글로 알려주세요.


'브루잉 노트 — 배우고 기록하기 > 실험 일지' 카테고리의 다른 글
| [Streamlit] 내가 만든 앱 스마트폰에서 쓰는 법 — Github, Streamlit 웹 배포 실험 (앱 만들기 2편) (0) | 2026.05.30 |
|---|