DataScience/Streamlit

[Streamlit-05] Streamlit 앱 배포하기

codemagician 2024. 7. 26.

Streamlit 앱 배포하기

안녕하세요. 오늘은 Streamlit 앱을 GitHub와 Streamlit Community Cloud를 통해 배포하는 과정에 대해 소개해드리겠습니다. 해당 방법은 Streamlit 앱을 손쉽게 배포하여 다른 사용자들이 웹을 통해 앱에 접근할 수 있도록 합니다.

1. GitHub에 streamlit 파일 업로드하기

저는 지난 시간에 만들어본 streamlit 웹 계산기를 배포해 볼 건데요.

streamlit 웹 계산기가 궁금하시다면 이전 포스팅을 참고해 주세요.
👉 [DataScience/Streamlit] - [Streamlit-04] Streamlit session_state, st.button 예제

우선적으로 해야 될 일은 GitHub Repository에 제 streamlit 파일을 업로드하는 것입니다.

GitHub Repository 생성하기

우선, 깃헙 계정이 필요하므로, 계정이 없다면 회원가입 후 계속 진행해 주시기 바랍니다.

깃허브 공식홈페이지

 

GitHub: Let’s build from here

GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...

github.com

깃헙 로그인 페이지
깃헙 회원가입 or 로그인

깃헙 로그인을 완료했다면 우측 상단 + 표시를 클릭하고 New repository를 클릭해 줍니다.

해당 단계는 깃헙에 새로운 프로젝트 폴더를 만든다고 이해하시면 되겠습니다.

New repository
깃헙 로그인 > New repository

깃헙 new repository 설정은 다음과 같습니다.

여기서 Repository name은 깃헙에 만들 새 프로젝트 이름을 입력하시면 됩니다.

이때 주의사항으로는 Public(외부공개)으로 설정해 줘야지 추후 단계에서 앱배포가 가능하니 해당 옵션으로 설정해 주시기 바랍니다.

깃헙 Create a new repository
깃헙 new repository 설정

 

Repository에 streamlit main 파일 업로드

Create repository 버튼을 클릭했다면 다음 화면과 같이 깃헙 메인화면에 새 repository가 생성되었을 것입니다. 이제 메인 파일을 업로드해줍시다.

우측 상단 "Add file"을 클릭한 뒤 "Upload files"를 클릭해 줍니다.

깃헙 Upload files
신규 생성 repository > Add file > Upload files

streamlit 메인 코드 파일을 드래그 or 파일 선택을 통해 업로드해 줍니다. Commit changes를 눌러 계속 진행해 줍시다.

깃헙 Upload files
Upload files > Upload > Commit changes

repository에 나의 streamlit 메인 파일이 업로드되었습니다.

깃헙 repository 메인화면

이로써 Github에서의 준비는 끝났고, 이제 다음 단계인 streamlit community cloud로 넘어가겠습니다.

 

2. Streamlit Community Cloud에 배포하기

Streamlit Community Cloud는 Streamlit 앱을 쉽게 배포하고 공유할 수 있는 무료 플랫폼입니다. 사용자는 간단한 몇 단계만으로 앱을 웹에 배포할 수 있습니다.

Streamlit Community Cloud 가입 및 로그인

해당 서비스를 이용하기 위해서는 회원가입이 필요합니다.

Streamlit Community Cloud 사이트

 

https://share.streamlit.io/

 

share.streamlit.io

Streamlit Community Cloud 깃헙 로그인Streamlit Community Cloud 동기화
Streamlit Community Cloud 회원가입

회원가입 시 GitHib으로 로그인해야지 해당 과정으로 배포까지 계속 진행 가능합니다!

 

Create app & Deploy an app

로그인을 하면 app이 텅 비어있을 것입니다. 새로운 app을 추가하기 위해 우측 상단 Create app을 클릭해 줍니다.

저희는 깃헙에 app이 준비되어 있으므로 "Yup, I have an app."을 선택해 줍시다.

Streamlit Community Cloud 메인화면Create app 깃헙 연동
Create app

Deploy an app 설정에서 해당 양식에 맞춰 기입해 줍니다.

깃헙에서 만들었던 Repository를 선택해 주고, Main file path는 streamlit 메인 파일을 선택해 주시면 됩니다.

App URL 옵션은 streamlit 배포 앱의 도메인이오니, 배포 앱의 특성에 맞게 네이밍 해주시면 되겠습니다.

Deploy an app
Deploy an app

Deploy! 버튼을 누르면, 잠시 뒤 streamlit 앱 배포가 완료됩니다.

Streamlit app 배포
Deploy 완료

