Azure Communication Services 아키텍처 디자인

Azure Communication Services
Microsoft Entra ID
Azure 기능

이 가이드에는 Azure Communication Services의 데이터 흐름 다이어그램이 있습니다. 이 다이어그램을 통해 클라이언트 및 서비스가 Azure와 상호 작용하여 통신 환경을 제공하는 방법을 이해할 수 있습니다.

Azure Communication Services는 애플리케이션에 통신을 통합할 수 있는 REST API 및 클라이언트 라이브러리 SDK가 포함된 클라우드 기반 서비스입니다. Communication Services는 음성 및 영상 통화, 문자 채팅, SMS 및 사용자 지정 이진 데이터와 같은 여러 통신 형식을 지원합니다.

웹 및 모바일 앱에 통신을 추가하고, 사용자 지정 서비스 및 봇을 통합하고, PSTN(Public Switched Telephone Network)에 프로그래밍 방식으로 액세스할 수 있습니다. Azure Communication Services API 또는 Azure Portal에서 직접 전화 번호를 가져와서 SMS 또는 음성 통화 애플리케이션에 이 번호를 사용할 수 있습니다. Communication Services 직접 라우팅을 사용하여 SIP(Session Initiation Protocol) 및 Session Border Controller를 통해 자체 전화 통신 공급자를 가져올 수 있습니다.

이 데이터 흐름 다이어그램에는 다음 구성 요소가 사용됩니다.

  • 클라이언트 애플리케이션. 최종 사용자가 통신용으로 사용하는 웹 사이트 또는 네이티브 애플리케이션입니다. Communication Services에는 브라우저 및 네이티브 앱용 SDK 클라이언트 라이브러리가 있습니다. 이러한 SDK에 기반한 오픈 소스 UI 라이브러리는 프로그래밍 가능한 웹(React), iOS 및 Android UI 구성 요소를 제공합니다.
  • ID 관리 서비스. 사용자 및 서비스를 Communication Services ID에 매핑하기 위해 빌드하는 서비스입니다. 또한 이 서비스는 사용자가 데이터 평면에 액세스해야 할 때 토큰을 만듭니다.
  • 통신 컨트롤러 서비스. 채팅 스레드와 음성 및 영상 통화를 제어하기 위해 빌드하는 서비스입니다.
  • 통신 데이터 서비스. 채팅 및 SMS 메시지 보내기 또는 음성 통화에서 오디오 재생과 같은 통신 콘텐츠와 직접 상호 작용하도록 빌드하는 서비스 기능입니다.

WebRTC와 같은 통신 업계 표준은 통신을 제어 및 신호 평면과 데이터 평면으로 구분합니다. Communication Services를 사용하면 서비스의 WebRTC 내부 구현을 이해할 필요 없이 통신 환경을 빌드할 수 있습니다. 그러나 이러한 개념은 앱을 디자인하는 데 유용합니다.

시스템 함수 프로토콜 액세스 모델
제어 평면 통신 대상, 시기, 방법을 관리 REST (영문) Microsoft Entra 서비스 자격 증명
데이터 평면 사용자와 앱을 인터페이스로 연결하는 통신 콘텐츠, 음성, 비디오, 텍스트 및 데이터 포함 UDP, RTMP, WebSocket, REST 사용자 액세스 토큰 및 Microsoft Entra 서비스 자격 증명

일반적인 데이터 흐름은 다음과 같이 클라이언트 애플리케이션이 서비스 컨트롤러에서 제어 정보를 요청하여 통신을 시작할 때 발생합니다.

  • 오늘 어떤 모임이 있습니까?
  • 친구 조셉에게 전화할 때 어떤 전화 번호를 사용합니까?
  • 팀원의 이름은 무엇입니까? 진행 중인 채팅 스레드는 무엇입니까?

제어 서비스는 클라이언트에 사용자, 스레드, 전화 번호 및 통화에 대한 Communication Services 토큰 및 식별자를 제공하여 이러한 요청을 이행합니다. 그러면 클라이언트가 이러한 토큰 및 식별자를 사용하여 Azure 데이터 평면과 상호 작용합니다. Communication Services API는 최종 사용자 환경의 디자인 또는 통신을 제어하는 프로세스를 제한하지 않습니다.

