탄력적 풀이 Azure SQL Database의 여러 데이터베이스를 관리하고 크기를 조정하는 데 도움을 주는 방식

적용 대상: Azure SQL Database

Azure SQL Database 탄력적 풀은 사용량 요구가 다양하고 예측하기 어려운 여러 데이터베이스를 관리하고 스케일링하기 위한 간단하고 비용 효율적인 솔루션입니다. 탄력적 풀의 데이터베이스는 단일 서버에 있으며 설정된 가격에 일정한 수의 리소스를 공유합니다. SQL Database의 탄력적 풀을 사용하면 SaaS(서비스 제공 소프트웨어) 개발자가 지정된 예산 내에서 데이터베이스 그룹의 가격 성능을 최적화하는 동시에 각 데이터베이스에 대한 성능 탄력성을 제공할 수 있습니다.

SQL 탄력적 풀이란?

SaaS 개발자는 여러 데이터베이스로 구성된 대규모 데이터 계층 위에 애플리케이션을 빌드합니다. 일반적인 애플리케이션 패턴은 각 고객에 대해 단일 데이터베이스를 프로비전합니다. 하지만 다양한 고객에게는 종종 다양하고 예측할 수 없는 사용량 패턴이 있으며 각 데이터베이스 사용자의 리소스 요구 사항을 예측하기 어렵습니다. 일반적으로 두 가지 옵션이 있습니다.

  • 최대 사용량 및 초과 지불을 기반으로 리소스를 과도하게 프로비저닝합니다.
  • 최대 사용 기간 동안 성능 및 고객 만족은 저하되지만 비용을 절감하는 언더프로비저닝

탄력적 풀은 데이터베이스가 필요한 성능 리소스를 필요할 때 얻도록 하여 이 문제를 해결합니다. 예측 가능한 예산 내에서 간단한 리소스 할당 메커니즘을 제공합니다. 탄력적 풀을 사용한 SaaS 애플리케이션의 디자인 패턴에 대해 자세히 알아보려면 SQL Database를 사용한 다중 테넌트 SaaS 애플리케이션 디자인 패턴을 참조하세요.

중요

탄력적 풀에 대한 데이터베이스당 요금은 없습니다. 사용량에 관계없이 또는 풀이 한 시간 미만 동안 활성 상태였는지 여부에 관계없이 풀이 최고 eDTU 또는 vCore 수에 있었던 시간에 대해 시간당 요금이 청구됩니다.

탄력적 풀을 사용하면 개별 데이터베이스의 예측할 수 없는 사용 기간을 수용하기 위해 여러 데이터베이스에서 공유하는 풀에 대한 리소스를 구매할 수 있습니다. DTU 기반 구매 모델 또는 vCore 기반 구매 모델에 따라 풀에 대한 리소스를 구성할 수 있습니다. 풀에 대한 리소스 요구 사항은 해당 데이터베이스의 집계 사용률에 의해 결정됩니다.

풀에서 사용할 수 있는 리소스의 양은 예산으로 제어됩니다. 다음 작업만 하면 됩니다.

  • 풀에 데이터베이스를 추가합니다.
  • 선택적으로 데이터베이스에 대한 최소 및 최대 리소스를 설정합니다. 이러한 리소스는 선택한 리소스 모델에 따라 최소 및 최대 DTU 또는 최소 또는 최대 vCore입니다.
  • 예산에 따라 풀의 리소스를 설정합니다.

풀을 사용하여 린 스타트업에서 점점 더 큰 규모로 성숙한 비즈니스로 서비스를 원활하게 확장할 수 있습니다.

풀 내에서 개별 데이터베이스에는 설정된 매개 변수 내에서 리소스를 사용할 수 있는 유연성이 제공됩니다. 부하가 높은 상태에서 데이터베이스는 더 많은 리소스를 사용하여 수요를 충족할 수 있습니다. 낮은 부하량에서 데이터베이스는 적게 사용하고 부하가 없는 데이터베이스는 리소스를 사용하지 않습니다. 단일 데이터베이스가 아닌 전체 풀에 대한 리소스 프로비저닝은 관리 작업을 간소화합니다. 또한 풀에 대한 예측 가능한 예산이 있습니다.