추가로 오른쪽 하단에 Mage app 버튼을 누르면 설정 UI를 부를 수 있습니다.

점 세 개 클릭 후 "Delete app"을 클릭하면, 앱배포를 종료할 수 있습니다.

streamlit 앱 배포 설정
Manage app 세부 옵션

 

Streamlit Community Cloud 제한사항 및 단점

Streamlit Community Cloud를 통해 앱을 배포할 때 고려해야 할 제약사항과 제한사항이 있습니다. 이 제한사항들은 대부분 무료 플랜의 사용자에게 적용되며, 유료 플랜을 선택하면 일부 제한사항을 완화할 수 있습니다. 아래는 일반적인 제한사항과 단점에 대한 설명입니다.

1. 리소스 사용 제한

  1. RAM 제한: Streamlit Community Cloud 무료 플랜에서는 앱당 최대 약 1GB의 RAM을 사용할 수 있습니다. 이는 간단한 데이터 분석과 시각화에는 충분할 수 있지만, 대규모 데이터 처리나 복잡한 머신러닝 모델을 실행하는 데는 부족할 수 있습니다.
  2. CPU 제한: CPU 리소스도 제한적입니다. 복잡한 계산을 수행하거나 대규모 데이터를 처리하는 작업의 경우 성능 저하가 발생할 수 있습니다.

2. 스토리지 제한

디스크 공간: 일반적으로 앱은 약 800MB의 디스크 공간을 사용할 수 있습니다. 이 제한은 앱이 설치되는 환경의 가상 머신에 적용됩니다. 큰 파일을 저장하거나 로컬에서 많은 데이터를 처리해야 하는 경우에는 제한이 될 수 있습니다.

3. 실행 시간제한

  • 세션 타임아웃: 유휴 상태로 1시간이 지나면 세션이 자동으로 종료됩니다. 사용자가 앱과 상호작용을 멈춘 상태에서 이 시간이 지나면 세션이 종료되고, 다시 실행해야 합니다.
  • 최대 실행 시간: 앱의 단일 세션은 특정 시간 동안만 활성 상태를 유지할 수 있습니다. 복잡한 작업을 수행하는 경우에는 실행 시간이 초과될 수 있습니다.

4. 네트워크 및 API 제한

  • 외부 API 호출 제한: 앱에서 외부 API를 호출할 수 있지만, API 제공자의 요금제에 따라 호출 횟수나 속도에 제한이 있을 수 있습니다. 또한, Streamlit 자체에서 특별한 제한을 두고 있지는 않지만, 네트워크 속도와 안정성은 클라우드 제공자의 상황에 따라 달라질 수 있습니다.
  • 데이터 전송 제한: 대용량 파일을 업로드하거나 다운로드하는 경우 제한이 있을 수 있습니다. 일반적으로 파일 업로드/다운로드 크기는 수십 메가바이트로 제한되며, 이는 사용자의 인터넷 환경에 따라 속도가 다를 수 있습니다.

5. 사용자 및 앱 수 제한

  1. 앱 수 제한: 무료 플랜에서는 하나의 계정당 최대 3개의 앱을 배포할 수 있습니다. 추가적인 앱을 배포하려면 기존 앱을 삭제하거나 유료 플랜으로 전환해야 합니다.
  2. 동시 사용자 수 제한: 무료 플랜은 동시 사용자가 많을 경우 성능이 저하될 수 있습니다. 이는 주로 CPU와 RAM 사용량에 따라 달라집니다.

6. 개인 정보 및 보안

  • 공개 앱: 무료 플랜으로 배포한 앱은 기본적으로 공개 상태로, 누구나 URL을 통해 접근할 수 있습니다. 민감한 데이터나 내부 정보는 포함하지 않도록 주의해야 합니다.
  • SSL/TLS 지원: 모든 통신은 기본적으로 HTTPS로 암호화되어 안전하게 전송됩니다.

 

Comment

Streamlit Community Cloud는 빠르고 간편하게 앱을 배포할 수 있는 훌륭한 플랫폼이지만, 무료 플랜의 경우 몇 가지 제한사항이 있습니다. 이러한 제한을 고려하여 앱을 설계하고, 필요에 따라 유료 플랜을 고려하여 더 많은 리소스를 활용할 수 있습니다.

비록 장단점이 존재하는 앱배포 방법이지만, 간단한 프로그램이나 데모용을 빠른 시간에 웹으로 배포하기에는 안성맞춤인 것 같습니다. 많은 분들이 해당 포스팅을 통해 도움을 얻으시면 좋겠습니다.

다음엔 더 좋은 포스팅으로 돌아오겠습니다. 감사합니다.

728x90

댓글