Streamlit

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년 기준)

참고 문헌

  1. Streamlit 공식 문서, https://docs.streamlit.io (최종 접근일: 2024년 12월)
  2. “Streamlit: The fastest way to build data apps”, Streamlit Inc. 블로그, 2020년 5월 15일.
  3. “An Overview of Python Web App Frameworks for Data Scientists”, Journal of Data Science, 2022년 9월.

이 문서는 확인된 공개 자료를 기반으로 작성되었으며, 최신 버전이나 기능에 대한 세부 사항은 공식 문서를 참고한다.

둘러보기

더 찾아볼 만한 주제