가동 중지 시간을 최소화하면서 기존 풀에 더 많은 리소스를 추가할 수 있습니다. 추가 리소스가 더 이상 필요하지 않으면 언제든지 기존 풀에서 제거할 수 있습니다. 풀에서 데이터베이스를 추가하거나 제거할 수도 있습니다. 데이터베이스가 예상대로 리소스를 충분히 활용하지 않는 경우 이를 제거할 수 있습니다.

참고

탄력적 풀 내부 또는 외부로 데이터베이스를 이동할 때 데이터베이스 연결이 끊어질 때 작업이 끝날 때 짧은 기간(초 단위)을 제외하고는 가동 중지 시간이 없습니다.

SQL Database 탄력적 풀은 언제 고려해야 하나요?

풀은 특정 사용 패턴을 보이는 다수의 데이터베이스에 적합합니다. 주어진 데이터베이스에 대해 이 패턴은 드물게 사용률 급증이 있는 낮은 평균 사용률을 특징으로 합니다. 반대로, 영구적이고 사용률이 중간이거나 높은 여러 데이터베이스는 동일한 탄력적 풀에 배치하면 안 됩니다.

풀에 더 많은 데이터베이스를 추가할수록 비용이 더 많이 절감됩니다. 애플리케이션 사용률 패턴에 따라 S3 데이터베이스 두 개 만큼 절감이 가능합니다.

다음 섹션에서는 데이터베이스의 특정 컬렉션이 풀에 있는 것이 이득이 될 수 있는지 평가하는 방법을 이해할 수 있습니다. 예제에서는 표준 풀을 사용하지만 기본 및 프리미엄 풀에도 동일한 원칙이 적용됩니다.

데이터베이스 활용 패턴 평가

다음 그림에는 대부분의 시간을 유휴 상태로 있지만 정기적으로 갑작스러운 작업이 증가하는 데이터베이스의 예가 나와있습니다. 이 활용 패턴은 풀에 적합합니다.

풀에 적합한 단일 데이터베이스를 보여 주는 차트

이 차트에서는 각 데이터 포인트에 1분 세분성이 있는 12:00부터 1:00까지 1시간 동안의 DTU 사용량을 보여 줍니다. 12:10에 DB1이 90DTU까지 치솟았지만 전체 평균 사용량은 5DTU 미만입니다. 단일 데이터베이스에서 이 워크로드를 실행하려면 S3 컴퓨팅 크기가 필요하지만 이 크기는 작업이 적은 기간 동안 리소스의 대부분을 사용하지 않게 됩니다.

풀을 사용하면 이러한 미사용 DTU를 여러 데이터베이스에서 공유할 수 있습니다. 풀은 필요한 DTU와 전체 비용을 줄입니다.

앞의 예제에 기초하여, DB1같은 유사한 사용률 패턴의 다른 데이터베이스가 있다고 가정합니다. 두 그림에서 4개의 데이터베이스 사용률 및 20개의 데이터베이스는 동일한 그래프에 계층화되어 시간에 따라 DTU 기반 구매 모델을 사용하여 해당 사용률의 특성이 겹치지 않는다는 것을 설명합니다.

풀에 적합한 사용 패턴을 가진 네 개의 데이터베이스를 보여 주는 차트

풀에 적합한 사용 패턴을 가진 20개의 데이터베이스를 보여 주는 차트

전체 20개 데이터베이스의 총 DTU 사용률은 위 차트에서 검은색 선으로 표시되었습니다. 이 선은 DTU 사용률 집계가 100 DTU를 초과하지 않음을 보여 주며, 이 기간 동안 20개 데이터베이스가 100 eDTU를 공유할 수 있음을 나타냅니다. 이렇게 하면 각 데이터베이스를 단일 데이터베이스용 S3 컴퓨팅 크기에 배치할 때와 비교하여 DTU가 1/20로 감소하고 가격이 1/13로 감소합니다.

