Streamlit은 파이썬(Python) 프로그래밍 언어를 기반으로 한 오픈소스 웹 애플리케이션 프레임워크이며, 데이터 과학자·머신러닝 엔지니어가 복잡한 웹 UI를 별도 HTML·CSS·JavaScript 코딩 없이 손쉽게 구축하도록 설계되었다. 사용자는 파이썬 스크립트에 몇 줄의 선언적 코드를 추가함으로써 인터랙티브한 대시보드, 시각화, 모델 테스트 인터페이스 등을 실시간으로 배포할 수 있다.
정의
- 목적: 데이터 분석·시각화 결과를 빠르게 웹 애플리케이션 형태로 공유하고, 사용자와의 인터랙션을 지원한다.
- 특징: 선언형 UI 구성, 자동 리로드(코드 수정 시 실시간 반영), 캐시 메커니즘, 다양한 위젯(슬라이더, 셀렉트박스 등) 제공, 배포용 클라우드 서비스(Streamlit Community Cloud)와 연동 가능.
역사
- 초기 개발: 2018년 미국 캘리포니아주 실리콘밸리의 스타트업 *Streamlit Inc.*에 의해 오픈소스로 공개되었다.
- 버전 1.0: 2020년 5월에 정식 1.0 버전이 릴리스되면서 안정성과 성능이 크게 향상되었다.
- 기업 투자: 2021년 Mozilla, Y Combinator 등으로부터 투자 유치를 발표했으며, 이후 기능 확장과 커뮤니티 지원이 활발해졌다.
주요 기능
| 기능 | 설명 |
|---|---|
| 위젯 선언 | st.slider, st.selectbox, st.checkbox 등 파이썬 함수 호출만으로 UI 컴포넌트를 삽입 |
| 실시간 리로드 | 코드 수정 시 브라우저가 자동으로 새로 고침되어 결과를 즉시 확인 |
| 캐시 | @st.cache 데코레이터를 통해 비용이 많이 드는 연산 결과를 메모리에 저장 |
| 멀티미디어 지원 | 이미지, 오디오, 비디오, PDF 등 다양한 파일 형식 직접 표시 |
| 레아웃 제어 | st.columns, st.expander, st.tabs 등을 이용해 복잡한 레이아웃 구현 |
| 배포 | Streamlit Community Cloud(구 Streamlit Sharing) 및 Docker, Heroku 등 다양한 환경에 손쉽게 배포 가능 |
| 테마 | 라이트·다크 모드 및 사용자 정의 CSS를 적용해 시각적 스타일을 조정 |
사용 예시
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
st.title("샘플 데이터 대시보드")
uploaded_file = st.file_uploader("CSV 파일을 업로드하세요", type="csv")
if uploaded_file:
df = pd.read_csv(uploaded_file)
st.dataframe(df.head())
column = st.selectbox("분석할 열 선택", df.columns)
fig, ax = plt.subplots()
df[column].hist(ax=ax)
st.pyplot(fig)
위와 같은 코드는 파일 업로드, 데이터 미리보기, 컬럼 선택 기반 히스토그램 시각화를 단일 스크립트로 구현한다.
라이선스
- 오픈소스 라이선스: Apache License 2.0(버전 2.0) 하에 배포되며, 상업적·비상업적 용도 모두 자유롭게 사용·수정·재배포할 수 있다.
관련 기술·프로젝트
- Dash(Plotly), Panel(HoloViz), Voila(Jupyter) 등과 같이 파이썬 기반 인터랙티브 웹 앱 프레임워크와 기능 및 목표가 유사하다.
- Streamlit Community Cloud: Streamlit 앱을 클라우드에 무료로 호스팅하는 서비스(2023년 기준)
참고 문헌
- Streamlit 공식 문서, https://docs.streamlit.io (최종 접근일: 2024년 12월)
- “Streamlit: The fastest way to build data apps”, Streamlit Inc. 블로그, 2020년 5월 15일.
- “An Overview of Python Web App Frameworks for Data Scientists”, Journal of Data Science, 2022년 9월.
이 문서는 확인된 공개 자료를 기반으로 작성되었으며, 최신 버전이나 기능에 대한 세부 사항은 공식 문서를 참고한다.