Azure Functions를 사용하여 Azure Synapse Analytics에서 전용 SQL 풀(이전의 SQL DW)에 대한 컴퓨팅 리소스 관리

Tip

Microsoft Fabric Data Warehouse는 데이터 레이크 기반의 엔터프라이즈 규모 관계형 웨어하우스로, 미래 대비 아키텍처, 기본 제공 AI 및 새로운 기능을 제공합니다. 데이터 웨어하우징이 처음이라면, Fabric Data Warehouse부터 시작하세요. 기존 전용 SQL 풀 워크로드는 Fabric으로 업그레이드함으로써 데이터 과학, 실시간 분석 및 보고 전반에 걸쳐 새로운 기능에 액세스할 수 있습니다.

이 자습서에서는 Azure Functions를 사용하여 Azure Synapse Analytics에서 전용 SQL 풀(이전의 SQL DW)에 대한 컴퓨팅 리소스를 관리합니다.

전용 SQL 풀(이전의 SQL DW)에서 Azure Function App을 사용하려면 서비스 주체 계정을 만들어야 합니다. 서비스 주체 계정에는 전용 SQL 풀(이전의 SQL DW) 인스턴스와 동일한 구독에서 기여자 액세스 권한이 필요합니다.

Azure Resource Manager 템플릿을 사용하여 타이머 기반 크기 조정 배포

템플릿을 배포하려면 다음 정보가 필요합니다.

  • 전용 SQL 풀(이전의 SQL DW) 인스턴스가 있는 리소스 그룹의 이름
  • 전용 SQL 풀(이전의 SQL DW) 인스턴스가 있는 서버의 이름
  • 전용 SQL 풀(이전의 SQL DW) 인스턴스의 이름
  • Microsoft Entra ID의 테넌트 ID(디렉터리 ID)
  • 구독 ID
  • 서비스 주체 애플리케이션 ID
  • 서비스 주체 비밀 키

이전 정보가 있으면 다음 템플릿을 배포합니다.

템플릿을 배포한 후에는 무료 Azure App Service 계획, 사용량 기반 함수 앱 계획 및 로깅 및 작업 큐를 처리하는 스토리지 계정이라는 세 가지 새로운 리소스를 찾아야 합니다. 다른 섹션을 계속 읽고 필요에 맞게 배포된 함수를 수정하는 방법을 확인합니다.

크기 조정 작업의 시간 변경

  1. 함수 앱 서비스로 이동하세요. 기본값을 사용하여 템플릿을 배포한 경우 이 서비스의 이름은 DWOperations여야 합니다. 함수 앱이 열리면, 함수 앱 서비스에 5개의 함수가 배포되어 있는 것을 확인할 수 있습니다.

    템플릿을 사용하여 배포되는 함수

  2. DWScaleDownTrigger 또는 DWScaleUpTrigger를 선택하여 스케일 업하거나 축소합니다. 드롭다운 메뉴에서 통합을 선택합니다.

    함수에 대한 통합 선택

  3. 현재 표시되는 값은 %ScaleDownTime% 또는 %ScaleUpTime%말해야 합니다. 이러한 값은 일정이 애플리케이션 설정에 정의된 값을 기반으로 함을 나타냅니다. 지금은 이 값을 무시하고 다음 단계에 따라 일정을 원하는 시간으로 변경할 수 있습니다.

  4. 일정 영역에서 Azure Synapse Analytics를 스케일 업할 빈도를 반영하려는 CRON 식을 추가합니다.

    함수 일정 변경

    schedule 은 다음 6개의 필드를 포함하는 CRON 식 입니다.

    {second} {minute} {hour} {day} {month} {day-of-week}
    

    예를 들어 "0 30 9 * * 1-5" 는 평일 오전 9시 30분에 트리거를 반영합니다. 자세한 내용은 Azure Functions 일정 예제를 참조하세요.