이 예는 다음과 같은 이유로 이상적입니다.

  • 최고사용률과 데이터베이스당 평균 사용률간에 큰 차이가 있습니다.
  • 각 데이터베이스의 최고 사용률이 시간 내에 여러 지점에서 발생합니다.
  • eDTU는 많은 데이터베이스 간에 공유됩니다.

DTU 구매 모델에서 풀의 가격은 풀 eDTU의 기능입니다. 풀의 eDTU 단가는 단일 데이터베이스에 대한 DTU 단가보다 1.5배지만, 많은 데이터베이스가 풀 eDTU를 공유할 수 있고 필요한 전체 eDTU가 적습니다. 가격 책정 및 eDTU 공유에서의 이러한 차이가 풀이 제공할 수 있는 가격 절감 가능성의 기초가 됩니다.

VCore 구매 모델에서 탄력적 풀에 대한 vCore의 단가는 단일 데이터베이스에 대한 vCore 단가와 동일합니다.

올바른 풀 크기를 선택하려면 어떻게 할까요?

풀의 적절한 크기는 풀의 모든 데이터베이스에 필요한 집계 리소스에 따라 달라집니다. 다음을 결정해야 합니다.

  • 풀에 있는 데이터베이스는 최대량의 컴퓨팅 리소스를 활용합니다. 컴퓨팅 리소스는 선택한 구매 모델에 따라 eDTU 또는 vCore를 통해 인덱싱됩니다.
  • 풀에 있는 모든 데이터베이스의 최대 스토리지된 바이트 수입니다.

각 구매 모델에서 사용할 수 있는 서비스 계층과 리소스 제한은 DTU 기반 구매 모델 또는 vCore 기반 구매 모델을 참조하세요.

다음 단계는 풀이 단일 데이터베이스보다 비용 효율적인지를 예측하는 데 유용합니다.

  1. 풀에 필요한 eDTU 또는 vCore를 예상합니다.
    • DTU 기반 구매 모델의 경우:
      • MAX(<총 DB 수 x DB당 평균 DTU 사용률>, <동시 최고 DB의 수 x DB당 최고 DTU 사용률>)
    • vCore 기반 구매 모델의 경우:
      • MAX(<총 DB 수 x DB당 평균 vCore 사용률>, <동시 최고 DB의 수 x DB당 최고 vCore 사용률>)
  2. 풀에 있는 모든 데이터베이스에 필요한 데이터 크기를 추가함으로써 풀에 필요한 스토리지 공간을 예측합니다. DTU 구매 모델의 경우 이 스토리지 크기를 제공하는 eDTU 풀 크기를 확인합니다.
  3. DTU 기반 구매 모델의 경우 1단계 및 2단계에서 eDTU 예상 중 큰 수를 사용합니다. vCore 기반 구매 모델의 경우 1단계의 vCore 예상을 사용합니다.
  4. SQL Database 가격 책정 페이지를 확인하고 3단계의 예상보다 큰 경우 가장 작은 풀 크기를 찾습니다.
  5. 4단계의 풀 가격을 적절한 단일 데이터베이스용 컴퓨팅 크기를 사용할 때의 가격과 비교합니다.

중요

풀의 데이터베이스 수가 지원되는 최대치에 도달하는 경우에는 고밀도 탄력적 풀에서 리소스 관리를 고려해야 합니다.

데이터베이스별 속성

선택적으로 데이터베이스별 속성을 설정하여 탄력적 풀의 리소스 사용 패턴을 수정할 수 있습니다. 자세한 내용은 DTUvCore 탄력적 풀에 대한 리소스 제한 문서를 참조하세요.

탄력적 풀과 기타 SQL Database 기능 사용

탄력적 풀과 함께 다른 SQL Database 기능을 사용할 수 있습니다.

탄력적 작업 및 탄력적 풀

풀을 통해 탄력적 작업의 스크립트를 실행하여 관리 작업이 간소화됩니다. 탄력적 작업은 많은 수의 데이터베이스와 관련된 번거로움을 대부분 없애 줍니다.

