탄력적 풀이 Azure SQL Database의 여러 데이터베이스를 관리하고 크기를 조정하는 데 도움 줍니다.
적용 대상: Azure SQL Database
Azure SQL Database 탄력적 풀은 사용량 요구가 다양하고 예측하기 어려운 여러 데이터베이스를 관리하고 크기를 조정하기 위한 간단하고 비용 효율적인 솔루션입니다. 탄력적 풀의 데이터베이스는 단일 서버에 있으며 설정된 가격에 일정한 수의 리소스를 공유합니다. SQL Database의 탄력적 풀을 사용하면 SaaS(Software-as-a-Service) 개발자가 정해진 예산 내에서 데이터베이스 그룹의 가격 성능을 최적화하는 동시에 각 데이터베이스의 성능 탄력성을 제공할 수 있습니다.
SQL 탄력적 풀이란?
SaaS 개발자는 여러 데이터베이스로 구성된 대규모 데이터 계층을 기반으로 애플리케이션을 빌드합니다. 일반적인 애플리케이션 패턴은 각 고객을 대상으로 단일 데이터베이스를 프로비전하는 것입니다. 그러나 각기 다른 고객의 사용량 패턴은 다양하고 예측하기 어렵기에 각 데이터베이스 사용자의 리소스 요구 사항을 예측하기란 어렵습니다. 일반적으로 다음과 같은 두 가지 옵션이 있습니다.
- 최대 사용량 및 초과 지불을 기반으로 리소스를 과도하게 프로비저닝합니다.
- 사용량이 가장 많을 때 성능 및 고객 만족도를 포기하면서 비용을 절약하기 위해 충분히 프로비전하지 않습니다.
탄력적 풀은 데이터베이스가 필요할 때 필요한 성능 리소스를 확보하도록 보장함으로써 이 문제를 해결합니다. 예측 가능한 예산 내에서 간단한 리소스 할당 메커니즘을 제공합니다. 탄력적 풀을 사용한 SaaS 애플리케이션의 디자인 패턴에 대해 자세히 알아보려면 SQL Database를 사용한 다중 테넌트 SaaS 애플리케이션 디자인 패턴을 참조하세요.
Important
탄력적 풀에 대한 데이터베이스당 요금은 없습니다. 사용량에 관계없이 또는 풀이 한 시간 미만 동안 활성 상태였는지 여부에 관계없이 풀이 최고 eDTU 또는 vCore 수에 있었던 시간에 대해 시간당 요금이 청구됩니다.
탄력적 풀을 사용하면 개별 데이터베이스의 예측할 수 없는 사용량 기간을 수용하기 위해 여러 데이터베이스가 공유하는 풀에 대한 리소스를 구매할 수 있습니다. DTU 기반 구매 모델 또는 vCore 기반 구매 모델을 기반으로 풀을 위해 리소스를 구성할 수 있습니다. 해당 데이터베이스의 집계 사용률은 풀에 대한 리소스 요구 사항을 결정합니다.
풀에서 사용할 수 있는 리소스의 양은 예산으로 제어됩니다. 다음 작업만 하면 됩니다.
- 풀에 데이터베이스를 추가합니다.
- 필요에 따라 DTU 또는 vCore 구매 모델에서 데이터베이스에 대한 최소 및 최대 리소스를 설정합니다.
- 예산에 따라 풀의 리소스를 설정합니다.
풀을 사용하여 린 스타트업에서 점점 더 큰 규모로 성장하여 성숙한 비즈니스로 서비스를 원활하게 확장할 수 있습니다.
풀 내에서 개별 데이터베이스에는 설정된 매개 변수 내에서 리소스를 사용할 수 있는 유연성이 제공됩니다. 부하가 높은 상태에서 데이터베이스는 더 많은 리소스를 사용하여 수요를 충족할 수 있습니다. 낮은 부하량에서 데이터베이스는 적게 사용하고 부하가 없는 데이터베이스는 리소스를 사용하지 않습니다. 단일 데이터베이스가 아닌 전체 풀에 대한 리소스 프로비저닝은 관리 작업을 간소화합니다. 또한 풀에 대한 예측 가능한 예산이 있습니다.
가동 중지 시간을 최소화하면서 기존 풀에 더 많은 리소스를 추가할 수 있습니다. 추가 리소스가 더 이상 필요하지 않으면 언제든지 기존 풀에서 제거할 수 있습니다. 풀에서 데이터베이스를 추가하거나 제거할 수도 있습니다. 데이터베이스가 예상대로 리소스를 충분히 활용하지 않는 경우 이를 제거할 수 있습니다.
참고 항목
탄력적 풀 내부 또는 외부로 데이터베이스를 이동할 경우 데이터베이스 연결이 작업의 끝부분에서 끊길 때 잠깐(초 단위)을 제외하고는 가동 중지 시간이 없습니다.
SQL Database 탄력적 풀은 언제 고려해야 할까요?
풀은 특정 사용 패턴을 보이는 다수의 데이터베이스에 적합합니다. 이 패턴의 특징은 주어진 데이터베이스에 대해 드문 사용률 급증을 포함하여 평균 사용률이 낮다는 것입니다. 반대로, 영구적이고 사용률이 중간이거나 높은 여러 데이터베이스는 동일한 탄력적 풀에 배치하면 안 됩니다.
풀에 더 많은 데이터베이스를 추가할수록 더 큰 비용을 절약하게 됩니다. 애플리케이션 사용률 패턴에 따라 S3 데이터베이스 2개만큼 절약하는 것이 가능합니다.
다음 섹션은 특정 데이터베이스 컬렉션이 풀에 존재함으로써 이점을 얻을 수 있는지 평가하는 방법을 이해하는 데 도움이 됩니다. 이 예제에서는 표준 풀을 사용하지만 다른 서비스 계층의 탄력적 풀에도 동일한 원칙이 적용됩니다.
데이터베이스 활용 패턴 평가
다음 그림에서는 대부분의 시간을 유휴 상태로 보내지만 주기적으로 활동이 갑작스레 증가하는 데이터베이스의 예제를 보여줍니다. 이 활용 패턴은 풀에 적합합니다.
이 차트에서는 각 데이터 포인트에 1분 세분성이 있는 12:00부터 1:00까지 1시간 동안의 DTU 사용량을 보여줍니다. 12:10에 DB1이 90DTU까지 치솟았지만 전체 평균 사용량은 5DTU 미만입니다. 단일 데이터베이스에서 이 워크로드를 실행하려면 S3 컴퓨팅 크기가 필요하지만 이 크기는 활동이 적은 기간 동안 리소스 대부분을 사용하지 않습니다.
풀을 사용하면 이러한 미사용 DTU를 여러 데이터베이스에서 공유할 수 있습니다. 풀은 필요한 DTU와 전체 비용을 줄입니다.
앞 예제를 기반으로 DB1과 유사한 사용률 패턴을 다른 데이터베이스가 가지고 있다고 가정하겠습니다. 다음에 보이는 두 그림에서는 데이터베이스 4개와 데이터베이스 20개의 사용률이 동일한 그래프에 계층화되어 시간이 지남에 따라 DTU 기반 구매 모델을 사용하여 해당 사용률의 특성이 겹치지 않는다는 것을 설명합니다.
전체 데이터베이스 20개의 총 DTU 사용률은 위 차트에서 검은색 선으로 표시되었습니다. 이 선은 총 DTU 사용률이 100DTU를 초과하지 않음을 보여 주며, 이 기간 동안 데이터베이스 20개가 100eDTU를 공유할 수 있음을 나타냅니다. 그 결과로써 단일 데이터베이스에 대해 각 데이터베이스를 S3 컴퓨팅 크기로 배치하는 것과 비교하여 DTU가 20배 절감되며 가격이 13배 절감됩니다.
이 예는 다음과 같은 이유로 이상적입니다.
- 데이터베이스당 최대 사용률과 평균 사용률 간에는 큰 차이가 있습니다.
- 각 데이터베이스의 최대 사용률은 서로 다른 시간에 발생합니다.
- eDTU는 여러 데이터베이스가 공유합니다.
DTU 구매 모델에서 풀의 가격은 풀 eDTU의 기능입니다. 풀의 eDTU 단가는 단일 데이터베이스에 대한 DTU 단가의 1.5배지만, 많은 데이터베이스가 풀 eDTU를 공유할 수 있기에 더 적은 총 eDTU가 필요합니다. 가격 책정 및 eDTU 공유에서의 이러한 차이가 풀이 제공할 수 있는 가격 절감 가능성의 기초가 됩니다.
vCore 구매 모델에서 탄력적 풀의 vCore 단가는 단일 데이터베이스의 vCore 단가와 동일합니다.
어떻게 올바른 풀 크기를 선택할 수 있을까요?
가장 적합한 탄력적 풀의 크기는 풀의 모든 데이터베이스에 필요한 총 리소스에 따라 달라집니다. 다음을 결정해야 합니다.
- 풀에 있는 데이터베이스는 최대량의 컴퓨팅 리소스를 활용합니다. 컴퓨팅 리소스는 선택한 구매 모델에 따라 eDTU 또는 vCore로 인덱싱합니다.
- 풀에 있는 모든 데이터베이스의 최대 스토리지된 바이트 수입니다.
각 구매 모델에서 사용할 수 있는 서비스 계층과 리소스 제한은 DTU 기반 구매 모델 또는 vCore 기반 구매 모델을 참조하세요.
다음 단계는 풀이 단일 데이터베이스보다 비용 효율적인지를 예측하는 데 유용합니다.
풀에 필요한 eDTU 또는 vCore를 예상합니다.
- DTU 기반 구매 모델의 경우:
- MAX(<총 DB 수 x DB당 평균 DTU 사용률>, <동시 최고 DB의 수 x DB당 최고 DTU 사용률>)
- vCore 기반 구매 모델의 경우:
- MAX(<총 DB 수 x DB당 평균 vCore 사용률>, <동시 최고 DB의 수 x DB당 최고 vCore 사용률>)
- DTU 기반 구매 모델의 경우:
풀에 있는 모든 데이터베이스에 필요한 데이터 크기를 추가함으로써 풀에 필요한 스토리지 공간을 예측합니다. DTU 구매 모델의 경우 이 스토리지 크기를 제공하는 eDTU 풀 크기를 확인합니다.
DTU 기반 구매 모델의 경우 1단계 및 2단계에서 eDTU 예상 중 큰 수를 사용합니다.
- vCore 기반 구매 모델의 경우 1단계의 vCore 예상을 사용합니다.
SQL Database 가격 책정 페이지를 참조하세요.
- 3단계에서 예측한 것보다 크지만 가장 작은 크기의 풀을 찾습니다.
4단계의 풀 가격을 적절한 단일 데이터베이스용 컴퓨팅 크기를 사용할 때와 비교합니다.
Important
풀의 데이터베이스 수가 지원되는 최대치에 도달하는 경우에는 고밀도 탄력적 풀에서 리소스 관리를 고려해야 합니다.
데이터베이스별 속성
선택적으로 데이터베이스별 속성을 설정하여 탄력적 풀의 리소스 사용 패턴을 수정합니다. 더 자세한 정보는 DTU 및 vCore 탄력적 풀에 관한 리소스 제한 설명서를 참조하세요.
탄력적 풀과 기타 SQL Database 기능 사용
탄력적 풀과 함께 다른 SQL Database 기능을 사용할 수 있습니다.
탄력적 작업 및 탄력적 풀
풀을 사용하면 탄력적 작업에서 스크립트를 실행하여 관리 작업을 간소화하게 됩니다. 탄력적 작업은 많은 수의 데이터베이스와 관련된 번거로움을 대부분 없애 줍니다.
여러 데이터베이스를 사용하기 위한 다른 데이터베이스 도구에 대한 자세한 내용은 SQL Database를 사용하여 확장을 참조합니다.
하이퍼스케일 탄력적 풀
Azure SQL 데이터베이스 하이퍼스케일 Elastic Pool 이 일반 공급됩니다.
탄력적 풀의 데이터베이스에 대한 비즈니스 연속성 옵션
풀링된 데이터베이스는 일반적으로 단일 데이터베이스에서 사용할 수 있는 동일한 비즈니스 연속성 기능을 지원합니다.
- 지정 시간 복원: 지정 시간 복원은 자동 데이터베이스 백업을 사용하여 풀에 있는 데이터베이스를 특정 시점으로 복원합니다. 특정 시점 복원을 참조하세요.
- 지역 복원: 지역 복원은 데이터베이스가 호스팅되는 지역에 사고가 발생하여 데이터베이스를 사용할 수 없게 되었을 때를 위한 기본 복구 옵션을 제공합니다. 지역 복원을 참조하세요.
- 활성 지역 복제: 지역 복원에서 제공하는 것보다 더 까다로운 복구 요구 사항을 가진 애플리케이션의 경우 활성 지역 복제 또는 장애 조치 그룹을 구성합니다.
위 전략에 관한 자세한 내용은 Azure SQL Database 재해 복구 지침을 참조하세요.
Azure Portal을 사용하여 새 SQL Database 탄력적 풀 만들기
Azure Portal에서 두 가지 방법으로 탄력적 풀을 만들 수 있습니다.
- 탄력적 풀을 만들고 기존 또는 새 서버를 선택합니다.
- 기존 서버에서 탄력적 풀을 만듭니다.
Elastic Pool을 만들고 기존 또는 새 서버를 선택하려면
Azure Portal로 이동하여 탄력적 풀을 만듭니다. Azure SQL을 검색하여 선택합니다.
만들기를 선택하여 SQL 배포 옵션 선택 창을 엽니다. 탄력적 풀에 대한 자세한 정보는 데이터베이스 타일에서 세부 정보 표시를 선택합니다.
데이터베이스 타일의 리소스 종류 드롭다운 목록에서 탄력적 풀을 선택합니다. 그런 다음 만들기를 선택합니다.
그런 다음 Azure Portal, PowerShell, Azure CLI, REST API 또는 T-SQL을 통해 Elastic Pool을 관리합니다.
기존 서버에서 Elastic Pool을 만들려면
기존 서버로 이동하고 새 풀을 선택하여 해당 서버에서 직접 풀을 만듭니다.
참고 항목
서버에 여러 풀을 만들 수 있지만 다른 서버의 데이터베이스를 동일한 풀에 추가할 수는 없습니다.
풀의 서비스 계층은 풀의 탄성에 사용할 수 있는 기능과 각 데이터베이스에서 사용할 수 있는 최대 리소스 양을 결정합니다. 자세한 내용은 DTU 모델의 탄력적 풀에 대한 리소스 제한을 참조하세요. 탄력적 풀에 대한 vCore 기반 리소스 제한은 vCore 기반 리소스 제한 - 탄력적 풀을 참조하세요.
풀의 리소스 및 가격 책정을 구성하려면 풀 구성을 선택합니다. 그런 다음, 서비스 계층을 선택하고, 풀에 데이터베이스를 추가하고, 풀 및 해당 데이터베이스에 대한 리소스 제한을 구성합니다.
풀을 구성한 후 적용을 선택하고, 풀 이름을 지정하고, 확인을 선택하여 풀을 만듭니다.
그런 다음 Azure Portal, PowerShell, Azure CLI, REST API 또는 T-SQL을 통해 Elastic Pool을 관리합니다.
탄력적 풀 및 해당 데이터베이스 모니터링
Azure Portal에서 탄력적 풀 및 해당 풀 내의 데이터베이스의 사용률을 모니터링할 수 있습니다. 탄력적 풀을 변경하는 동시에 모든 변경 내용을 제출할 수도 있습니다. 이러한 변경 내용에는 데이터베이스 추가 또는 제거, 탄력적 풀 설정 변경 또는 데이터베이스 설정 변경이 포함됩니다.
성능 평가와 결합된 기본 제공 성능 모니터링 및 경고 도구를 사용합니다. SQL Database는 더 쉬운 모니터링을 위해 메트릭 및 리소스 로그를 내보낼 수도 있습니다.
고객 사례 연구
- SnelStart: SnelStart는 SQL Database와 함께 탄력적 풀을 사용하여 매월 1,000개의 새로운 SQL Database로 비즈니스 서비스를 빠르게 확장했습니다.
- Umbraco: Umbraco는 탄력적 풀과 SQL Database를 사용하여 클라우드의 수천 개의 테넌트 분량의 서비스를 신속하게 프로비저닝하고 스케일링합니다.
- Daxko/CSI: Daxko/CSI는 탄력적 풀과 SQL Database를 사용하여 개발 주기를 가속화하고 고객 서비스 및 성능을 개선했습니다.
관련 콘텐츠
- 가격 책정 정보는 탄력적 풀 가격 책정을 참조하세요.
- 탄력적 풀의 크기를 조정하려면 탄력적 풀 크기 조정 및 탄력적 풀 크기 조정 - 샘플 코드를 참조하세요.
- Azure SQL 데이터베이스에서 Elastic Pool 관리 방법에 대해 알아봅니다.
- 탄력적 풀을 사용한 SaaS 애플리케이션의 디자인 패턴에 대해 자세히 알아보려면 SQL Database를 사용한 다중 테넌트 SaaS 애플리케이션 디자인 패턴을 참조하세요.
- 탄력적 풀을 사용하는 SaaS 자습서의 경우 Wingtip SaaS 애플리케이션 소개를 참조하세요.
- 많은 데이터베이스가 있는 탄력적 풀의 리소스 관리에 대해 알아보려면 조밀한 탄력적 풀의 리소스 관리를 참조하세요.
- 하이퍼스케일 탄력적 풀에 대해 자세히 알아보세요.