Model Serving 연동 (LLM 챗봇 예제)
Databricks Apps와 Model Serving Endpoint를 연동하면 AI 챗봇을 쉽게 만들 수 있습니다.app.yaml 설정은 다음과 같습니다.
실습: Streamlit 매출 대시보드 생성 및 배포
Step 1: 프로젝트 생성
Step 2: app.py 작성
Step 3: app.yaml 작성
Step 4: requirements.txt 작성
Step 5: 배포
Step 6: 접속 및 테스트
배포가 완료되면https://<workspace-url>/apps/sales-dashboard에서 앱에 접근할 수 있습니다. 같은 워크스페이스의 사용자는 Databricks OAuth로 자동 인증됩니다.
리소스 제한 및 비용
| 항목 | 제한 |
|---|---|
| 앱당 최대 소스 코드 | 500 MB |
| 앱당 최대 메모리 | 크기에 따라 2~12 GB |
| 워크스페이스당 앱 수 | 계정 등급에 따라 다름 |
| 자동 유휴 중지 | 비활성 앱은 자동으로 중지됩니다 |
| 과금 | 앱이 실행 중인 시간 기준 DBU 과금 |
모범 사례
| 영역 | 권장 사항 |
|---|---|
| 인증 | 민감 데이터는 사용자 대리 인증을 사용합니다 |
| 성능 | st.cache_data/st.cache_resource로 데이터 캐싱을 적용합니다 |
| 비밀 관리 | API 키 등은 env.valueFrom으로 Secret에서 로드합니다. 코드에 하드코딩하지 않습니다 |
| 컴퓨트 크기 | 워크로드에 맞는 최소 크기를 선택하여 비용을 절감합니다 |
| 배포 | 프로덕션 앱은 DABs로 관리하여 버전 관리 및 CI/CD를 적용합니다 |
| 모니터링 | databricks apps get-logs로 앱 로그를 정기적으로 확인합니다 |
| 리소스 바인딩 | 필요한 리소스만 최소 권한으로 바인딩합니다 |
트러블슈팅
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| 앱이 시작되지 않음 | 포트가 8000이 아님 | --server.port 8000 확인 |
Permission denied | Service Principal 권한 부족 | 앱의 SP에 리소스 접근 권한 부여 |
| 패키지 설치 실패 | requirements.txt 누락 | 필요한 패키지를 requirements.txt에 명시 |
| 데이터 조회 실패 | SQL Warehouse 미바인딩 | app.yaml에 sql_warehouse 리소스 추가 |
| 앱이 자주 중지됨 | 유휴 자동 중지 | 트래픽이 없으면 정상 동작. 재접속 시 자동 재시작 |
정리
| 핵심 개념 | 설명 |
|---|---|
| Databricks Apps | Databricks 위에서 웹 앱을 호스팅하는 관리형 서비스입니다 |
| app.yaml | 앱의 실행 명령, 환경 변수, 리소스 바인딩을 선언하는 설정 파일입니다 |
| 리소스 바인딩 | SQL Warehouse, Model Serving, Secret 등에 안전하게 접근합니다 |
| 인증 모델 | 앱 SP 인증(기본)과 사용자 대리 인증(개인화) 중 선택합니다 |
| 컴퓨트 사이징 | Small/Medium/Large로 앱 워크로드에 맞는 리소스를 할당합니다 |
| 배포 | CLI, UI, DABs 중 선택하여 배포할 수 있습니다 |