다음을 통해 공유


Databricks 앱의 주요 개념

이 문서에서는 앱의 구조화 방법, 종속성 및 상태를 관리하는 방법, 권한 작동 방식, 앱이 플랫폼 리소스와 상호 작용하는 방법 등 Databricks 앱의 핵심 개념을 소개합니다. 이러한 개념을 이해하면 작업 영역에서 앱을 개발, 배포 및 관리할 때 도움이 됩니다.

App

Databricks 앱은 Azure Databricks 서버리스 플랫폼에서 컨테이너화된 서비스로 실행되는 웹 애플리케이션입니다. 개발자는 Streamlit, Dash 또는 Gradio와 같은 지원되는 프레임워크를 사용하여 Azure Databricks 작업 영역 내에서 대화형 데이터 또는 AI 환경을 제공하는 앱을 빌드합니다.

각 앱에는 자체 구성, ID 및 격리된 런타임 환경이 포함됩니다. 앱은 특정 작업 영역에 속하기 때문에 SQL 웨어하우스와 같은 작업 영역 수준 리소스 및 Unity 카탈로그와 같은 계정 수준 리소스에 액세스할 수 있습니다. 개발자는 작업 영역 외부의 사용자와 동일한 Azure Databricks 계정 내에서 앱을 공유하도록 선택할 수도 있습니다.

앱 컨테이너는 Azure Databricks 서버리스 인프라에서 실행되지만 앱 자체는 서버리스 리소스와 서버리스가 아닌 리소스 모두에 연결할 수 있습니다. 개념적으로 앱은 웹 UI를 호스트하고 사용 가능한 Azure Databricks 데이터 평면 서비스에 액세스하는 컨트롤 플레인 서비스 역할을 합니다. 자세한 내용은 Databricks 아키텍처 개요를 참조하세요.

앱을 시작하고 관리하려면 작업 영역 UI의 섹션으로 이동합니다.

앱 URL

Databricks는 만들 때 각 앱에 고유한 URL을 자동으로 할당합니다. URL은 다음 형식을 따릅니다.

https://<app-name>-<workspace-id>.<region>.databricksapps.com

Where:

  • <app-name> 은 앱을 만들 때 제공하는 이름입니다.
  • <workspace-id> 는 작업 영역의 고유 식별자입니다.
  • <region> 는 작업 영역이 있는 클라우드 지역입니다.

앱을 만든 후에는 URL을 변경할 수 없습니다. 다른 URL이 필요한 경우 다른 이름으로 새 앱을 만듭니다.

Template

앱 템플릿은 개발자가 지원되는 프레임워크를 사용하여 빠르게 앱을 빌드하는 데 도움이 되는 미리 빌드된 스캐폴드입니다. 각 템플릿에는 기본 파일 구조, app.yaml 매니페스트, requirements.txt Python 앱용 파일 및 샘플 소스 코드가 포함됩니다.

이 파일은 app.yaml 앱을 실행하는 명령(예 streamlit run <app-name> : Streamlit 앱)을 정의하고, 로컬 환경 변수를 설정하고, 필요한 리소스를 선언합니다.

  • requirements.txt을/를 사용하여 pip과 함께 설치할 추가 Python 패키지를 나열합니다.
  • package.json를 사용하여 npm로 설치할 Node.js 패키지를 나열합니다.

이러한 파일은 기본 시스템 환경 및 미리 설치된 패키지를 보완합니다. 자세한 내용은 Databricks Apps 시스템 환경을 참조하세요.

개발자는 Azure Databricks UI 또는 CLI를 사용하여 템플릿에서 새 앱을 생성할 수 있습니다.

시스템 환경 및 패키지

Databricks 앱은 Azure Databricks에서 관리하는 미리 구성된 시스템 환경에서 실행됩니다. 자세한 내용은 Databricks Apps 시스템 환경을 참조하세요.

