이 문서에서는 데이터베이스 서비스에 대해 입증된 FinOps 사례의 컬렉션을 간략하게 설명합니다. 비용을 최적화하고, 효율성을 향상시키고, ARG(Azure Resource Graph) 쿼리를 사용하여 데이터베이스 리소스에 대한 인사이트를 얻기 위한 전략을 제공합니다. 이러한 사례를 따르면 데이터베이스 서비스가 비용 효율적이고 조직의 재무 목표에 부합하는지 확인할 수 있습니다.
Cosmos DB (코스모스 데이터베이스)
다음 섹션에서는 Cosmos DB에 대한 ARG 쿼리를 제공합니다. 이러한 쿼리는 Cosmos DB 계정에 대한 인사이트를 얻고 적절한 RU(요청 단위)로 구성되었는지 확인하는 데 도움이 됩니다. Azure Advisor에서 사용 패턴을 분석하고 권장 사항을 표시하면 비용 효율성을 위해 RU를 최적화할 수 있습니다.
쿼리: Cosmos DB 요청 단위 확인
이 ARG 쿼리는 Azure 환경 내의 Cosmos DB 계정을 분석하여 적절한 RU로 구성되었는지 확인합니다.
설명
이 쿼리는 사용 패턴에 따라 RU를 최적화하기 위한 권장 사항이 포함된 Cosmos DB 계정을 식별합니다. 비용 효율성을 위해 RU를 조정하기 위해 Azure Advisor의 권장 사항을 표시합니다.
범주
최적화
쿼리
advisorresources
| where type =~ 'microsoft.advisor/recommendations'
| where properties.impactedField == 'microsoft.documentdb/databaseaccounts'
and properties.recommendationTypeId == '8b993855-1b3f-4392-8860-6ed4f5afd8a7'
| order by id asc
| project
id, subscriptionId, resourceGroup,
CosmosDBAccountName = properties.extendedProperties.GlobalDatabaseAccountName,
DatabaseName = properties.extendedProperties.DatabaseName,
CollectionName = properties.extendedProperties.CollectionName,
EstimatedAnnualSavings = bin(toreal(properties.extendedProperties.annualSavingsAmount), 1),
SavingsCurrency = properties.extendedProperties.savingsCurrency
쿼리: 다른 처리량 모드로 전환하면 도움이 되는 Cosmos DB 컬렉션
이 ARG 쿼리는 Azure Advisor 권장 사항에 따라 처리량 모드를 전환하면 도움이 되는 Azure 환경 내의 Cosmos DB 컬렉션을 식별합니다.
설명
이 쿼리는 성능 및 비용을 최적화하기 위해 처리량 모드(예: 수동에서 자동 크기 조정 또는 그 반대의 경우)를 전환하는 권장 사항이 있는 Cosmos DB 컬렉션을 표시합니다. Azure Advisor 권장 사항을 사용하여 잠재적인 개선 사항을 강조 표시합니다.
범주
최적화
혜택
- 비용 최적화: 사용 패턴 및 권장 사항에 따라 보다 적절한 처리량 모드로 전환하여 비용을 절감할 수 있는 Cosmos DB 컬렉션을 식별합니다.
- 성능 관리: Cosmos DB 컬렉션이 최적의 처리량 모드를 사용하고 성능을 향상시키고 과잉 프로비전 또는 과소 프로비저닝을 방지하도록 합니다.
쿼리
advisorresources
| where type =~ 'microsoft.advisor/recommendations'
| where properties.impactedField == 'microsoft.documentdb/databaseaccounts'
and properties.recommendationTypeId in (
' cdf51428-a41b-4735-ba23-39f3b7cde20c',
' 6aa7a0df-192f-4dfa-bd61-f43db4843e7d'
)
| order by id asc
| project
id, subscriptionId, resourceGroup,
CosmosDBAccountName = properties.extendedProperties.GlobalDatabaseAccountName,
DatabaseName = properties.extendedProperties.DatabaseName,
CollectionName = properties.extendedProperties.CollectionName,
EstimatedAnnualSavings = bin(toreal(properties.extendedProperties.annualSavingsAmount), 1),
SavingsCurrency = properties.extendedProperties.savingsCurrency
쿼리: Cosmos DB 백업 모드 세부 정보
이 ARG 쿼리는 '주기적' 백업 정책을 사용하고 여러 쓰기 위치를 사용하도록 설정하지 않은 Cosmos DB 계정을 분석합니다.
범주
최적화
쿼리
resources
| where type == "microsoft.documentdb/databaseaccounts"
| where resourceGroup in ({ResourceGroup})
| where properties.backupPolicy.type == 'Periodic'
and tobool(properties.enableMultipleWriteLocations) == false
| extend BackupCopies = toreal(properties.backupPolicy.periodicModeProperties.backupRetentionIntervalInHours)
/ (toreal(properties.backupPolicy.periodicModeProperties.backupIntervalInMinutes) / real(60))
| where BackupCopies >= 10
or (BackupCopies > 2
and toint(properties.backupPolicy.periodicModeProperties.backupRetentionIntervalInHours) <= 168)
| order by id asc
| project id, CosmosDBAccountName=name, resourceGroup, subscriptionId, BackupCopies
SQL 데이터베이스들
Azure SQL Database 사용자 개입 없이 업그레이드, 패치, 백업 및 모니터링과 같은 대부분의 데이터베이스 관리 기능을 처리하는 완전히 관리되는 PaaS(Platform as a Service) 데이터베이스 엔진입니다. 탄력적 풀을 사용하면 여러 데이터베이스 간에 리소스를 공유하여 비용을 최적화할 수 있습니다.
관련 리소스:
- Azure SQL Database 제품 페이지
- Azure SQL Database 가격 책정
- Azure SQL Database 설명서
- SQL Database 성능 지침
쿼리: SQL DB 유휴 상태
이 ARG 쿼리는 SQL 데이터베이스가 오래되거나 개발 중이거나 테스트 목적으로 사용될 수 있음을 나타내는 이름으로 SQL 데이터베이스를 식별합니다.
범주
최적화
쿼리
resources
| where type == "microsoft.sql/servers/databases"
| where name contains "old" or name contains "Dev"or name contains "test"
| where resourceGroup in ({ResourceGroup})
| extend SQLDBName = name, Type = sku.name, Tier = sku.tier, Location = location
| order by id asc
| project id, SQLDBName, Type, Tier, resourceGroup, Location, subscriptionId
사용하지 않는 탄력적 풀 제거
권장 사항: 불필요한 비용을 방지하기 위해 연결된 데이터베이스가 없는 탄력적 풀을 제거합니다.
사용되지 않는 탄력적 풀에 대한 정보
SQL 탄력적 풀을 사용하면 여러 데이터베이스가 공통 리소스 풀을 공유할 수 있습니다. Elastic Pool에 데이터베이스가 없는 경우에도 구성된 eDTU 또는 vCore를 기준으로 요금이 발생합니다. 빈 탄력적 풀을 제거하면 이러한 불필요한 비용이 제거됩니다.
메모
FinOps 허브는 사용되지 않는 탄력적 풀을 자동으로 식별할 수 있습니다. 자세히알아보세요.
사용하지 않는 탄력적 풀 식별
다음 ARG 쿼리를 사용하여 연결된 데이터베이스가 없는 탄력적 풀을 식별합니다.
resources
| where type == "microsoft.sql/servers/elasticpools"
| extend elasticPoolId = tolower(tostring(id))
| extend elasticPoolName = name
| extend elasticPoolRG = resourceGroup
| extend skuName = tostring(sku.name)
| extend skuTier = tostring(sku.tier)
| extend skuCapacity = tostring(sku.capacity)
| join kind=leftouter (
resources
| where type == "microsoft.sql/servers/databases"
| extend elasticPoolId = tolower(tostring(properties.elasticPoolId))
) on elasticPoolId
| summarize databaseCount = countif(isnotempty(elasticPoolId1)) by
elasticPoolId,
elasticPoolName,
serverResourceGroup = resourceGroup,
name,
skuName,
skuTier,
skuCapacity,
elasticPoolRG
| where databaseCount == 0
| project elasticPoolId,
elasticPoolName,
databaseCount,
elasticPoolRG,
skuName,
skuTier,
skuCapacity
피드백 제공
빠른 검토를 통해 어떻게 하고 있는지 알려주세요. 이러한 검토를 사용하여 FinOps 도구 및 리소스를 개선하고 확장합니다.
특정 항목을 찾고 있는 경우 기존 항목에 투표하거나 새 아이디어를 만듭니다. 다른 사용자와 아이디어를 공유하여 더 많은 표를 얻습니다. 우리는 가장 많은 표를 가진 아이디어에 초점을 맞추고 있습니다.
관련 콘텐츠
관련 리소스:
관련 솔루션: