다음을 통해 공유


Service Bus 및 안정성

Azure Service Bus에서 메시지 큐와 게시-구독 토픽을 사용하여 엔터프라이즈 메시지 중개를 완전히 관리합니다. 이 서비스는 소비 당사자가 메시지를 받을 준비가 될 때까지 broker(예: )에 메시지를 저장합니다.

이점은 다음과 같습니다.

  • 경쟁 작업자 간에 부하 분산
  • 서비스 및 애플리케이션 경계 간에 데이터 및 제어를 안전하게 라우팅 및 전송합니다.
  • 높은 수준의 안정성이 필요한 트랜잭션 작업을 조정합니다.

Service Bus 사용에 대한 자세한 내용은 Azure Service Bus 메시징 참조하세요. 온-프레미스 및 클라우드 환경에서 애플리케이션 및 서비스를 연결하는 메시징을 설정하는 방법을 알아봅니다.

Service Bus가 신뢰할 수 있는 워크로드에 기여하는 방식을 이해하려면 다음 항목을 참조하세요.

메모

이전에는 가용성 영역을 사용하도록 설정하기 위해 속성 zoneRedundanttrue 설정해야 했습니다. 그러나 이 동작은 기본적으로 가용성 영역을 사용하도록 변경되었습니다. 기존 네임스페이스는 가능한 경우 가용성 영역으로 마이그레이션되고 속성 zoneRedundant 더 이상 사용되지 않습니다. 가용성 영역을 사용하도록 설정한 경우에도 속성 zoneRedundant 여전히 false표시될 수 있습니다.

다음 섹션은 Azure Service Bus 및 안정성과 관련이 있습니다.

  • 디자인 고려 사항
  • 구성 검사 목록
  • 권장 구성 옵션
  • 원본 아티팩트

디자인 고려 사항

Azure Service Bus 작동 시간 SLA를 사용하여 안정성을 최대화합니다. 올바르게 구성된 애플리케이션은 메시지를 보내거나 받거나 배포된 큐 또는 토픽에서 다른 작업을 수행할 수 있습니다. 자세한 내용은 Service Bus SLA참조하세요.

다른 디자인 고려 사항은 다음과 같습니다.

Service Bus Premium 및 표준 메시징 계층에 대한 설명서 외에도 다음 기능은 SKU(Premium Stock Keeping Unit)에서만 사용할 수 있습니다.

  • 전용 리소스.
  • 가상 네트워크 통합: Service Bus 인스턴스에 연결할 수 있는 네트워크를 제한합니다. 서브넷에서 서비스 엔드포인트를 사용하도록 설정해야 합니다. Virtual Network를 구현할 때 지원되지 않는 신뢰할 수 있는 Microsoft 서비스가 있습니다(예: Event Grid와의 통합). 자세한 내용은 특정 가상 네트워크Azure Service Bus 네임스페이스에 대한 액세스 허용을 참조하세요.
  • 프라이빗 엔드포인트.
  • IP 필터링/방화벽: 정의된 IPv4 주소 또는 IPv4 주소 범위로만 연결을 제한합니다.
  • Event Grid 통합: 사용 가능한 이벤트 유형 .
  • 메시징 단위를 확장합니다.
  • Geo-Disaster 복구(쌍을 이루는 네임스페이스).
  • 지역 복제(지역 간 전체 데이터 복제).
  • CMK(고객 관리형 키): Azure Service Bus는 미사용 데이터를 암호화하고 액세스 시 자동으로 암호를 해독하지만 고객은 자체 고객 관리형 키를 가져올 수도 있습니다.

지역 재해 복구 및 가용성 영역에서 Service Bus를 배포하는 경우 SLO(서비스 수준 작업)가 크게 증가하지만 가동 시간 SLA는 변경되지 않습니다.

점검 표

안정성을 염두에 두고 Azure Service Bus를 구성했나요?

  • Azure Service Bus의 프리미엄 계층 혜택을 평가합니다.
  • Service Bus 메시징 예외가 제대로 처리되도록 확실히 하십시오.
  • AMQP(고급 메시징 큐 프로토콜)를 사용하여 Service Bus에 연결하고 가능한 경우 서비스 엔드포인트 또는 프라이빗 엔드포인트를 사용합니다.
  • Service Bus 메시징 사용하여 성능 향상에 대한모범 사례를 검토합니다.
  • 송신자 및 수신자 쪽에서 지역 복제를 구현하여 중단 및 재해로부터 보호합니다.
  • 지리적 재해를 설정합니다.
  • 큐 및 토픽이 있는 중요 업무용 메시징이 필요한 경우 Geo-Disaster Recovery에서 Service Bus Premium을 사용하는 것이 좋습니다.
  • Service Bus 네임스페이스에 대한 고가용성을 구현합니다.
  • 관련 메시지가 보장된 순서로 배달되는지 확인합니다.
  • JMS API를 통해 다양한 JMS(Java Messaging Service) 기능을 평가합니다.
  • .NET Nuget 패키지를 사용하여 Service Bus 메시징 엔터티와 통신합니다.
  • 메시지를 보내거나 받을 때 일시적인 오류 처리를 위한 복원력을 구현합니다.
  • 메시징 단위의 자동 크기 조정을 구현합니다.

구성 권장 사항

Azure Service Bus를 구성할 때 안정성을 최적화하려면 다음 권장 사항을 고려하세요.

추천 묘사
Azure Service Bus의 프리미엄 계층 혜택을 평가합니다. 플랫폼 지원 중단 및 재해 보호를 활용하려면 Service Bus의 프리미엄 계층으로 마이그레이션하는 것이 좋습니다.
AMQP 프로토콜을 사용하여 Service Bus에 연결하고 가능한 경우 서비스 엔드포인트 또는 프라이빗 엔드포인트를 사용합니다. 이 권장 사항은 Azure 백본에서 트래픽을 유지합니다. 참고: Microsoft.Azure.ServiceBusWindows.Azure.ServiceBus 네임스페이스에 대한 기본 연결 프로토콜은 AMQP.
송신자 및 수신자 쪽에서 지역 복제를 구현하여 중단 및 재해로부터 보호합니다. 표준 계층은 보낸 사람 및 수신자 쪽 지역 중복성 구현만 지원합니다. Azure 지역의 중단 또는 재해로 인해 솔루션에 가동 중지 시간이 발생할 수 있습니다.
지리적 재해 설정을 구성합니다. - 활성/활성
- 활성/수동
쌍을 이루는 네임스페이스(활성/수동)-
- Geo-Replication(전체 데이터 복제가 있는 활성/수동)
- 참고: 보조 지역은 Azure 쌍을 이루는 지역이어야 합니다.
큐 및 토픽이 있는 중요 업무용 메시징이 필요한 경우 Geo-Disaster Recovery에서 Service Bus Premium을 사용하는 것이 좋습니다. 패턴을 선택하는 것은 비즈니스 요구 사항 및 RTO(복구 시간 목표)에 따라 달라집니다.
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'
    

다음 단계