각 앱에는 종속성 충돌을 방지하기 위해 자체 격리된 환경이 있습니다. 일관성을 보장하려면 앱에 적합한 파일에 필요한 패키지 및 해당 버전을 정의합니다.

  • Python의 경우 requirements.txt을(를) 사용하십시오.
  • Node.jspackage.json을 사용하십시오.

하이브리드 배포의 경우 두 파일이 모두 있을 수 있습니다.

배포하는 동안 Azure Databricks는 이러한 종속성을 앱의 격리된 런타임 환경에 설치합니다. 이미 사전 설치된 패키지를 포함하는 경우 지정된 버전이 기본값을 재정의합니다.

자세한 내용은 Databricks 앱에 대한 종속성 관리를 참조하세요.

앱 리소스

앱 리소스는 SQL 웨어하우스, 엔드포인트, 작업, 비밀 또는 볼륨을 제공하는 모델과 같이 앱이 의존하는 Azure Databricks 네이티브 서비스입니다. 매니페스트 databricks.yml에서 resources 필드를 사용하여 이러한 종속성을 선언합니다. Azure Databricks는 다음 리소스 유형을 지원합니다.

  • SQL 웨어하우스
  • Job
  • 엔드포인트를 제공하는 모델
  • 지니 공간
  • Secret
  • Volume

아직 지원되는 리소스 종류가 없는 Azure Databricks 서비스에 액세스하려면 Unity 카탈로그 관리 비밀을 사용하여 자격 증명을 안전하게 삽입합니다. 비밀 관리를 참조하세요.

앱 리소스를 구성하는 단계는 두 가지입니다.

  • 선언(개발) - 매니페스트에서 필요한 각 리소스를 databricks.yml 선언합니다. 앱에 필요한 리소스와 앱에 필요한 권한을 정의합니다.
  • 구성(배포) - 배포하는 동안 Databricks Apps UI를 사용하여 실제 작업 영역별 인스턴스(예: 특정 SQL 웨어하우스 선택)로 선언된 리소스를 구성합니다.

선언과 구성을 분리하면 환경 간에 앱을 이식할 수 있습니다. 예를 들어 개발 작업 영역에서 동일한 앱 코드를 배포하고 하나의 SQL 웨어하우스에 연결할 수 있습니다. 프로덕션 환경에서 코드를 변경하지 않고 코드를 다시 사용하고 다른 웨어하우스를 구성할 수 있습니다. 이를 지원하려면 앱에서 리소스 ID 또는 환경별 값을 하드 코딩하지 마세요.

Azure Databricks는 최소 권한 액세스를 적용합니다. 앱은 기존 리소스를 사용해야 하며 새 리소스를 만들 수 없습니다. 배포하는 동안 작업 영역 관리자는 앱의 요청된 리소스 액세스를 검토하고 승인합니다. 앱의 서비스 주체는 필요한 권한을 받고 앱 개발자는 권한을 부여할 수 있는 권한이 있어야 합니다.

자세한 내용은 Databricks 앱에 리소스 추가를 참조하세요.

앱 상태

앱은 실행 중, 중지됨, 배포 또는 크래시 상태 중 하나를 가질 수 있습니다.

  • 실행 중 - 앱이 활성 상태이며 액세스할 수 있습니다. Azure Databricks는 앱이 실행되는 동안 사용되는 컴퓨팅 리소스에 대해 요금을 청구합니다.
  • 중지됨 - 앱에 액세스할 수 없으며 비용이 발생하지 않습니다. Azure Databricks는 앱의 구성 및 환경을 유지하므로 다시 구성하지 않고 다시 시작할 수 있습니다.
  • 배포 - 앱이 시작됩니다. 아직 액세스할 수 없으며 이 단계에서 요금이 발생하지 않습니다.
  • 충돌 - 앱이 예기치 않게 시작 또는 중지되지 않았습니다. 액세스할 수 없으며 요금이 부과되지 않습니다. 문제가 해결되면 로그를 보고 문제를 해결하고 앱을 다시 시작할 수 있습니다.

앱 상태