컴퓨팅 수준 변경

  1. 함수 앱 서비스로 이동하세요. 기본값을 사용하여 템플릿을 배포한 경우 이 서비스의 이름은 DWOperations여야 합니다. 함수 앱이 열리면, 함수 앱 서비스에 5개의 함수가 배포되어 있는 것을 확인할 수 있습니다.

  2. DWScaleDownTrigger 또는 DWScaleUpTrigger를 선택하여 컴퓨팅 값을 확장하거나 축소합니다. 함수를 선택하면 창에 index.js 파일이 표시됩니다.

    함수 트리거 컴퓨팅 수준 변경

  3. ServiceLevelObjective의 값을 원하는 수준으로 변경하고 저장을 선택합니다. ServiceLevelObjective는 통합 섹션에 정의된 일정에 따라 데이터 웨어하우스 인스턴스의 크기를 조정하는 컴퓨팅 수준입니다.

크기 조정 대신 일시 중지 또는 다시 시작 사용

현재 기본적으로 함수는 DWScaleDownTriggerDWScaleUpTrigger입니다. 대신 일시 중지 및 다시 시작 기능을 사용하려면 DWPauseTrigger 또는 DWResumeTrigger를 사용하도록 설정할 수 있습니다.

  1. 함수 창으로 이동합니다.

    함수 창

  2. 활성화하려는 해당 트리거에 대한 슬라이딩 토글을 선택합니다.

  3. 각 트리거에 대한 통합 탭으로 이동하여 일정을 변경합니다.

    메모

    크기 조정 트리거와 일시 중지/다시 시작 트리거 간의 기능적 차이는 큐로 전송되는 메시지입니다. 자세한 내용은 새 트리거 함수 추가를 참조하세요.

새 트리거 함수 추가

현재 템플릿에는 두 개의 크기 조정 함수만 포함되어 있습니다. 이러한 함수를 사용하면 하루 동안 한 번만 축소할 수 있고 한 번만 확대할 수 있습니다. 하루에 여러 번 스케일 다운하거나 주말에 다른 크기 조정 동작을 갖는 등 보다 세부적인 제어를 위해 다른 트리거를 추가해야 합니다.

  1. 새 빈 함수를 만듭니다. + 함수 위치 근처의 단추를 선택하여 함수 템플릿 창을 표시합니다.

  2. 언어에서 JavaScript를 선택한 다음 TimerTrigger를 선택합니다.

    새 함수 만들기

  3. 함수 이름을 지정하고 일정을 설정합니다. 이미지는 매주 토요일 자정(금요일 늦은 저녁)에 함수를 트리거하는 방법을 보여줍니다.

    토요일 간소화

  4. 다른 트리거 함수 중 하나에서 index.js 콘텐츠를 복사합니다.

    인덱스 js 복사

  5. 다음과 같이 작업 변수를 원하는 동작으로 설정합니다.

    // Resume the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "ResumeDw"
    }
    
    // Pause the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "PauseDw"
    }
    
    // Scale the dedicated SQL pool (formerly SQL DW)l instance to DW600c
    var operation = {
        "operationType": "ScaleDw",
        "ServiceLevelObjective": "DW600c"
    }
    

복잡한 일정 예약

이 섹션에서는 일시 중지, 다시 시작 및 크기 조정 기능의 더 복잡한 일정을 얻는 데 필요한 사항을 간략하게 설명합니다.

예제 1

매일 오전 8시에 DW600c로 확장하고 오후 8시에 DW200c로 축소합니다.

기능 일정 Operation
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function2 0 0 20 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

예제 2

매일 오전 8시에 DW1000c로 확장하고, 오후 4시에 DW600으로 한 번 축소하고, 오후 10시에 DW200c로 축소합니다.

기능 일정 Operation
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 22 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

예제 3

오전 8시에 DW1000c로 확장하고 평일 오후 4시에 DW600c로 한 번 축소합니다. 금요일 오후 11시에 잠시 멈추고 월요일 아침 7시에 재개됩니다.

기능 일정 Operation
Function1 0 0 8 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 23 * * 5 var operation = {"operationType": "PauseDw"}
Function4 0 0 7 * * 1 var operation = {"operationType": "ResumeDw"}

다음 단계

타이머 트리거 Azure Functions에 대해 자세히 알아봅니다.

전용 SQL 풀(이전의 SQL DW) 샘플 리포지토리를 참조하세요.