WebRTC 표준에서 클라이언트는 신호라고 하는 프로세스에서 제어 메시지를 전송하여 서비스에서 제어 정보를 요청합니다. 통화 ID와 같은 Communication Services 식별자는 WebRTC 세션 설명과 비슷합니다.

사용자 액세스 토큰을 통해 인증된 사용자

Communication Services 클라이언트는 강화된 보안으로 Azure 통화 및 채팅 데이터 평면에 액세스할 수 있는 사용자 액세스 토큰을 제공합니다. 신뢰할 수 있는 서비스로 사용자 액세스 토큰을 생성하고 관리해야 합니다. 토큰을 생성하는 데 필요한 토큰 및 연결 문자열 또는 Microsoft Entra 비밀을 보호해야 합니다. 액세스 토큰을 제대로 관리하지 못하면 리소스를 잘못 사용하여 추가 요금이 생길 수 있습니다.

Diagram that shows the user access token architecture.

이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

  1. 사용자가 클라이언트 애플리케이션을 시작합니다.
  2. 클라이언트 애플리케이션이 ID 관리 서비스에 연결합니다. ID 관리 서비스는 애플리케이션 ID와 Communication Services ID 간의 매핑을 유지 관리합니다. (애플리케이션 ID에는 사용자 및 서비스, 봇과 같은 기타 주소 지정 가능한 개체가 포함됩니다.)
  3. ID 관리 서비스는 매핑을 사용하여 해당 ID의 사용자 액세스 토큰을 발급합니다.

Azure App Service 또는 Azure Functions는 ID 관리 서비스를 운영하기 위한 두 가지 대안입니다. 이러한 서비스는 쉽게 확장되며 사용자를 인증하는 기능이 기본 제공됩니다. OpenIDFacebook과 같은 타사 ID 공급자와 통합됩니다.

리소스

사용자가 앱 또는 전화 번호로 통화

가장 간단한 음성 및 영상 통화 시나리오는 푸시 알림 없이 전경에서 사용자가 다른 사용자에게 전화하는 것입니다. Communication Services 음성 및 영상 통화를 웹, 네이티브 모바일 및 Windows 데스크톱 앱에 통합할 수 있습니다. 오픈 소스 UI 라이브러리를 통해 개발을 가속화할 수 있습니다.

Diagram that shows Communication Services calling without push notifications.

이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

  1. 전화를 거는 사용자는 통화할 사용자의 Azure Communication Services ID가 있어야 합니다. 일반적인 시나리오에서 사용자는 ID 관리 서비스로 유지 관리하는 친구 목록에서 ID를 가져옵니다. 이 목록에서 사용자의 친구와 연결된 Communication Services ID를 대조합니다.
  2. 전화를 거는 사용자가 통화 클라이언트를 초기화하고 원격 사용자에게 전화합니다.
  3. 전화를 받는 사용자에게 통화 SDK를 통해 수신 중인 통화의 알림이 표시됩니다. 수신 전화를 받으려면 수락자가 미리 통화 클라이언트를 초기화해야 합니다.
  4. 두 사용자는 음성과 영상으로 통화하며 서로 통신합니다.

데이터 흐름은 사용자가 외부 전화 번호로 전화하는 경우와 거의 동일합니다. 크게 다른 점은 기존 전화 통신에 액세스하기 위해 전화를 거는 사용자 클라이언트는 사용자 ID가 아닌 컨트롤러 서비스의 원본 및 대상 전화 번호를 요청해야 합니다.

경우에 따라 앱이 Apple Push Notification Service와 같은 플랫폼 서비스를 사용하여 백그라운드에서 통화를 수락하도록 할 수 있습니다. Communication Services를 Azure Notification Hubs와 통합하여 이 기능을 활성화할 수 있습니다.

리소스

사용자가 초대 없이 그룹 통화에 참가

사용자가 명시적 초대 없이 그룹 통화에 참가하도록 할 수 있습니다. 앱을 통해 사용자가 원할 때 참가할 수 있는 영상 통화 채널이 포함된 지속적인 소셜 공간 또는 클럽을 사용할 수 있습니다. 이 데이터 흐름은 클라이언트가 처음 진행한 통화를 보여주고 원격 클라이언트가 명시적 초대 없이 참가하도록 허용합니다.

Diagram that shows a call without an invitation.

