Azure SQL Managed Instance는 최신 SQL Server Enterprise Edition과 거의 완전한 호환성을 제공하는 완전히 관리되는 PaaS(Platform as a Service) 데이터베이스 엔진입니다. 인스턴스 범위 배포 모델을 가상 네트워크 네이티브 네트워킹과 결합하여 관리되는 플랫폼의 운영 이점과 함께 광범위한 SQL Server 기능 지원을 제공합니다. SQL Managed Instance는 데이터베이스 간 쿼리, SQL Server 에이전트, Service Broker 및 CLR(공용 언어 런타임) 통합과 같은 인스턴스 범위 기능을 사용하는 SQL Server 워크로드를 대상으로 합니다.
이 문서에서는 설계자로서 데이터 저장소 의사 결정 트리 를 검토하고 워크로드에 대한 데이터베이스 엔진으로 Azure SQL Managed Instance를 선택했다고 가정합니다.
이 문서의 지침은 Well-Architected Framework 핵심 요소의 원칙에 매핑되는 아키텍처 권장 사항을 제공합니다.
기술 범위
이 검토는 다음 Azure 리소스에 대한 상호 연결된 결정에 중점을 둡니다.
- Azure SQL Managed Instance(애저 SQL 매니지드 인스턴스)
메모
이 서비스 가이드는 Azure SQL Database 서비스 가이드의 지침을 기반으로 합니다. SQL Managed Instance는 SQL Database와 SQL Server 데이터베이스 엔진을 공유하지만 고유한 아키텍처, 네트워킹 및 기능 기능이 있는 인스턴스 범위 배포 모델을 사용합니다. 공유 플랫폼 지침은 SQL Database 가이드를 검토하세요. 이 가이드에서는 SQL Managed Instance 관련 기능 및 아키텍처 고려 사항에 중점을 둡니다.
신뢰도
신뢰성 요소의 목적은 충분한 복원력과 오류로부터 빠르게 회복할 수 있는 능력을 구축하여 지속적인 기능을 보장하는 것입니다.
안정성 디자인 원칙은 개별 구성 요소, 시스템 흐름 및 시스템 전체에 적용되는 고급 디자인 전략을 제공합니다.
워크로드 디자인 검사 목록
신뢰성에 대한 디자인 검토 체크리스트를 기반으로 디자인 전략을 시작합니다. 애플리케이션의 특성과 구성 요소의 중요도를 염두에 두고 비즈니스 요구 사항과 관련성을 결정합니다. 필요에 따라 더 많은 접근 방식을 포함하도록 전략을 확장합니다.
SQL Managed Instance 할당량, 제한 및 알려진 문제를 검토합니다 . SQL Managed Instance는 구독 유형 및 계층에 따라 달라지는 지역 배포 제한, 데이터베이스 수 및 스토리지 한도를 적용합니다. 상위 계층 배포는 지역 용량 계획을 제한하는 더 많은 vCore 할당량을 사용합니다.
- 장애 조치 그룹에 영향을 미치는 알려진 문제와 복제 링크 사용 중 발생하는 백업 동작, 그리고 이전의 SQL Server 버전으로부터의 마이그레이션 제약 조건을 고려하세요. 초기 디자인 중에 이러한 제한 사항을 검토하여 나중에 쉽게 해결할 수 없는 제약 조건을 방지합니다.
잠재적인 오류를 예상합니다. 오류 모드 분석을 사용하여 오류를 예측하고 SQL Managed Instance에 대한 완화를 계획합니다.
실패 완화 방법 관리 작업에는 몇 시간이 걸리고 인스턴스 또는 서브넷에서 다른 작업을 차단합니다. 유지 관리 기간 동안 크기 조정 작업을 계획합니다. 동시 발생하는 관리 작업을 피하고 복구 계획에서 여러 시간에 걸친 기간을 고려합니다. 네트워크 속도가 느리거나 데이터베이스 크기가 커서 장애 조치(failover) 그룹의 초기 설정 시간이 초과될 수 있습니다. 가장 높은 대역폭을 위해 글로벌 가상 네트워크 피어링을 사용합니다. 데이터베이스 크기 및 링크 속도에 따라 시드 진행률을 모니터링하고 기간 계획을 수립합니다. 서브넷의 한 인스턴스에 대한 관리 작업은 동일한 가상 클러스터를 공유하는 다른 인스턴스에서 작업을 차단하거나 지연할 수 있습니다. 개발 또는 테스트 인스턴스 작업의 교차 영향을 방지하기 위해 전용 서브넷에서 프로덕션 인스턴스를 격리합니다. 영역 배포 및 적절한 계층 선택을 통해 중복성을 구축 합니다. 영역 중복성 및 적절한 계층 선택을 사용하여 지역 내에서 단일 실패 지점을 제거합니다.
영역 수준 중복을 켜고 가용성 영역에 복제본을 분산합니다. 아키텍처와 자격은 계층 및 배포 구성에 따라 다릅니다.
OLTP(온라인 트랜잭션 처리) 워크로드에 대한 영역 간 대기 시간 및 영역 중복 배포와 백업 스토리지의 정렬을 포함하여 성능 및 종속 서비스에 대한 중복 효과를 평가합니다.
관리 작업 리드 타임을 중심으로 크기 조정 계획: 관리 작업에는 몇 분이 아닌 몇 시간이 걸리며, 크기 조정 전략 및 용량 계획에 대한 다른 접근 방식이 필요합니다.
가상 클러스터 프로비저닝으로 인해 훨씬 더 오래 걸리는 첫 번째 서브넷 만들기에 대한 확장된 타임라인을 예상합니다. 서브넷 내에서 동시 작업은 순차적으로 처리 큐에 대기합니다.
향후 확장 여유를 고려하여 서브넷의 크기를 조정합니다. 언더사이즈 서브넷은 성장을 제한하고 혼합 하드웨어 세대는 추가 IP 주소를 사용하는 별도의 가상 클러스터를 만듭니다.
엄격한 크기 조정 응답 시간이 필요한 경우, 대기 상태 인스턴스를 미리 준비하십시오. 인스턴스 간 작업 차단을 방지하기 위해 전용 서브넷에서 프로덕션 워크로드를 격리합니다.
인스턴스 상태 및 복제 상태에 대한 모니터링 및 경고를 구성 합니다. 안정성 위험을 조기에 알리는 메트릭에 대한 경고의 우선 순위를 지정합니다. Resource Health 이벤트를 통해 인스턴스 가용성을 추적하고, 작업 로그를 통해 관리 작업 상태 전환을 모니터링하고, 스토리지 채우기 또는 DNS(도메인 이름 시스템) 문제가 발생할 때 백업 오류가 자동으로 나타날 수 있으므로 자동화된 백업 완료를 정기적으로 확인합니다. 장애 조치(failover) 그룹으로 구성된 인스턴스의 경우, 복구 지점 목표(RPO) 임계값을 초과하는 복제 지연에 대해 경고하여, 허용되지 않는 데이터 손실에 대한 노출을 초래하기 전에 지역 복제 드리프트를 감지할 수 있습니다.
장애 조치 그룹의 상태 전환은 복구 간격으로 확대되기 전에 장애를 드러냅니다.
연결 복원력 및 자체 보존 기술을 구현합니다. 계획된 유지 관리, 장애 조치(failover) 및 DNS 역할 전환 이벤트에서 일시적인 오류를 흡수하도록 애플리케이션 수준 복원력을 구축합니다.
실제 장애 조치 기간과 확장된 DNS 갱신 시간을 고려하여 지수 백오프 방법을 사용하는 장애 조치 중에 재시도 로직을 추가합니다.
범용 계층 장애 조치 후, 웜 복제본 없이 새 노드에서 인스턴스가 다시 시작되면서 발생할 수 있는 콜드 캐시 성능 저하에 대비하십시오.
트래픽이 적은 기간 동안 유지 관리 기간을 예약합니다. 장애 조치 그룹 쌍의 각 윈도우를 엇갈리게 배치하여 두 멤버에서 동시에 유지 관리가 발생하는 것을 방지합니다.
장애 조치(failover) 그룹을 사용하여 재해 복구 전략을 설계합니다. 장애 조치(failover) 그룹은 모든 사용자 데이터베이스를 한 단위로 다른 지역의 지역 보조 인스턴스에 복제하지만 시스템 데이터베이스는 포함되지 않습니다. 장애 조치(failover) 후 인증 실패 및 운영 격차를 방지하기 위해 로그인, 자격 증명, SQL 에이전트 작업 및 인스턴스 수준 설정을 독립적으로 동기화해야 합니다.
장애 조치 시 변경을 방지하기 위해 연결 문자열에서 장애 조치 그룹 수신기 엔드포인트를 사용하세요. 구성 변경 내용이 복제되지 않으므로 멤버 간에 보존 정책을 동기화합니다. 하이브리드 환경의 경우 Managed Instance 링크는 대체 복제 경로를 제공합니다.
구성 권장 사항
| 권장 사항 | 이익 |
|---|---|
| 데이터 센터 오류 보호가 필요한 프로덕션 SQL Managed Instance 워크로드에 대한 영역 중복을 설정합니다. 인스턴스를 만드는 동안 영역 중복성을 구성하거나 기존 인스턴스를 변환할 수 있습니다. 진행하기 전에 계층 자격을 확인합니다. | 로컬 중복 배포보다 더 높은 SLA(서비스 수준 계약) 보장을 달성하고 애플리케이션 연결 변경 없이 데이터 센터 수준 중단을 유지합니다. 가용성 영역을 단일 실패 지점으로 제거합니다. 즉, 한 영역에서 계획된 유지 관리가 워크로드 표시 장애 조치(failover)를 강제하지 않습니다. |
| 현재 인스턴스 요구 사항과 향후 크기 조정 헤드룸을 수용하도록 위임된 서브넷의 크기를 조정합니다.
서브넷 크기 조정 계산기를 사용하여 하드웨어 및 계층 구성에서 예상되는 인스턴스 수에 대한 최소 IP 주소 공간을 결정합니다. 서브넷 크기 조정에는 복잡한 마이그레이션 작업이 필요하기 때문에 최소 요구 사항을 초과하는 버퍼 용량을 추가합니다. 다양한 하드웨어 세대와 계층 조합이 추가 서브넷 IP 주소를 사용하는 가상 클러스터 경계를 고려합니다. |
적절한 서브넷 크기 설정은 서브넷 마이그레이션이 필요한 병목 현상을 방지합니다. 과도하게 프로비전된 IP 주소 공간은 비용이 거의 없으며 향후 인스턴스 증가 및 계층 변경을 위한 유연성을 제공합니다. |
| 인스턴스 가용성, 복제 지연 시간 및 백업 상태와 같은 중요한 안정성 메트릭에 대한 Azure Monitor 경고를 설정합니다. 복제 지연이 RPO 임계값을 위반하기 전에 트리거되는 경고 규칙을 만듭니다. 스토리지 사용량을 추적하여 백업 오류를 방지합니다. | 자동 관리 경고를 사용하면 데이터 손실 또는 확장된 중단으로 에스컬레이션하기 전에 복제 드리프트 및 인스턴스 상태 문제에 신속하게 대응할 수 있습니다. 백업 실패의 조기 발견은 복원이 필요할 때까지 눈치채지 못할 수 있는 복구 지점 커버리지의 간격을 방지합니다. |
| 장애 조치(failover) 이벤트 동안 SQL Managed Instance 재연결 동작을 고려하는 지수 백오프를 사용하여 재시도 논리를 추가합니다. DNS 역할 전환 창을 포함하도록 장애 조치(failover) 그룹 수신기 시나리오에 대한 재시도 시간 제한을 확장합니다. | 재시도 논리는 유지 관리 및 장애 조치(failover) 이벤트의 일시적인 연결 중단을 흡수하여 애플리케이션 오류가 사용자에게 도달하지 못하도록 합니다. 애플리케이션은 수동 개입 없이 간단한 중단에서 자동으로 복구됩니다. |
| 계획된 장애 조치 이벤트를 기본 일정에서 벗어나도록 유지 관리 기간을 설정하세요. 가장 낮은 워크로드 작업에 맞는 창을 선택합니다. 장애 조치(failover) 그룹 쌍의 경우 동시 유지 관리를 방지하기 위해 주 및 보조 인스턴스에 다른 유지 관리 기간 일정을 할당합니다. |
유지 관리 기간은 계획된 장애 조치(failover) 이벤트를 예측 가능하고 트래픽이 적은 기간으로 전환하여 사용자에게 일시적인 연결 중단의 영향을 줄입니다. 장애 조치(failover) 그룹 인스턴스 간 일정이 엇갈리면 두 멤버에 대한 동시 유지 관리가 방지됩니다. |
| 고객 관리 장애 조치(failover) 정책을 사용하여 인스턴스에 범위가 지정된 장애 조치 그룹을 설정하여 지역 간 재해 복구를 지원합니다. 일치하는 구성과 동일한 DNS 영역이 있는 쌍을 이루는 지역에 지역 보조 인스턴스를 만듭니다. 가장 짧은 대기 시간 복제를 위해 글로벌 가상 네트워크 피어링을 사용하여 서브넷 간에 가상 네트워크 연결을 설정합니다. |
장애 조치(failover) 그룹은 모든 사용자 데이터베이스의 자동화된 지역 복제를 제공하고 DNS 기반 엔드포인트를 통해 연결을 리디렉션합니다. 이 방법은 애플리케이션 연결 문자열을 변경하지 않고 지역 간 복구를 지원합니다. 고객 관리 장애 조치(failover) 정책은 복구 결정 및 타이밍을 제어합니다. |
| 지역 중복 백업 스토리지를 설정하여 연결된 지역에서 백업 복사본을 유지합니다. 지역 복원을 대체 복구 옵션으로 사용합니다. 확장 가용성이 필요한 규정 준수 시나리오에 GRS(지역 중복 스토리지)를 사용하는 장기 보존을 설정합니다. | 지역 중복성 백업 스토리지를 사용하면 장애 조치(failover) 그룹 없이도 지역 재해 발생 시 어느 Azure 지역으로든 복구할 수 있습니다. 이 방법은 실시간 복제 상태에 의존하지 않는 독립적인 복구 경로를 제공합니다. |
| RTO(복구 시간 목표) 계산 시 특정 시점 복원(PITR)은 기존 인스턴스가 아닌 새 인스턴스로 복원이 이루어지기 때문에 인스턴스 프로비저닝 시간을 반영해야 합니다. 테스트 복원을 실행하여 인스턴스 프로비저닝을 포함하여 엔드 투 엔드 복구 기간을 측정합니다. 첫 번째 서브넷 시나리오와 기존 서브넷 시나리오를 모두 테스트하여 복원 시간의 차이를 이해합니다. |
인스턴스 프로비전 시간을 설명하는 정확한 RTO 계산은 실제 인시던트 동안 복구 기간을 과소 평가하지 못하게 합니다. 유효성이 검사된 복원 시간은 PITR이 워크로드 복구 요구 사항을 충족한다는 확신을 줍니다. |
보안
보안 핵심 요소의 목적은 워크로드에 기밀성, 무결성 및 가용성 보장을 제공하는 것입니다.
보안 디자인 원칙은 SQL Managed Instance의 기술 디자인에 접근 방식을 적용하여 이러한 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공합니다.
워크로드 디자인 검사 목록
보안에 대한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작하고 취약성 및 컨트롤을 식별하여 보안 상태를 개선합니다. 필요에 따라 더 많은 접근 방식을 포함하도록 전략을 확장합니다.
보안 기준을 설정합니다.Azure SQL에 대한 Azure 보안 기준부터 시작합니다. 관리 분할을 위한 사용자 지정 서버 수준 역할, 네트워크 격리를 위한 가상 네트워크 서브넷 위임, 인스턴스 수준 TDE(투명한 데이터 암호화) 키 관리 및 Microsoft 지원 액세스에 대한 운영자 감사를 포함하여 인스턴스 범위 모델이 가장 영향을 주는 컨트롤에 집중합니다.
SQL Managed Instance는 Azure SQL 보안 기반을 공유하지만 CLR(공용 언어 런타임) 어셈블리, 연결된 서버 및 SQL 에이전트와 같은 인스턴스별 컨트롤을 도입하여 SQL Database가 노출하는 것 이상으로 공격 표면을 확장합니다. 기준 검토에서 이러한 컨트롤의 우선 순위를 지정합니다.
ID 기반 및 네트워크 수준 컨트롤을 사용하여 세분화 전략을 적용합니다. SQL Managed Instance는 업무 분리를 적용하는 서버 수준 및 데이터베이스 수준 역할을 통한 ID 기반 분할을 지원합니다. 사용자 지정 서버 수준 역할은 SQL Database에서 사용할 수 없는 자세한 관리 구분을 제공합니다. 컨트롤 플레인 액세스를 데이터 평면 액세스와 분리하면 인스턴스 관리가 데이터 작업과 구별됩니다.
네트워크 수준 구분은 NSG(네트워크 보안 그룹)가 트래픽 흐름을 제어하는 전용 위임된 서브넷에 인스턴스를 배포하는 데 의존합니다. SQL Managed Instance 서브넷을 사용하여 가상 네트워크 피어링에 참여하는 서브넷에서 경로 테이블 및 NSG를 다시 사용하지 않도록 합니다.
인스턴스 풀은 기본 VM 리소스를 공유하며, 이는 인스턴스를 통합할 때 테넌트 격리 보장에 영향을 줍니다. 보안 요구 사항이 다른 워크로드에 별도의 인스턴스가 필요한지 여부를 평가합니다.
ID 및 액세스 관리를 위해 Microsoft Entra ID와 통합: SQL Managed Instance는 여러 방법을 통해 Microsoft Entra 인증을 지원합니다. 이 지원은 ID 관리를 중앙 집중화하고 조건부 액세스 정책을 지원합니다. SQL Managed Instance는 SQL Database에서 제공하지 않는 기능, 즉 Microsoft Entra 주체를 위한 Kerberos를 통한 Windows 인증을 지원합니다. 코드 변경 없이 레거시 애플리케이션을 리프트 앤 시프트할 수 있습니다.
관리, 운영자 및 워크로드 ID를 카탈로그화하여 ID 아키텍처를 계획합니다. 최소 권한 원칙을 사용하여 데이터베이스 역할을 할당합니다. Azure 서비스 통합을 위한 인스턴스 ID로 사용자 할당 관리 ID를 사용합니다.
Azure Virtual Network를 사용하여 네트워크 격리를 구현 합니다. SQL Managed Instance는 기본적으로 네트워크 수준 격리를 제공하고 연결 및 보안 결정을 구체화하는 전용 가상 네트워크 서브넷에 배포됩니다.
퍼블릭 엔드포인트는 다른 공격 노출 영역을 만들기 때문에 비활성화된 상태로 유지하고, 장애 조치(failover) 그룹 및 Managed Instance 링크는 가상 네트워크-로컬 연결만 지원합니다.
관리되는 인스턴스 서브넷을 관리되는 인스턴스 유형에만 위임하고 트래픽 제어에 대한 서비스 지원 NSG 규칙을 적용합니다.
가상 네트워크 피어링을 위해 각 SQL Managed Instance 서브넷에 고유한 경로 테이블 및 NSG를 할당합니다. 공유 테이블을 다시 사용하면 연결 오류가 발생합니다.
미사용 및 전송 중 보호를 위한 데이터 암호화 구성: SQL Managed Instance는 미사용 데이터, 전송 중 및 애플리케이션 수준에서 데이터를 포함하는 여러 암호화 계층을 제공합니다. 각 계층에는 고유한 구성 결정이 필요합니다.
레이어 Scope 주요 고려 사항 TDE 인스턴스 수준, 모든 데이터베이스가 동일한 키를 상속합니다. 회전은 모든 데이터베이스에 동시에 영향을 줍니다. 백업 복원을 위해 이전 키 버전을 유지해야 합니다. 전송 암호화(TLS) 전송 중인 연결 프로토콜 다운그레이드 공격을 방지하기 위해 현재 TLS(전송 계층 보안) 표준 및 엄격한 연결 모드를 적용합니다. 항상 암호화됨 열 단위로 키가 데이터베이스 엔진 외부에 위치합니다. 권한 있는 사용자로부터 데이터를 보호합니다. 보안 영역은 암호화된 데이터에 대한 서버 측 작업을 지원합니다. 공격 노출 영역을 줄이기 위해 인스턴스 구성 강화: SQL Managed Instance는 공격 표면을 확장하는 SQL Database 이외의 기능을 노출합니다. 이러한 기능을 사용하려면 거버넌스 제어와 함께 대상 강화 결정이 필요합니다.
업데이트 정책은 보안 패치 주기를 제어합니다. 즉각적인 적용과 Managed Instance 링크 호환성 사이에서 선택의 기로에 서게 됩니다.
SQL 에이전트, 연결된 서버, CLR 어셈블리 및 xp_cmdshell 각각 위험 평가가 필요합니다. 사용되지 않는 기능을 비활성화하고 현재 TLS 표준을 적용합니다.
Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 관리 작업을 제한하고, 리소스 잠금을 적용하고, Azure Policy를 통해 보안 구성을 적용합니다.
관리 ID 및 Azure Key Vault를 사용하여 자격 증명 및 암호화 키를 보호합니다 . 관리 ID는 애플리케이션-인스턴스 연결 및 서비스 간 통합을 위해 저장된 자격 증명을 제거합니다. 사용자 할당 관리 ID는 연결 문자열 비밀을 제거하고 회전 관리를 간소화합니다.
Key Vault는 TDE 보호기 및 Always Encrypted 열 마스터 키에 대한 통합 수명 주기 관리를 제공합니다. 키 액세스 모니터링은 손상될 수 있는 비정상적인 사용 패턴을 검색합니다.
SQL Managed Instance는 자격 증명 개체를 사용하여 Blob Storage에 감사 로그를 씁니다. 이러한 자격 증명은 만료되기 전에 갱신하여 감사 연속성을 유지합니다. 마이그레이션 중에 SQL 인증을 사용하는 ID에 대한 자격 증명 전달 절차를 계획합니다.
보안 모니터링 및 감사 로깅 구성: SQL Managed Instance 감사는 Azure Blob Storage, Azure Event Hubs 및 Azure Monitor 로그를 감사 대상으로 지원합니다. 운영자 감사는 인스턴스에 대한 Microsoft 지원 작업에 대한 가시성을 제공합니다. 감사 로그 무결성을 준수하려면 변조 증거 제어가 필요합니다.
Log Analytics 통합은 보안 이벤트의 고급 쿼리 및 상관 관계를 지원하는 반면 Event Hubs는 SIEM(외부 보안 정보 및 이벤트 관리) 통합을 지원합니다. MICROSOFT Defender for SQL은 삽입, 무차별 암호 대입 및 비정상적인 액세스 패턴에 대한 경고를 포함하여 위협 방지를 추가합니다.
감사 사양을 통해 인증 이벤트, 쿼리 실행 및 권한 변경을 추적하여 에스컬레이션 시도 및 무단 액세스를 검색합니다.
구성 권장 사항
| 권장 사항 | 이익 |
|---|---|
| 광범위한 권한을 부여하지 않고 특정 관리 기능에 대한 사용 권한 범위를 지정하는 사용자 지정 서버 수준 역할을 만듭니다. 기본 제공 db_owner 또는 서버 관리자 계정을 애플리케이션 워크로드에 할당하지 않습니다. | 각 관리 역할을 필요한 최소 권한으로 제한하여 권한 상승 위험을 줄입니다. 사용자 지정 서버 수준 역할을 사용하면 기본 제공 역할이 제공하지 않는 업무의 세분화된 분리를 적용할 수 있습니다. |
| Microsoft Entra 전용 인증을 켜고 관리되는 인스턴스에 대한 SQL 기반 인증을 해제합니다. 전환하기 전에 SQL 에이전트 작업, 연결된 서버 및 MICROSOFT Entra 보안 주체에 대한 SQL 로그인에 종속된 감사 자격 증명을 마이그레이션합니다. | SQL 인증을 제거하고 다단계 인증을 지원하는 최신 ID 프로토콜을 적용하여 자격 증명 기반 공격 벡터를 제거합니다. |
| 고객 관리형 키를 사용하는 TDE, 스토리지에 대한 감사 및 서비스 간 인증을 포함하여 사용자 할당 관리 ID 를 Azure 서비스 통합의 인스턴스 ID로 구성합니다. | Azure 서비스 통합에 대한 자격 증명 관리 오버헤드를 제거하고 구성에서 노출된 비밀의 위험을 줄입니다. |
| 프로덕션 인스턴스에 대해 퍼블릭 엔드포인트 를 해제된 상태로 유지합니다. 공용 액세스가 필요한 경우 NSG 규칙을 사용하여 특정 IP 주소 범위로 제한합니다. 표준 액세스를 위해 가상 네트워크-로컬 연결을 사용하고, 가상 네트워크 간 시나리오에서는 프라이빗 엔드포인트를 사용합니다. | 네트워크 공격 노출 영역을 권한 있는 가상 네트워크 경로로 축소하여 규정 준수 감사를 간소화하고 손상된 자격 증명의 폭발 반경을 줄입니다. |
| 권한 있는 원본에서 필요한 인바운드 트래픽만 허용하도록 SQL Managed Instance 서브넷 에서 NSG 규칙을 구성합니다. 인스턴스 작업에 대한 서비스 지원 필수 규칙을 유지하면서 기본값으로 거부 방법을 적용합니다. | 인접 서브넷의 손상된 리소스에서 횡적 이동을 방지하여 네트워크 수준 위반 시 폭발 반경을 제한합니다. |
| 일시 삭제 및 제거 보호가 설정된 키 자격 증명 모음에서 고객 관리형 키를 사용하여 TDE 를 설정합니다. 키 액세스에 사용자 할당 관리 ID를 사용합니다. 자동화된 회전을 켜고 키 자격 증명 모음을 SQL Managed Instance 리소스에 할당합니다. | 순환 및 해지를 포함하여 암호화 키 수명 주기에 대한 모든 권한을 유지하고 조직 키 관리 규정 준수 요구 사항을 충족합니다. |
| MICROSOFT Defender for SQL을 사용하여 취약성 평가 및 고급 위협 방지를 활성화합니다. 검색 이벤트에 대한 경고를 설정하고 클라우드용 Microsoft Defender를 통해 보안 작업으로 라우팅합니다. | 보안 작업 워크플로에 통합되는 자동화된 검사 및 동작 분석을 통해 보안 잘못된 구성 및 활성 위협을 검색합니다. |
| 워크로드에서 SQL 에이전트를 사용하지 않는 경우 SQL 에이전트 를 끕니다. 활성 상태인 경우 높은 권한의 계정에 작업을 할당하지 말고 특정 자격 증명 액세스가 필요한 단계에 대해 프록시 계정을 구성합니다. | SQL Managed Instance 관련 공격 노출 영역을 최소화하는 작업 소유권 및 자격 증명 액세스를 제한하여 SQL 에이전트를 통한 권한 상승 방지 |
| TDE 보호기 키 및 Always Encrypted 열 마스터 키를 일시 삭제 및 제거 보호 기능이 있는 키 자격 증명 보관소에 저장합니다. Key Vault 감사 로깅을 켜고 SQL Managed Instance에 대한 전용 자격 증명 모음을 사용하여 제한을 방지합니다. | 전체 감사 내역을 사용하여 암호화 키 관리를 중앙 집중화하고 데이터베이스 액세스를 방지할 수 있는 실수로 인한 키 손실로부터 보호합니다. |
|
서버 감사를 켜고 로그인 활동 및 완료된 쿼리를 캡처하도록 이벤트 그룹을 설정합니다. 이중 목적지를 구성합니다. 실시간 분석을 위해 장기 보존 및 Azure Monitor 로그에 Blob Storage를 사용합니다. Microsoft 지원 작업을 추적하기 위해 운영자 감사가 켜져 있는 별도의 서버 감사를 만듭니다. 레코드 변조를 방지하려면 감사 Blob 컨테이너에서 변경할 수 없는 스토리지를 켭니다. |
규정 준수 요구 사항, 인시던트 조사 및 변칙 검색을 위한 데이터베이스 활동의 전체 감사 내역을 유지 관리합니다. |
| Log Analytics 작업 영역에 보안 감사 이벤트를 보내도록 진단 설정을 구성합니다. 변칙 검색에 KQL(Kusto Query Language) 쿼리를 사용하고 반복되는 실패한 로그인과 같은 의심스러운 활동 패턴에 대한 경고를 설정합니다. | 중앙 집중식 로그 집계 및 자동화된 위협 탐지를 사용하여 실시간으로 보안 이벤트를 분석하고 워크로드 간에 상관 관계를 지정할 수 있습니다. |
비용 최적화
비용 최적화는 비즈니스 요구 사항을 충족 하면서 지출 패턴을 감지하고, 중요한 영역에 대한 투자의 우선 순위를 지정하고, 조직의 예산을 충족하도록 다른 영역에서 최적화하는 데 중점을 둡니다.
비용 최적화 디자인 원칙은 이러한 목표를 달성하고 SQL Managed Instance 및 해당 환경과 관련된 기술 설계에서 필요에 따라 장단위를 만들기 위한 높은 수준의 디자인 전략을 제공합니다.
워크로드 디자인 검사 목록
투자 비용 최적화를 위한 디자인 검토 체크리스트를 기반으로 디자인 전략을 구축하십시오. 워크로드가 워크로드에 할당된 예산에 맞게 조정되도록 디자인을 미세 조정합니다. 디자인은 올바른 Azure 기능을 사용하고, 투자를 모니터링하고, 시간이 지남에 따라 최적화할 기회를 찾아야 합니다.
프로비전된 컴퓨팅 청구 모델을 설명하는 비용 모델을 만들고 유지 관리합니다 . SQL Managed Instance는 항상 프로비전된 컴퓨팅 모델을 사용합니다. 여기서 vCores는 사용률에 관계없이 지속적으로 청구됩니다. 비용 모델은 구성된 최대 크기에 따라 서비스 계층 선택, vCore 수, 하드웨어 생성 및 스토리지 할당을 포함하는 기본 비용 동인을 고려해야 합니다.
인스턴스 범위 청구는 모든 데이터베이스가 컴퓨팅 비용을 공유하므로 차지백 및 쇼백에 대한 명확한 매핑이 필요합니다. Azure 하이브리드 혜택, 예약된 용량 및 라이선스가 필요 없는 대기 복제본과 같은 라이선스 및 약정 요소를 포함합니다. 각 레버는 다른 메커니즘을 통해 비용을 절감합니다.
지역 vCore 할당량 제약 조건은 다중 구독 아키텍처를 강제 적용하여 비용 추적 및 거버넌스에 복잡성을 더할 수 있습니다.
비용을 모니터링하고 분석하여 최적화 기회를 식별합니다. 항상 프로비전된 모델에서 유휴 컴퓨팅에는 여전히 요금이 발생합니다. Microsoft Cost Management를 사용하여 인스턴스당 컴퓨팅, 스토리지, 백업 및 라이선스 비용을 추적합니다. 실제 스토리지 사용량을 예약된 최대값과 비교하여 청구 폐기물을 식별합니다.
리소스 사용률을 모니터링하여 vCore 과도 공급 여부를 식별하고 현재 서비스 계층의 타당성을 확인합니다. 예산, 예측 및 변칙 경고를 만들어 크기 조정 또는 구성 변경으로 인한 예기치 않은 비용 증가를 감지합니다.
컴퓨팅 및 라이선스 구성을 최적화하여 프로비전된 리소스 비용을 절감합니다 . 컴퓨팅 비용은 프로비전된 전용 모델에서 지속적으로 발생하므로 vCore 수를 권한화하고 처음부터 라이선스를 최적화합니다. 구성을 선택하기 전에 사용률을 분석합니다. 워크로드에서 더 높은 스토리지 대기 시간을 허용할 때 범용 계층을 사용합니다. 계층 차이는 가장 큰 단일 비용 레버입니다.
기존 SQL Server 라이선스에 Azure 하이브리드 혜택을 적용하고, 예측 가능한 워크로드를 위해 예약된 용량에 커밋하고, 장애 조치(failover) 그룹 보조 복제본을 재해 복구에만 사용할 때 라이선스 없는 대기 복제본으로 지정합니다.
프로덕션 및 비프로덕션 인스턴스에서 환경 비용을 최적화합니다. 동일한 프로덕션 및 비프로덕션 구성은 항상 프로비전된 모델에서 예산을 낭비합니다. 각 계층에 SQL Managed Instance별 절감 메커니즘을 적용하여 환경 비용 프로필을 구분합니다.
예측 가능한 유휴 기간 동안 범용 인스턴스에서 중지/시작을 사용하여 비프로덕션 환경을 최적화하여 컴퓨팅 및 라이선스 요금을 제거합니다.
감소된 vCore 수 및 개발 테스트 구독 가격을 사용하는 비프로덕션 인스턴스를 배포하여 환경 구성을 구분합니다.
비임계 워크로드에 대한 장애 조치 그룹의 저비용 대안으로서 지역 복원을 평가하여 재해 복구 환경을 최적화합니다.
리소스 효율성을 개선하기 위해 인스턴스 풀을 사용하여 작은 워크로드를 통합합니다. 인스턴스 풀은 공유 컴퓨팅에서 여러 개의 작은 인스턴스를 통합하여 인스턴스당 오버헤드를 줄입니다. 풀은 풀링된 배포에만 적용되는 더 작은 vCore 구성을 지원하며 지원되는 하드웨어 세대에서 범용 계층으로 제한됩니다.
풀 컴퓨팅은 내부에서 실행되는 인스턴스 수에 관계없이 풀 수준에서 요금이 부과되므로 사용하지 않는 vCore에는 여전히 비용이 발생합니다. 라이선스 및 예약된 용량 결정은 풀의 모든 인스턴스에서 균일하게 적용됩니다.
공유된 인스턴스는 로컬 디스크 및 네트워크 리소스를 공유하므로 소란스러운 이웃 효과를 만들 수 있습니다. 각 인스턴스는 전용 vCore 및 메모리를 수신하지만 더 강력한 격리가 필요한 워크로드는 독립 실행형 인스턴스로 배포되어야 합니다.
구성 권장 사항
| 권장 사항 | 이익 |
|---|---|
| SQL Managed Instance는 사용률에 관계없이 예약된 스토리지에 대한 요금을 청구하므로 실제 스토리지 사용량을 구성된 최대 크기와 비교합니다. 할당이 사용량을 크게 초과하는 인스턴스에서 예약된 최대값을 줄입니다. | 예약 스토리지가 실제 사용량을 초과하는 인스턴스를 식별하므로 SQL Managed Instance 예약 스토리지 모델에서 GB당 청구 낭비를 권한화하고 줄일 수 있습니다. |
| SQL Managed Instance에서 Azure 하이브리드 혜택을 활성화하여 Software Assurance가 있는 기존 SQL Server 라이선스를 적용합니다. Enterprise Edition 라이선스는 특히 범용 계층에서 가장 유리한 변환 비율을 제공합니다. 범용 인스턴스를 중지하면 먼저 Azure 하이브리드 혜택을 비활성화하고 다른 Azure SQL 리소스에 라이선스를 다시 할당합니다. 인스턴스를 다시 시작한 후 혜택을 다시 활성화합니다. |
클라우드 배포에 기존 온-프레미스 라이선스를 사용하여 SQL Server 라이선스 비용을 줄입니다. Enterprise Edition 고객은 유리한 vCore 변환 비율을 감안할 때 범용 계층에서 가장 큰 절감액을 얻습니다. |
| 예측 가능한 장기 실행 워크로드가 있는 SQL Managed Instance 배포에 대한 예약된 용량 약정을 구매합니다. 인스턴스 풀에 예약을 적용하여 공유 컴퓨팅 절감액을 약정 기반 할인과 결합합니다. 예측 가능한 일정이 있는 워크로드의 경우 동일한 vCore 예약에서 서로 다른 시간 창에서 여러 개의 작은 인스턴스를 실행합니다. 사용하지 않는 예약 시간을 전달할 수 없으므로 예약을 통해 사용률을 최대화합니다. |
약정 기반 가격 책정은 안정적인 워크로드 구성에 대한 종량제 요금에 비해 비용을 절감합니다. 인스턴스 풀과 쌍을 이루는 예약된 용량은 여러 개의 작은 인스턴스에 가장 비용 효율적인 배포 모델을 제공합니다. |
| 재해 복구에만 사용하는 경우 장애 조치(failover) 그룹의 보조 인스턴스를 라이선스 없는 대기 복제본 으로 지정합니다. 대기는 장애 조치, 백업, 유지 관리 및 재해 복구 훈련을 지원하지만 프로덕션 연결은 지원하지 않습니다. | 재해 복구 보조 복제본에서 SQL Server 라이선스 비용을 제거하지만 읽기 가능한 복제본과 동일한 RPO 및 RTO를 유지 관리합니다. 다른 Azure SQL 리소스에 할당하기 위한 Azure 하이브리드 혜택 라이선스를 해제하여 기존 라이선스 투자의 가치를 높입니다. |
| 예측 가능한 유휴 기간 동안 범용 인스턴스를 중지하여 vCore 및 라이선스 요금을 제거합니다. 쌍을 정의하고 연속 작업 간에 최소 간격을 설정하는 중지/시작 일정을 만듭니다. 인스턴스를 준비해야 하는 경우에 앞서 시작 작업을 트리거하여 시작 대기 시간을 고려합니다. 장애 조치(failover) 그룹 또는 영역 중복과 같은 기능이 켜져 있는 인스턴스는 중지할 수 없습니다. |
유휴 기간 동안 컴퓨팅 및 라이선스 요금을 제거하지만 데이터 및 백업 스토리지를 유지합니다. 자동화는 수동 개입 없이 일관된 절감을 보장합니다. |
| 미리 프로비전된 컴퓨팅을 공유하는 여러 개의 작은 관리형 인스턴스를 호스트하도록 인스턴스 풀 을 배포합니다. 필요한 총 vCore에 따라 풀 크기를 조정하고, 풀 수준에서 Azure 하이브리드 혜택을 켜고, 최대 할인을 위해 예약된 용량과 결합합니다. 중요 비즈니스용 계층, 영역 중복성 또는 엄격한 성능 격리가 필요한 워크로드의 풀을 사용하지 않습니다. 풀된 인스턴스는 로컬 디스크 및 네트워크 리소스를 공유하므로 시끄러운 인접 위험이 있는 대기 시간에 민감한 워크로드는 독립 실행형 인스턴스로 배포되어야 합니다. |
풀 외부에서 사용할 수 없는 더 작은 vCore 구성의 잠금을 해제하므로 오버프로비전하지 않고도 작은 SQL Server 인스턴스를 비용 효율적으로 마이그레이션할 수 있습니다. 공유 컴퓨팅 리소스는 인스턴스당 오버헤드를 줄이지만 풀된 각 인스턴스에 대해 전용 vCore 및 메모리 격리를 유지 관리합니다. |
운영 효율성
운영 우수성은 주로 개발 관행, 관찰성 및 릴리스 관리를 위한 절차에 중점을 둡니다.
운영 우수성 디자인 원칙은 워크로드의 운영 요구 사항에 대한 이러한 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공합니다.
워크로드 디자인 검사 목록
SQL Managed Instance와 관련된 준수성, 테스트 및 배포에 대한 프로세스를 정의하기 위한 운영 우수성에 대한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작합니다.
인스턴스 구성 변경에 대한 안전한 배포 사례를 구현합니다. SQL Managed Instance 관리 작업에는 일반적인 데이터베이스 작업보다 훨씬 오래 실행되는 가상 클러스터 인프라 변경이 포함됩니다. 이러한 확장된 기간에 대한 배포 사례를 계획하여 워크로드 중단을 최소화합니다.
만들기, 크기 조정 및 계층 변경 작업의 연장된 기간을 고려합니다. 사용량이 많은 시간에는 예약하지 마세요. 동일한 서브넷 내의 작업이 직렬화됩니다.
어느 방향으로든 크기 조정 작업에 비슷한 시간이 걸리기 때문에 먼저 비프로덕션 인스턴스에서 구성 변경의 유효성을 검사하는 롤백 및 준비된 배포 전략을 계획합니다.
인스턴스에 일치하는 업데이트 정책이 있는지 확인하여 장애 조치(failover) 그룹 배포 변경 내용을 조정합니다. 주 인스턴스와 보조 인스턴스의 변경 내용을 서로 다른 시간에 예약합니다.
가상 네트워크 통합 인스턴스 배포를 위한 코드로 인프라를 정의합니다. SQL Managed Instance를 사용하려면 프로비전하기 전에 서브넷 위임, NSG 규칙 및 경로 테이블이 있는 가상 네트워크 통합 배포가 필요합니다. 인프라를 코드로서(IaC) 템플릿의 종속성 계층에 따라 구성하여 네트워킹을 먼저, ID 및 RBAC를 두 번째로, 마지막으로 인스턴스 리소스를 배포하도록 합니다.
서브넷 규칙, 경로 테이블 및 인스턴스 속성에 대한 구성 드리프트 검색을 설정합니다. Azure Policy를 사용하여 프로덕션 인스턴스에 필요한 태그, 허용 계층 및 영역 중복성 요구 사항과 같은 배포 표준을 적용합니다.
데이터베이스 스키마 및 인스턴스 변경에 대한 빌드 및 배포 파이프라인 디자인: 인스턴스 인프라 변경 및 데이터베이스 스키마 배포는 근본적으로 다른 시간대에서 작동합니다. 그에 따라 파이프라인 단계를 구분합니다. 확장 관리 작업을 트리거하는 작업 전에 인프라 단계 및 승인 게이트에 상태 기반 폴링을 사용합니다.
스키마를 변경하려면 배포 전에 문서화된 T-SQL 호환성 차이에 대한 유효성 검사가 필요합니다. 파이프라인의 호환성을 확인하고 배포 후 유효성 검사에서 데이터베이스 간 쿼리 종속성 및 인스턴스 범위 기능을 확인합니다.
Azure Monitor 및 SQL 네이티브 진단을 사용하여 관찰 가능성을 설정합니다. SQL Managed Instance 관찰을 위해서는 Azure Monitor 플랫폼 원격 분석과 DMV(동적 관리 뷰), 쿼리 저장소 및 확장 이벤트와 같은 SQL 네이티브 진단이 모두 필요합니다. 인스턴스 상태 및 워크로드 성능의 전체 보기를 위해 이러한 계층을 결합합니다.
인스턴스 전체에 진단 설정을 적용하여 Azure Monitor를 통해 플랫폼 모니터링을 설정합니다. 관리 작업 이벤트는 활동 로그에 표시되고 Resource Health 경고는 계획된 이벤트와 계획되지 않은 이벤트 모두에 대한 조기 경고를 제공합니다. 데이터베이스 쪽에서 워크로드 분석 및 인덱스 최적화를 위한 기본 도구로 쿼리 저장소를 사용합니다. SQL Managed Instance는 자동화된 인덱스 튜닝을 지원하지 않습니다.
Resource Health 경고를 구독하고 계획된 및 비계획된 이벤트의 조기 경고와 유지 보수 알림을 받습니다.
관리, 모니터링 및 유지 관리 작업을 자동화합니다. SQL Managed Instance에는 외부 오케스트레이션 없이 데이터베이스 유지 관리 및 작업 작업을 처리하는 기본 제공 작업 스케줄러인 SQL 에이전트가 포함되어 있습니다. 데이터베이스 엔진 및 관리 평면 작업의 전체 범위를 위해 SQL 에이전트를 Azure 수준 자동화와 결합합니다.
데이터베이스의 정기적인 유지 관리, 장애 조치 그룹 보조에 대한 로그인 동기화 및 작업 실패 경고를 위해 SQL 에이전트를 사용합니다.
관리 작업 모니터링 및 백업 보존 관리와 같은 Azure Resource Manager 상호 작용이 필요한 작업에는 Azure Automation 또는 Azure Functions를 사용합니다.
유휴 기간 동안 적격 인스턴스에 대한 중지 및 시작 일정 및 새 인스턴스를 프로비전할 때 일관된 진단 구성과 같은 수명 주기 작업을 자동화합니다.
데이터베이스 배포에 대한 테스트 및 유효성 검사 사례를 설정합니다. SQL Managed Instance SQL Server 호환성은 표준 테스트 도구를 지원하지만 관리 작업, 데이터베이스 간 종속성 및 인스턴스 범위 기능의 유효성을 검사해야 합니다. SQL Database와 SQL Server의 인프라 및 관리 작업 동작이 다르기 때문에 실제 SQL Managed Instance 테스트 환경을 사용합니다.
구성 권장 사항
| 권장 사항 | 이익 |
|---|---|
| PowerShell, Azure CLI 또는 REST API를 사용하여 관리 작업 진행률을 모니터링하여 단계를 추적하고 문제를 조기에 검색합니다. 사용 가능한 경우 중단되거나 불필요한 작업을 취소합니다. 취소 자체에는 인프라 정리 시간이 필요합니다. | 팀은 확장 작업에 대한 가시성을 확보하여 대기, 취소 또는 에스컬레이션에 대한 정보에 입각한 결정을 내립니다. 조기 취소는 장기간 중단을 일으키기 전에 문제가 있는 작업의 영향을 줄입니다. |
인스턴스 프로비전이 시작되기 전에 완료되는 별도의 IaC 모듈로 SQL Managed Instance 네트워킹 필수 구성 요소를 배포합니다. 템플릿에서 관리 트래픽에 Microsoft.Sql/managedInstances 대한 서브넷 위임 및 필수 NSG 규칙을 포함합니다. |
인스턴스 프로비전이 시작되기 전에 네트워킹 필수 구성 요소의 유효성을 검사하여 배포 실패가 위임 또는 NSG 규칙을 누락하지 않도록 합니다. 별도의 모듈을 사용하여 네트워킹 및 데이터베이스 인프라의 수명 주기를 독립적으로 관리합니다. |
| 작업 유형에 따라 크게 달라지는 문서화된 작업 기간을 기반으로 SQL Managed Instance 인프라 단계에 대한 파이프라인 시간 제한을 설정합니다. 루프 단계에서 관리 작업 API 를 폴링하여 진행 상황을 추적하고 오류를 조기에 검색합니다. 멈춰 있는 작업과 장기 실행되는 작업을 구분하지 못하는 고정 수면 타이머를 사용하지 마세요. |
올바른 시간 제한은 기본 시간 제한 기간을 초과하는 작업으로 인한 잘못된 파이프라인 오류를 제거합니다. 파이프라인 내에서의 진행률 폴링은 무작위 타이머가 만료될 때까지 기다리는 대신 진짜 오류에 더 빠르게 대응할 수 있도록 팀을 돕습니다. |
| 인스턴스 범위 진단 설정을 켜고 모든 관련 범주에 대한 리소스 로그를 Log Analytics 작업 영역에 스트리밍합니다. 모든 인스턴스에 동일한 스트리밍 내보내기 구성을 적용하여 신뢰할 수 있는 관찰 가능성 기준을 설정합니다. 활동 로그 진단 설정을 추가하여 관리 작업 이벤트를 캡처합니다. 가상 클러스터 상태 표시기를 사용하여 인스턴스 가용성에 영향을 주는 인프라 수준 문제를 검색합니다. |
Log Analytics에서 KQL 쿼리를 사용하여 용량 계획 및 성능 문제 해결을 위한 기록 추세 분석을 지원하는 모든 인스턴스에서 로그를 분석합니다. 관리 작업 원격 분석 및 가상 클러스터 상태 데이터는 SQL Managed Instance와 관련된 확장 작업 및 서브넷 수준 조정 문제를 해결하는 데 도움이 됩니다. |
| 창이 열리기 전과 유지 관리가 완료될 때 경고를 수신하도록 계획된 유지 관리 이벤트에 대한 사전 알림을 설정합니다. 이러한 알림을 사용하여 애플리케이션 팀에 알리거나 재시도 정책을 조정하는 것과 같은 준비 워크플로를 트리거합니다. | 운영 팀은 계획된 유지 관리 전에 사전 준비 시간을 얻게 되며, 이를 통해 비즈니스에 중요한 워크로드의 중단을 줄이고 관련자와의 사전 통신을 지원합니다. |
| 예상 기간 임계값을 초과하거나 실패하는 관리 작업에 대한 활동 로그 경고를 설정합니다. 실패한 작업은 개입이 필요한 중간 상태로 인스턴스를 떠날 수 있습니다. 관리 작업 API 또는 Azure Monitor 통합 문서를 사용하여 SQL Managed Instance 자산 전체에서 작업 진행률 및 기간 추세를 표시합니다. |
중단되거나 실패한 작업을 조기에 감지하면 확장된 인프라 변경 중에 위험 창이 줄어듭니다. 팀은 영향이 커지기 전에 개입할 시간을 얻습니다. |
| 인스턴스의 모든 데이터베이스에서 인덱스 유지 관리, 통계 업데이트 및 일관성 검사를 위한 SQL 에이전트 작업을 만듭니다. 트래픽이 적은 시간대에 이러한 작업을 예약하고, 리소스 경합을 방지하기 위해 실행을 간격을 두어 예약합니다. | 일관된 자동화된 유지 관리는 외부 예약 도구 없이도 데이터베이스 상태 및 쿼리 성능을 추적합니다. SQL Managed Instance 네이티브 SQL 에이전트는 사용자 지정 자동화 인프라에 비해 운영 오버헤드를 줄입니다. |
| SQL Managed Instance 대상 플랫폼과 함께 SQL 데이터베이스 프로젝트를 사용하여 T-SQL 호환성의 유효성을 검사하고 프로덕션 배포 전에 지원되지 않는 구문을 식별합니다. 통합 테스트에서 세 부분으로 구성된 명명을 사용하여 데이터베이스 간 쿼리 종속성을 테스트합니다. 배포 유효성 검사의 일부로 SQL 에이전트 작업 정의, Service Broker 구성 및 연결된 서버와 같은 인스턴스 범위 기능을 확인합니다. |
호환성 문제 및 배포 실패가 프로덕션에 도달하기 전에 찾아서 완료하는 데 시간이 오래 걸리는 작업에 대한 롤백 위험을 줄입니다. |
성능 효율성
성능 효율성은 용량을 관리하여 부하 증가하는 경우에도 사용자 환경을 유지 관리합니다. 이 전략에는 리소스 크기 조정, 잠재적인 병목 현상 식별 및 최적화, 최고 성능 최적화가 포함됩니다.
성능 효율성 디자인 원칙은 예상된 사용량에 대해 이러한 용량 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공합니다.
워크로드 디자인 검사 목록
성능 효율성에 대한 디자인 검토 체크리스트를 기반으로 디자인 전략을 시작합니다. SQL Managed Instance의 주요 성능 지표를 기반으로 하는 기준을 정의합니다.
용량 계획 수행: SQL Managed Instance는 모든 데이터베이스가 vCore, 메모리, IOPS(초당 입력/출력 작업) 및 스토리지를 공유하는 인스턴스 범위 모델을 사용합니다. 한 데이터베이스의 리소스 사용량이 다른 모든 데이터베이스에 직접 영향을 미치기 때문에 데이터베이스 자산 전체의 용량 계획은 필수적입니다.
응답 시간, 처리량 및 동시 세션에 대한 성능 대상을 식별합니다. 인스턴스 수명 주기 동안 데이터베이스 수, 스토리지 및 트랜잭션 볼륨에 대한 마이그레이션 및 프로젝트 증가 패턴 전에 성능 기준을 캡처합니다. TempDB 집약적 워크로드를 계획할 때 계층별 TempDB 제약 조건을 고려합니다.
크기 조정을 위한 관리 작업은 다른 Azure SQL 제품의 일반적인 시간(분)이 아닌 몇 시간이 걸립니다. 긴급한 크기 조정 요구를 방지할 수 있는 충분한 버퍼를 사용하여 용량을 계획하고 유지 관리 기간으로 작업을 조정하여 비즈니스 중단을 최소화합니다.
워크로드 요구 사항에 대한 하드웨어 생성 및 서비스 계층을 선택합니다. 하드웨어 생성 및 서비스 계층 선택은 워크로드에 사용할 수 있는 메모리 비율, I/O 특성 및 대기 시간 프로필을 결정합니다.
의사 결정 평가할 항목 서비스 계층 I/O 대기 시간 및 기능 요구 사항과 일치합니다. 원격 스토리지와 로컬 스토리지 간의 아키텍처 차이점과 영역 중복 구성의 대기 시간 영향을 고려합니다. IOPS 모델 할당 방법은 파일 크기 종속 크기 조정(범용)에서 인스턴스 수준 및 vCore별 프로비저닝(중요 비즈니스용, 차세대 범용)에 이르기까지 다양합니다. 연결 유형 가상 네트워크-로컬 엔드포인트에서 리디렉션 연결 유형을 사용하여 영구 워크로드에 대한 쿼리당 대기 시간을 줄입니다. 워크로드에 적합한 크기 조정 전략을 선택합니다 . SQL Managed Instance는 수직 크기 조정만 지원합니다. 서비스는 자동 크기 조정, 서버리스 컴퓨팅 또는 하이퍼스케일 계층을 제공하지 않습니다.
계층 변경, 하드웨어 생성 변경 및 vCore 조정을 위해 다각형 작업 기간을 중심으로 수직 크기 조정을 계획합니다. 계획된 유지 관리 기간 동안 이러한 작업을 예약합니다.
읽기 워크로드를 비즈니스 크리티컬 계층의 기본 제공 읽기 가능 보조 복제본으로 오프로드합니다. 이 복제본은 보고, 분석 및 최종적으로 일관된 읽기와 같은 워크로드에 대한 추가 비용 없이 읽기 전용 쿼리를 제공합니다.
차세대 범용 플랫폼에서 vCore 수와 독립적으로 메모리 할당을 조절할 수 있도록 유연한 메모리를 사용합니다. 변경 내용은 마지막 단계로 인스턴스 장애 조치(failover)를 트리거합니다.
성능 테스트를 실행하여 데이터베이스 워크로드 동작의 유효성을 검사 합니다. 인스턴스 범위 모델에서 다중 데이터베이스 동시 동작의 유효성을 검사하는 성능 테스트를 디자인합니다. 동시에 실행되는 트랜잭션, 일괄 처리 및 보고 워크로드를 결합하는 실제 트랜잭션 혼합을 포함합니다. 인스턴스에 대해 계획된 실제 데이터베이스 수 및 데이터 볼륨을 사용하여 테스트합니다.
사전 배포 기준을 캡처하고 여러 하드웨어 세대 및 서비스 계층에서 마이그레이션 후 동작을 비교하여 선택한 구성이 요구 사항을 충족하는지 확인합니다. 특히 버퍼 풀을 다시 빌드해야 하는 원격 스토리지를 사용하는 계층에서 장애 조치 및 관리 작업 후 워크로드 복구 시간을 측정합니다.
성능 지표 식별 및 모니터링: 모든 데이터베이스가 인스턴스 범위 모델에서 컴퓨팅 리소스를 공유하기 때문에 인스턴스 및 데이터베이스 수준 모두에서 모니터링하여 리소스 경합을 식별합니다.
핵심 메트릭을 추적하고 워크로드가 영향을 받기 전에 사용률 임계값에 대한 경고를 설정하도록 인스턴스 수준 모니터링을 설정합니다. 계층별 제한에 대한 로그 쓰기 처리량을 포함합니다.
쿼리 저장소를 기본 도구로 사용하여 회귀된 쿼리를 식별하고 변경 내용을 계획합니다. SQL Managed Instance는 자동 인덱스 튜닝을 지원하지 않으므로 수동 인덱스 분석과 결합합니다.
데이터베이스 수준 리소스 모니터링을 추가하여 데이터베이스별 사용량을 추적하고 TempDB 및 메모리 내 스토리지와 같은 공유 리소스에 대한 경합을 검색합니다.
워크로드 디자인 및 쿼리 성능 최적화: SQL Managed Instance에는 데이터베이스 간 리소스 거버넌스, 데이터베이스 간 쿼리, 분산 트랜잭션 및 메모리 내 처리와 같이 인스턴스 범위 모델과 관련된 성능 문제를 해결하는 Enterprise Edition 기능이 포함되어 있습니다.
최적화 전략에서 서비스별 리소스 제약 조건을 고려합니다. TempDB 할당, 쓰기 처리량에 대한 로그 속도 거버넌스 제한 및 계층 종속 IOPS 모델이 각각 제약 조건과 최적화 기회를 모두 제공합니다.
구성 권장 사항
| 권장 사항 | 이익 |
|---|---|
| 메모리가 제약 조건인 경우 vCore를 추가하는 대신 vCore당 메모리 비율 별로 하드웨어 생성을 선택합니다. 프리미엄 시리즈 하드웨어 생성은 메모리와 비용의 균형을 유지하면서 메모리 최적화 프리미엄 시리즈 하드웨어 생성은 큰 버퍼 풀 또는 메모리 내 OLTP 용량 제한에 적합합니다. | 메모리 비율에 따라 권한을 부여하면 vCore의 과잉 프로비전을 방지하여 비용을 절감하고 성능 목표를 충족합니다. |
| 가상 네트워크 내에서 연결하는 워크로드에 대해 가상 네트워크-로컬 엔드포인트에서 리디렉션 연결 유형을 설정합니다. 이 설정은 초기 인증 후에 트래픽을 호스팅 노드로 직접 라우팅합니다. 공용 및 프라이빗 엔드포인트는 이 설정에 관계없이 항상 프록시 연결 형식을 사용합니다. |
초기 인증 후 게이트웨이를 바이패스하여 영구 가상 네트워크-로컬 연결에 대한 쿼리당 대기 시간을 줄입니다. |
연결 문자열에 ApplicationIntent=ReadOnly를 사용하여 읽기 전용 워크로드를 중요 비즈니스용 보조 복제본으로 라우팅합니다. 보조 복제본 지연을 모니터링하여 오프로드된 워크로드가 대기 시간 목표를 충족하는지 확인합니다.사용 가능한 경우 지역 간 읽기 오프로드에 장애 조치(failover) 그룹의 지리적 보조 노드를 사용합니다. SQL 관리 인스턴스에서는 이 방법이 인스턴스의 모든 데이터베이스에 걸쳐 공유된 vCore 및 메모리에 대한 부담을 줄여줍니다. |
추가 비용 없이 읽기를 포함된 보조 복제본으로 전송하여 모든 데이터베이스에서 쓰기 집약적인 작업을 위한 기본 컴퓨팅을 해제합니다. |
각 데이터베이스에서 쿼리 저장소 를 모드로 Read-Write 설정하고 보고서를 정기적으로 검토하여 회귀된 쿼리, 계획 변경 사항 및 리소스 사용 작업을 식별합니다.쿼리 저장소 인사이트를 누락된 인덱스 DMV와 결합하여 인덱스를 수동으로 평가하고 만듭니다. SQL Managed Instance는 자동 인덱스 관리를 지원하지 않습니다. 보존 및 스토리지 크기 값을 설정하여 기록 데이터 가용성과 스토리지 사용량의 균형을 유지합니다. |
회귀를 조기에 감지하고 정보에 입각한 최적화 결정을 내릴 수 있도록 쿼리 계획 품질 및 런타임 동작에 대한 지속적인 가시성을 제공합니다. |
| 데이터 수집, 캐싱 및 세션 상태와 같은 처리량이 높은 워크로드에는 중요 비즈니스용 계층의 메모리 내 OLTP 를 사용합니다. 제한은 구성에 따라 다르므로 하드웨어 생성을 선택할 때 사용 가능한 메모리 내 OLTP 스토리지 용량 을 고려합니다. | 래치 경합을 제거하고 처리량이 많은 워크로드에 대한 CPU 오버헤드를 줄여 더 높은 컴퓨팅 계층에 대한 필요성을 제거하는 경우가 많습니다. |
| 인스턴스를 공유하고 SQL Managed Instance 관련 동작을 고려하는 워크로드에서 CPU, 메모리 및 I/O 할당을 제어하도록 리소스 관리자를 설정합니다. 이 기능은 인스턴스 범위 배포 모델의 시끄러운 인접 위험을 직접 해결합니다. | 단일 데이터베이스 또는 쿼리 패턴이 공유 인스턴스 리소스를 독점하지 못하게 하여 데이터베이스 자산 전체에서 워크로드 격리를 보호합니다. |
| SQL Managed Instance에서 수정할 수 없는 고정 할당 및 파일 구성에 대한 TempDB 사용량을 계획합니다. 범용 계층은 다른 Azure SQL 제품보다 vCore당 TempDB 할당이 낮습니다. 이러한 제약 조건을 초과하는 TempDB 집약적 워크로드에 대해 중요 비즈니스용 계층을 평가합니다. |
범용 계층의 고정 할당 및 파일 구성 제약 조건을 고려하여 TempDB 공간 소모를 방지합니다. |
| 범용 계층에서 데이터 파일 크기를 최적화하여 IOPS를 최대화합니다. 더 큰 파일은 원격 스토리지 계층에서 비례적으로 더 높은 처리량을 받습니다. 차세대 범용에서 IOPS는 파일당이 아닌 예약된 스토리지를 기반으로 인스턴스 수준에서 확장됩니다. |
계층 업그레이드 없이 파일 크기를 조정하여 읽기 및 쓰기 처리량을 향상시킵니다. |
Azure 정책
Azure는 SQL Managed Instance 및 해당 종속성과 관련된 광범위한 기본 제공 정책 집합을 제공합니다. 이전 권장 사항 중 일부는 Azure Policy 통해 감사할 수 있습니다. 예를 들어 다음을 확인할 수 있습니다.
- 고객 관리형 키를 사용하여 SQL 관리형 인스턴스의 미사용 데이터를 암호화해야 합니다.
- SQL 관리형 인스턴스에서 Microsoft Entra 전용 인증을 활성화해야 합니다.
- SQL 관리되는 인스턴스에서 공용 네트워크 액세스를 차단해야 합니다.
- SQL 관리되는 인스턴스에서 GRS 백업 중복을 방지해야 합니다.
포괄적인 거버넌스를 위해 SQL Managed Instance에 대한 Azure Policy 기본 제공 정의 및 데이터베이스 워크로드의 보안에 영향을 줄 수 있는 기타 정책을 검토합니다.
Azure Advisor 권장 사항
Azure Advisor는 모범 사례를 따라 Azure 배포를 최적화하는 데 도움이 되는 개인 설정된 클라우드 컨설턴트입니다.
자세한 내용은 Azure Advisor를 참조하세요.
예제 아키텍처
주요 권장 사항을 보여 주는 기본 아키텍처: SQL Managed Instance의 완전 관리형 및 보안 앱.