Service Bus 및 안정성
Azure Service Bus에 사용되는 메시지 큐와 게시-구독 토픽이 있는 완전 관리형 엔터프라이즈 메시지 브로커입니다. 이 서비스는 소비하는 주체에서 메시지를 받을 준비가 될 때까지 메시지를 broker(예: queue)에 저장합니다.
이점은 다음과 같습니다.
- 경합하는 작업자 간에 부하를 분산합니다.
- 서비스 및 애플리케이션 경계에서 데이터 및 제어를 안전하게 라우팅하고 전송합니다.
- 높은 수준의 안정성이 필요한 트랜잭션 작업을 조정합니다.
Service Bus 사용에 대한 자세한 내용은 Azure Service Bus 메시징을 참조하세요. 온-프레미스 및 클라우드 환경에서 애플리케이션 및 서비스를 연결하는 메시징을 설정하는 방법에 대해 알아봅니다.
Service Bus가 안정적인 워크로드에 어떻게 기여하는지 알아보려면 다음 토픽을 참조하세요.
다음 섹션은 Azure Service Bus 및 안정성과 관련이 있습니다.
- 디자인 고려 사항
- 구성 검사 목록
- 권장 구성 옵션
- 원본 아티팩트
디자인 고려 사항
Azure Service Bus 가동 시간 SLA를 사용하여 안정성을 최대화합니다. 올바르게 구성된 애플리케이션은 메시지를 보내거나 받거나, 배포된 큐 또는 토픽에서 다른 작업을 수행할 수 있습니다. 자세한 내용은 Service Bus SLA를 참조하세요.
다른 디자인 고려 사항은 다음과 같습니다.
Service Bus 프리미엄 및 표준 메시징 계층에 대한 설명서 외에도 다음 기능은 Premium SKU(Stock Keeping Unit)에서만 사용할 수 있습니다.
- 전용 리소스.
- 가상 네트워크 통합: Service Bus 인스턴스에 연결할 수 있는 네트워크를 제한합니다. 서브넷에서 서비스 엔드포인트를 사용하도록 설정해야 합니다. Virtual Network를 구현할 때 지원되지 않는 신뢰할 수 있는 Microsoft 서비스가 있습니다(예: Event Grid와의 통합). 자세한 내용은 특정 가상 네트워크에서 Azure Service Bus 네임스페이스에 대한 액세스 허용을 참조하세요.
- 프라이빗 엔드포인트.
-
IP 필터링/방화벽: 정의된
IPv4
주소 또는IPv4
주소 범위로만 연결을 제한합니다. - 영역 중복성: 추가 비용 없이 한 지역 내의 가용성 영역 전체에 복제본을 분배하여 가용성을 향상시킵니다.
- Event Grid 통합: 사용 가능한 이벤트 유형.
- 메시징 단위 크기를 조정합니다.
- 지역 재해 복구(쌍을 이루는 네임스페이스).
- CMK(고객 관리형 키): Azure Service Bus 미사용 데이터를 암호화하고 액세스 시 자동으로 암호를 해독하지만 고객은 자체 고객 관리형 키를 가져올 수도 있습니다.
지역 재해 복구 및 가용성 영역에서 Service Bus를 배포할 때 SLO(서비스 수준 운영)는 크게 증가하지만 가동 시간 SLA는 변하지 않습니다.
검사 목록
안정성을 염두에 두고 Azure Service Bus를 구성했나요?
- Azure Service Bus 프리미엄 계층 이점을 평가합니다.
- Service Bus 메시징 예외가 제대로 처리되었는지 확인합니다.
- Service Bus를 AMQP(Advanced Message Queuing Protocol)와 연결하고, 가능하다면 서비스 엔드포인트 또는 프라이빗 엔드포인트를 사용합니다.
- Service Bus 메시징을 사용한 성능 향상의 모범 사례를 검토하세요.
- 발신자 및 수신자 쪽에서 지역 복제를 구현하여 중단 및 재해로부터 보호합니다.
- 지역 재해를 구성합니다.
- 큐 및 토픽이 포함된 중요 업무용 메시지가 필요한 경우 지리적 재해 복구에 Service Bus 프리미엄을 사용하는 것이 좋습니다.
- Service Bus 네임스페이스에서 영역 중복성을 구성합니다(프리미엄 계층에서만 가능).
- Service Bus 네임스페이스에 대한 고가용성을 구현합니다.
- 관련 메시지가 보장된 순서대로 배달되도록 확인합니다.
- JMS API를 통해 다양한 JMS(Java Messaging Service) 기능을 평가합니다.
- .NET Nuget 패키지를 사용하여 Service Bus 메시지 엔터티와 통신합니다.
- 메시지를 보내거나 받을 때 일시적인 오류 처리에 대한 복원력을 구현합니다.
- 메시징 단위의 자동 크기 조정을 구현합니다.
구성 권장 사항
Azure Service Bus를 구성할 때 안정성을 최적화하려면 다음 권장 사항을 고려하세요.
권장 | Description |
---|---|
Azure Service Bus 프리미엄 계층 이점을 평가합니다. | 플랫폼에서 지원하는 중단 및 재해 방지를 활용하려면 Service Bus 프리미엄 계층으로 마이그레이션하는 것이 좋습니다. |
Service Bus를 AMQP 프로토콜과 연결하고, 가능한 경우 서비스 엔드포인트 또는 프라이빗 엔드포인트를 사용합니다. | 이 권장 사항은 Azure 백본에서 트래픽을 유지합니다.
참고: Microsoft.Azure.ServiceBus 및 Windows.Azure.ServiceBus 네임스페이스의 기본 연결 프로토콜은 AMQP 입니다. |
발신자 및 수신자 쪽에서 지역 복제를 구현하여 중단 및 재해로부터 보호합니다. | 표준 계층은 발신자 및 수신자 쪽 지역 중복의 구현만 지원합니다. Azure 지역의 중단 또는 재해로 인해 솔루션의 가동 중지 시간이 발생할 수 있습니다. |
지역 재해를 구성합니다. |
-
활성-활성 - 활성/수동 - 쌍을 이루는 네임스페이스(활성/수동) - 참고: 보조 지역은 가급적이면 Azure 쌍을 이루는 지역인 것이 좋습니다. |
큐 및 토픽이 포함된 중요 업무용 메시지가 필요한 경우 지리적 재해 복구에 Service Bus 프리미엄을 사용하는 것이 좋습니다. | 패턴 선택은 비즈니스 요구 사항 및 RTO(복구 시간 목표)에 따라 달라집니다. |
Service Bus 네임스페이스에서 영역 중복성을 구성합니다(프리미엄 계층에서만 가능). | 영역 중복에는 메시지 저장소 복사본 3개가 포함됩니다. 한 영역은 기본 메시지 저장소로 할당되고 다른 영역은 보조 영역으로 할당됩니다. 주 영역을 사용할 수 없게 되면 인식 가능한 가동 중지 시간 없이 보조 영역이 주 영역으로 승격됩니다. 가용성 영역은 새 지역이 정기적으로 추가되는 Azure 지역의 하위 집합에서 사용할 수 있습니다. |
Service Bus 네임스페이스에 대한 고가용성을 구현합니다. | 프리미엄 계층은 네임스페이스 수준에서 지리적 재해 복구 및 복제를 지원합니다. 이 수준에서 프리미엄 계층은 기본 및 보조 재해 복구 네임스페이스를 사용하여 메타데이터 재해 복구를 위한 고가용성을 제공합니다. |
관련 메시지가 보장된 순서대로 배달되도록 확인합니다. | 관련 메시지가 메시지 엔터티의 동일한 파티션으로 전송되도록 각 메시지에서 파티션 키, 세션 ID 또는 메시지 ID를 설정해야 하는 요구 사항에 유의하세요. |
JMS API를 통해 다양한 JMS 기능을 평가합니다. | JMS 2.0 API(및 SDK(소프트웨어 개발 키트))를 통해 제공되는 기능은 네이티브 SDK를 통해 제공되는 기능과 다릅니다. 예를 들어 Service Bus 세션은 JMS에서 사용할 수 없습니다. |
메시지를 보내거나 받을 때 일시적인 오류 처리에 대한 복원력을 구현합니다. | 처리량을 유지하고 메시지 손실을 방지하려면 송신 및 수신 작업에 적합한 일시적 장애 처리 및 오류 처리를 구현해야 합니다. |
메시징 단위의 자동 크기 조정을 구현하여 워크로드에 사용할 수 있는 충분한 리소스가 있는지 확인합니다. |
원본 아티팩트
프라이빗 엔드포인트를 사용하지 않는 프리미엄 Service Bus 인스턴스를 식별하려면 다음 쿼리를 사용합니다.
Resources | where type == 'microsoft.servicebus/namespaces' | where sku.tier == 'Premium' and isempty(properties.privateEndpointConnections)
프리미엄 계층에 없는 Service Bus 인스턴스를 식별하려면 다음 쿼리를 사용합니다.
Resources | where type == 'microsoft.servicebus/namespaces' | where sku.tier != 'Premium'
영역 중복되지 않는 프리미엄 Service Bus 인스턴스를 식별하려면 다음 쿼리를 사용합니다.
Resources | where type == 'microsoft.servicebus/namespaces' | where sku.tier == 'Premium' and properties.zoneRedundant == 'false'