이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

  1. 전화를 거는 사용자가 통화 클라이언트를 초기화하고 그룹 통화를 진행합니다.
  2. 전화를 거는 사용자가 통신 컨트롤러 서비스에 그룹 통화 ID를 공유합니다.
  3. 통신 컨트롤러 서비스는 다른 사용자에게 통화 ID를 공유합니다. 예를 들어 애플리케이션에서 사용자 클럽을 제공하는 경우 그룹 통화 ID는 Azure Cosmos DB에 저장된 클럽 데이터 모델의 특성입니다.
  4. 다른 사용자는 그룹 통화 ID를 사용하여 통화에 참가합니다.
  5. 사용자들은 음성과 영상으로 통화하며 서로 통신합니다.

Microsoft 365 및 Teams

많은 조직에서 통신용으로 Microsoft 365 및 Teams를 사용합니다. Communication Services 및 Teams는 상호 운용 가능하므로 다음 시나리오를 사용할 수 있습니다.

  • 외부 사용자가 Teams 모임에 참가할 수 있도록 사용자 지정 애플리케이션을 빌드합니다. 이 시나리오는 Teams를 사용하는 기업이 사용자 지정 앱과 ID를 사용하는 외부 소비자를 위한 모임을 주최하는 가상 방문 시나리오에 이상적입니다. 이 시나리오에 대한 자세한 내용은 가상 방문 자습서 및 샘플 작성기를 참조하세요.
  • Teams/Microsoft Entra 자격 증명을 사용하여 내부 사용자에 대한 사용자 지정 애플리케이션을 빌드합니다. 이 시나리오는 직원용 사용자 지정 Teams 클라이언트를 빌드하기 위해 설계되었습니다.

이러한 사용자 지정 애플리케이션 시나리오에서는 Microsoft Graph API 및 Communication Services를 사용합니다. Teams에 연결하는 외부 앱 및 서비스를 빌드하는 경우, 일반적으로 Microsoft Graph를 Teams 제어 평면으로 사용합니다. 이 제어 평면을 사용하여 다음 API로 통신 대상, 방법 및 시기를 구성합니다.

모임 URL 및 스레드 식별자와 같은 제어 API의 정보를 사용하여 Communication Services 통화 및 채팅 클라이언트를 Teams 데이터 평면에 연결합니다.

Teams에는 Teams 환경 내부 및 Teams 스토어(예: 탭, 봇, 자동화)를 통해 사용자 지정 기능을 추가할 수 있는 SDK가 있습니다. 이러한 시나리오는 이 문서에서 다루지 않습니다.

Communication Services는 Teams 채널과의 상호 작용을 직접적으로 지원하지 않습니다. 사용자 지정 애플리케이션의 경우 Microsoft Graph 채팅채널 API를 사용하여 채널에 액세스하는 직원의 사용자 지정 클라이언트를 빌드할 수 있습니다.

예약된 Teams 통화에 참가하는 애플리케이션

Azure Communication Service 애플리케이션은 Teams 통화에 참가할 수 있습니다. 외부 사용자의 경우 애플리케이션에 Teams 모임에 연결하는 링크가 필요합니다. 링크 검색은 Microsoft Graph API를 통해 관리됩니다. 데이터 흐름은 다음과 같습니다.

Diagram showing Communication Services architecture for joining a Teams meeting.

이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

  1. (1A) 통신 컨트롤러 서비스는 Microsoft Graph API를 사용하여 그룹 통화를 예약합니다. 다른 사용 사례인 (1B)에서 사용자는 Outlook 또는 Teams를 사용하여 그룹 통화를 예약합니다.
  2. 통신 컨트롤러 서비스는 Communication Services 클라이언트와 Teams 통화의 세부 정보를 공유합니다.
  3. 일반적으로 Teams 사용자는 Teams UI를 통해 통화에 참가해야 하고 외부 사용자는 Teams 사전 통화 대기실을 통과하도록 해야 합니다. 그러나 이 요구 사항은 Teams 테넌트 구성 및 모임별 설정에 따라 달라집니다.
  4. Communication Services 사용자는 2단계에서 받은 세부 정보를 참조하여 통화 클라이언트를 초기화하고 Teams 모임에 참가합니다.
  5. 사용자는 음성 및 영상을 통해 서로 통신합니다.

리소스

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

기타 기여자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인하세요.

다음 단계