챌린지

패스트캠퍼스 환급챌린지 35일차 : [6개 AI 프로덕트로 완성하는 LLM/LMM 서비스 개발의 모든 것 : 프롬프트 엔지니어링부터 멀티모달까지] 강의 후기

passion-of-coding 2025. 8. 4. 23:56

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

 

✨ Streamlit 

✅ 1. Streamlit 개요 학습

  • Streamlit은 데이터 사이언티스트와 머신러닝 엔지니어를 위한 오픈소스 웹앱 프레임워크로, 복잡한 프론트엔드 지식 없이도 몇 줄의 코드로 인터랙티브한 웹 앱을 만들 수 있음.
  • 주요 장점: 빠른 개발 속도, 자동 반영되는 코드 업데이트, 직관적인 API, 활발한 커뮤니티, 다양한 라이브러리와의 통합 용이성

✅ 2. Gradio와의 비교

  • Gradio는 머신러닝 데모 제작에 강점, Streamlit은 데이터 시각화/분석에 강점
  • Gradio는 컴포넌트가 제한되고, Python 변수 활용 유연성이 낮음
  • Streamlit은 더 다양한 UI 컴포넌트와 세밀한 제어 제공

✅ 3. Streamlit 공식 웹사이트 탐색

  • Gallery: 다른 사용자들의 앱 사례 모음
  • Components: 외부 라이브러리와의 연동 확장 예제 (Pygwalker, HiPlot 등)
  • Community Forum: 실전 질의응답과 커뮤니티 활동

✅ 4. 코랩에서 Streamlit 앱 실행 실습

  • pyngrok을 통해 외부에서 접속 가능한 URL 생성
  • ngrok.connect(port=8501) 오류 해결 → addr="http://localhost:8501"로 수정
  • subprocess로 백그라운드에서 Streamlit 앱 실행해야 정상 노출됨

✅ 5. Streamlit 상호작용 컴포넌트 실습

  • st.button, st.checkbox, st.radio, st.selectbox, st.multiselect
  • st.slider, st.text_input, st.text_area, st.date_input, st.time_input, st.file_uploader
  • 사용자의 입력을 실시간으로 반영하고 결과를 보여주는 방식 확인

 

 

 

 

 

 

 

 

 

 

 

 

 

app.py의 내용이 변경되면 우측 상단에 File change. Rerun 이 나타난다. [Rerun]을 클릭하면 변경된 내용이 화면에 출력된다. 

 

 

 

 

 

 

 

 

 

 

 

 

 


오늘은 Streamlit의 기본적인 컴포넌트와 상호작용 기능에 대해 집중적으로 학습한 하루였다. 이전까지는 Streamlit이라는 프레임워크가 ‘빠르게 웹 앱을 만드는 도구’라는 정도의 인상만 가지고 있었는데, 오늘 실습을 통해 그 구조와 장점을 직접 체험하면서 왜 데이터 사이언티스트와 머신러닝 엔지니어들이 이 도구를 애용하는지 실감하게 되었다.

무엇보다 인상 깊었던 것은 Streamlit이 제공하는 컴포넌트들의 직관성과 즉시성이었다. st.button() 하나만 호출해도 버튼이 즉시 생성되고, 해당 버튼 클릭 여부를 조건문으로 처리하면 바로 동적 반응이 가능했다. 이런 간단한 구조가 상호작용 기반의 웹 애플리케이션을 매우 쉽게 만들 수 있게 해주었다. 특히 st.slider()와 st.multiselect() 같은 위젯은 사용자의 선택을 반영하여 시각적으로 데이터를 다루기에 매우 적합하다고 느꼈다. 프론트엔드 지식이 없는 데이터 분석가들도 이런 방식으로 시각적 도구를 구현할 수 있다는 점이 큰 장점이라고 생각한다.

또한 코랩에서 Streamlit을 실행하고 외부에서 접속 가능하도록 pyngrok을 연동하는 과정은 약간의 시행착오가 있었지만, 매우 유익한 경험이었다. 처음에는 port= 인자를 사용해서 터널을 열었으나, ngrok의 최신 버전에서는 addr=를 사용해야 한다는 사실을 깨달으면서, 실제 API 버전에 따른 코드 변경의 중요성을 다시금 느꼈다. 또한 코랩에서 Streamlit 서버가 바로 뜨지 않는다는 점에서 단순 실행이 아닌 subprocess.Popen()을 이용해 백그라운드로 띄워야 한다는 테크닉도 익혔다. 이런 작은 경험 하나하나가 실무에서 예상치 못한 문제를 해결하는 데 큰 도움이 될 것 같다.

Gradio와 Streamlit의 차이를 비교한 부분도 흥미로웠다. Gradio는 함수 기반이라 머신러닝 모델 데모를 빠르게 만들기엔 적합하지만, 컴포넌트가 제한되고 UI 자유도가 낮아 분석용 앱에는 한계가 있다는 점이 명확히 드러났다. 반면, Streamlit은 Python 변수 그대로 사용 가능하고, 다양한 입력 위젯을 유연하게 조합할 수 있어 복잡한 인터랙션을 요구하는 대시보드에 더욱 적합하다는 점이 강조되었다. 오늘 실습을 통해 직접 두 프레임워크의 접근 방식을 체험하며 상황에 맞는 도구 선택의 중요성을 배울 수 있었다.

마지막으로 Streamlit의 공식 웹사이트를 살펴보며 전 세계 사용자들이 만든 앱과 컴포넌트를 둘러보는 것도 자극이 되었다. 특히 Pygwalker와 같은 외부 시각화 툴과의 연동 예제를 보며, 단순히 Streamlit만이 아니라 다른 생태계 도구와 함께 사용하는 능력 또한 중요하다는 생각이 들었다.

결론적으로 오늘의 학습은 단순한 문법 암기나 기능 소개를 넘어서, 직접 실습하고 문제를 해결하며 Streamlit의 실용성과 응용 가능성을 체감하는 시간이었다. 앞으로 프로젝트나 데이터 분석 결과를 공유할 때 Streamlit을 적극 활용해볼 생각이 들 정도로 만족스러운 학습이었다.

 

 

 

공부 시작

 

 

공부 종료

 

 

 

 

 

 

수강 클립

 

 

완강률

 

 

 

 

오늘의 passion of coding이 내일의 passion이 된다! 

 

https://fastcampus.info/4n8ztzq