여러 데이터베이스를 사용하기 위한 다른 데이터베이스 도구에 대한 자세한 내용은 SQL Database를 사용하여 확장을 참조합니다.

탄력적 풀의 데이터베이스에 대한 비즈니스 연속성 옵션

풀링된 데이터베이스는 일반적으로 단일 데이터베이스에서 사용할 수 있는 동일한 비즈니스 연속성 기능을 지원합니다.

Azure Portal을 사용하여 새 SQL Database 탄력적 풀 만들기

Azure Portal에서 두 가지 방법으로 탄력적 풀을 만들 수 있습니다.

  • 탄력적 풀을 만들고 기존 또는 새 서버를 선택합니다.
  • 기존 서버에서 탄력적 풀을 만듭니다.

탄력적 풀을 만들고 기존 또는 새 서버를 선택하려면

  1. Azure Portal로 이동하여 탄력적 풀을 만듭니다. Azure SQL을 검색하여 선택합니다.

  2. 만들기를 선택하여 SQL 배포 옵션 선택 창을 엽니다. 탄력적 풀에 대한 자세한 정보는 데이터베이스 타일에서 세부 정보 표시를 선택합니다.

  3. 데이터베이스 타일의 리소스 종류 드롭다운에서 탄력적 풀을 선택합니다. 그런 다음 만들기를 선택합니다.

    탄력적 풀 만들기를 보여 주는 스크린샷

기존 서버에서 탄력적 풀을 만들려면

  • 기존 서버로 이동하고 새 풀을 선택하여 해당 서버에서 직접 풀을 만듭니다.

참고

서버에 풀을 여러 개 만들 수 있지만 다른 서버에 속하는 데이터베이스를 동일한 풀에 추가할 수 없습니다.

풀의 서비스 계층에 따라 풀에 있는 탄력적 데이터베이스에서 사용 가능한 기능과 각 데이터베이스에서 사용 가능한 최대 리소스 양이 결정됩니다. 자세한 내용은 DTU 모델의 탄력적 풀에 대한 리소스 제한을 참조하세요. 탄력적 풀에 대한 vCore 기반 리소스 제한은 vCore 기반 리소스 제한 - 탄력적 풀을 참조하세요.

풀의 리소스 및 가격 책정을 구성하려면 풀 구성을 선택합니다. 그런 다음, 서비스 계층을 선택하고, 풀에 데이터베이스를 추가하고, 풀과 해당 데이터베이스에 대한 리소스 제한을 구성합니다.

풀을 구성한 후 적용을 선택하고 풀 이름을 지정한 다음 확인을 선택하여 풀을 만듭니다.

탄력적 풀 및 해당 데이터베이스 모니터링

Azure Portal에서 탄력적 풀 및 해당 풀 내의 데이터베이스의 사용률을 모니터링할 수 있습니다. 탄력적 풀에 일련의 내용을 변경하는 동시에 모든 변경 내용을 전송할 수도 있습니다. 이러한 변경 내용에는 데이터베이스 추가 또는 제거, 탄력적 풀 설정 변경, 데이터베이스 설정 변경이 포함됩니다.

성능 평가와 결합된 기본 제공 성능 모니터링경고 도구를 사용합니다. SQL Database는 더 쉬운 모니터링을 위해 메트릭 및 리소스 로그를 내보낼 수도 있습니다.

고객 사례 연구

  • SnelStart: SnelStart는 SQL Database와 함께 탄력적 풀을 사용하여 매월 1,000개의 새로운 SQL Database로 비즈니스 서비스를 빠르게 확장했습니다.
  • Umbraco: Umbraco는 탄력적 풀과 SQL Database를 사용하여 클라우드의 수천 개의 테넌트 분량의 서비스를 신속하게 프로비저닝하고 스케일링합니다.
  • Daxko/CSI: Daxko/CSI는 탄력적 풀과 SQL Database를 사용하여 개발 주기를 가속화하고 고객 서비스 및 성능을 개선했습니다.

다음 단계