[1] streamlit 소개 및 장단점
들어가며
이번 챕터에서는 streamlit이 무엇인지 소개하고 장단점을 짚어보겠습니다. 그리고 실습으로 진행할 프로젝트를 소개합니다.
streamlit 소개
streamlit은 python 만으로 웹 개발을 할 수 있는 기술 스택입니다. 기존에 html, css, javascript로 웹 프론트엔드를 개발한 경험이 전혀 없다 하더라도, python 만으로 실제 동작하는 웹 서비스를 개발할 수 있습니다. 배우기가 무척 쉽고, 강력해서 많은 python 개발자들의 사랑을 받고 있습니다.
아래는 이번 과정에서 python 만으로 직접 개발해볼 실습 프로젝트입니다. html, css, js를 한줄도 작성하지 않고도 그럴듯한 웹 서비스를 만들 수 있죠?
Streamlit 장점
1. 코드가 짧고 간결하다.
html, css, javascript로 코딩하다보면 단순한 화면임에도 수백줄씩 코드가 늘어나기 쉽습니다. 반면에 streamlit은 많은 부분들을 추상화하여 제공하기 때문에 코드가 짧고 간결하며, 읽기에도 편합니다. 이런 측면 때문에 빠르게 서비스를 프로토타이핑 할 때 적합합니다.
2. 배포가 쉽다.
streamlit cloud를 사용하면 github 레포지토리에 소스코드를 올려놓는 것 만으로 웹 상에 내가 만든 서비스를 배포할 수 있습니다. 그리고 실제 유저들이 접속해서 사용할 수 있습니다. 이 과정이 어이 없을 정도로 쉽습니다. 때문에 streamlit으로 서비스의 초기 버전을 개발하고, 빠르게 배포해서 유저들의 반응을 확인하는 용도로 사용이 가능합니다.
3. 데이터 분석, AI 서비스를 빠르게 개발할 수 있다.
파이썬은 데이터 분석이나 AI 모델을 만들 때 많이 사용합니다. python으로 개발한 데이터 분석 시각화 자료들이나 머신러닝 모델들을 다른 언어로 서빙하는 것은 쉽지 않습니다. streamlit을 사용하면 기존의 python 코드들은 그대로 살리면서 이를 웹 앱 형태로 빠르게 만들 수 있습니다. 즉, 웹 서비스 형태의 데모를 제작하는데 최적화 된 도구입니다.
streamlit 단점
1. 세밀한 UI/UX 적용이 어렵다. 커스텀 디자인 적용이 어렵다.
streamlit은 많은 부분들을 추상화해서 제공합니다. 예를들면 레이아웃이나 위젯들의 형태와 디자인이 정해져 있습니다. 때문에 내가 원하는 UI/UX를 그대로 구현하는 것이 상당히 까다롭습니다. streamlit이 제공하는 방식에 맞춰서 어느 정도 타협이 필요합니다.
디자인의 경우에도 하나하나 지정하는 것이 불가능 한 것은 아니지만 상당히 불편합니다. 만약 상용 서비스처럼 사소한 요구사항 하나하나가 중요한 상황이라면 streamlit은 적합하지 않습니다.
2. 복잡한 형태의 서비스 구현이 어렵다.
streamlit은 복잡한 서비스 로직을 구현하는 것이 어렵습니다. 가령 유저 인증이나 결제와 같은 기능은 streamlit으로 구현하는 것이 몹시 불편합니다. streamlit은 간단한 데모 서비스를 만드는 용도로 사용해야지, 상용 제품을 개발할 목적으로 사용한다면 금방 한계에 부딫힙니다.
3. 사용자가 늘었을 때, 대응이 어렵다.
streamlit cloud에 서비스를 배포할 경우, 서비스가 배포된 인프라를 제어할 수 없습니다. 사용자가 몰리고 서비스가 느려지는 상황이 생겼을 때 대처가 불가능합니다. 때문에 24시간 안정적으로 유저에게 서비스를 제공하는 것이 중요한 상황이라면 streamlit은 좋은 선택지가 아닙니다.
정리
지금까지 streamlit이 무엇인지, 어떤 장점과 단점이 있는지 알아보았습니다. 간단한 웹 서비스를 개발하고, 배포하는 데에 최적화 된 도구이며 특히 python으로 작성한 데이터 분석 결과와 AI 모델을 웹 서비스화 하는데에 적합합니다. 이어지는 강의들에선 실제 프로젝트를 만들어보면서 streamlit을 배웁니다.