앱 상태에는 앱이 사용자 세션 또는 상호 작용 간에 유지해야 하는 모든 데이터 또는 컨텍스트가 포함됩니다. 앱은 다시 시작한 후 메모리 내 상태를 유지하지 않습니다. 앱이 종료되면 메모리에 저장된 모든 데이터가 손실됩니다.

다음과 같은 방법으로 상태를 저장할 수 있습니다.

  • 단일 세션 내의 임시 데이터에 대한 메모리 내 스토리지입니다. 이 데이터는 앱이 다시 시작될 때 손실됩니다.
  • 앱 실행 중 임시 파일에 대한 로컬 파일 시스템입니다. 이 데이터는 앱이 다시 시작될 때 손실됩니다.
  • 영구 구조화된 데이터 및 분석 워크로드에 Databricks SQL을 사용하는 Azure Databricks 테이블.
  • 영구 구조화되지 않은 데이터에 대한 작업 영역 파일입니다.
  • Unity 카탈로그 거버넌스를 사용하는 비정형 영구 데이터에 대한 Unity 카탈로그 볼륨입니다.

일반적인 사용 사례에는 쿼리 결과 캐싱, 사용자 기본 설정 저장 또는 세션 간에 사용자 작업 로깅이 포함됩니다.

앱 인증 및 권한 부여

Databricks 앱은 인증 및 액세스 제어에 OAuth 2.0을 사용합니다. 각 앱에는 Azure Databricks 리소스에 대한 액세스를 인증하고 권한을 부여하는 방법을 결정하는 두 가지 보완 ID인 앱 권한 부여사용자 권한 부여가 있습니다.

  • 앱 권한 부여 - Azure Databricks는 각 앱에 대한 서비스 주체를 자동으로 만듭니다. 이 서비스 주체는 앱의 ID 역할을 하며 앱 개발자가 권한을 부여합니다. 앱의 모든 사용자가 이 ID를 공유하고 동일한 권한 집합에 액세스할 수 있습니다. 이 모델은 로깅 또는 시스템 수준 작업과 같이 개별 사용자의 컨텍스트에 의존하지 않는 작업에 유용합니다.

  • 사용자 권한 부여 - 이 모델은 앱 사용자의 ID를 사용하여 액세스를 인증하고 권한을 부여합니다. 사용자는 앱이 배포된 Azure Databricks 계정에 속해야 합니다. SSO(Single Sign-On)를 통해 로그인한 후 앱은 사용자의 자격 증명을 사용하여 SQL 웨어하우스와 같은 관리되는 리소스에 액세스할 수 있습니다. 이렇게 하면 앱이 앱의 서비스 주체에게 권한을 부여하지 않고 Unity 카탈로그에서 관리하는 세분화된 권한을 준수할 수 있습니다.

앱은 매니페스트의 특정 OAuth 범위를 요청하여 액세스할 수 있는 API 및 리소스를 제어합니다. 이 유연한 모델은 엔터프라이즈급 보안을 지원하고 세분화된 액세스 제어를 가능하게 합니다.

자세한 내용은 Databricks 앱에서 권한 부여 구성을 참조하세요.

앱 사용자

배포 후 앱 개발자는 앱 인스턴스에 대한 사용 권한을 부여하여 CAN_USE 사용자 또는 CAN_MANAGE 그룹과 앱을 공유할 수 있습니다. 사용자는 동일한 작업 영역에 속할 필요는 없지만 동일한 Azure Databricks 계정의 일부여야 합니다. 외부 사용자와 공유하려면 먼저 ID 공급자를 사용하여 계정에 동기화합니다. 자세한 내용은 SCIM 사용하여 Microsoft Entra ID에서 사용자 및 그룹 동기화참조하세요.

CI/CD 파이프라인 및 인프라를 코드로 사용하여 개발, 스테이징 및 프로덕션 환경에 동일한 앱을 배포할 수도 있습니다. 중앙 집중식 앱 UI는 사용자가 사용할 권한이 있는 앱을 검색하고 시작하는 데 도움이 됩니다.