콘텐츠 중재 참조 아키텍처
온라인으로 게임을 플레이하는 동안 모든 사람이 적절히 행동하는 것은 아니며, 플레이어 사이에 예의 바르고 따뜻하며 유쾌한 환경을 유지하려면 약간의 조정이 필요합니다. 커뮤니티에서 생성된 부적절한 메시지 내용을 검색하여 공용 보기로 표시하기 전에 정리하거나 삭제하면 이러한 목표를 달성할 수 있습니다.
이 문서에서는 GitHub의 이 샘플에 사용된 아키텍처에 대해 설명합니다. 이 참조 아키텍처의 코드는 지침을 위한 예제일 뿐이며 프로덕션 환경에서 사용하기 위해서는 일부 코드를 최적화해야 할 수 있습니다.
아키텍처 다이어그램
아키텍처 서비스
- 콘텐츠 중재자 - 텍스트, 이미지 및 동영상 콘텐츠에서 불쾌하거나, 위험하거나, 기타 바람직하지 않은 자료가 있는지 확인합니다. 이러한 자료가 발견되면 해당 콘텐츠에 적절한 레이블(플래그)을 적용합니다.
- Azure Traffic Manager - 여러 지역에 걸쳐 전역적으로 확장할 경우 이 서비스는 DNS를 통해 연결하는 가장 가까운 지역을 선택합니다.
- 이벤트 허브 - 구성 또는 관리 오버헤드가 거의 없이 많은 수의 이벤트(채팅 문자열)를 순서대로 실시간으로 수신 및 처리하는 서비스입니다.
- Azure 함수 - 요청 시 코드를 실행하는 서버리스 컴퓨팅 서비스입니다. 이 경우에는 다른 인식 서비스를 호출하는 코드입니다.
아키텍처 고려 사항
메시지를 보내고 받는 데 각각 사용되는 2개의 이벤트 허브가 포함될 단일 이벤트 허브 네임스페이스만 만들면 됩니다.
Azure Content Moderator는 비속어(마스킹되거나 되지 않음) 및 PII를 감지합니다. 이 도구는 여러 콘텐츠 유형을 지원합니다. 텍스트, 이미지 및 동영상. 텍스트는 이 아키텍처에서 적용되는 유일한 콘텐츠 유형입니다.
배포 템플릿
다음 단추를 클릭하여 프로젝트를 Azure 구독에 배포합니다.
이 작업은 Azure 구독에 대한 azuredeploy.json ARM 템플릿 파일의 템플릿 배포를 트리거합니다. 그러면 필요한 Azure 리소스가 만들어집니다. 이로 인해 Azure 계정에 요금이 부과될 수 있습니다.
Azure 서비스에 대한 명명 규칙 및 제한 사항을 요약하는 섹션이 포함된 일반 지침 문서를 참조하세요.
참고
ARM 템플릿이 작동하는 방식에 관심이 있는 경우 이 참조 아키텍처에 활용된 각 서비스에서 Azure Resource Manager 템플릿 설명서를 참조하세요.
Azure Cognitive Services 구독에는 두 가지 유형이 있습니다. 첫 번째는 Computer Vision 또는 음성 서비스와 같은 단일 서비스에 대한 구독입니다. 단일 서비스 구독은 해당 서비스만으로 제한됩니다. 두 번째 유형은 다중 서비스 구독입니다. 이를 통해 여러 Azure Cognitive Services에 대한 단일 구독을 사용할 수 있습니다. 이 옵션은 청구도 통합합니다. 이 참조 아키텍처를 가능한 한 모듈식으로 만들기 위해 각 인식 서비스가 단일 서비스로 설정됩니다.
마지막으로, 샘플 프로젝트에서 Azure 서비스에 연결할 수 있도록 다음 함수 애플리케이션 설정을 추가합니다.
- EVENTHUB_CONNECTION_STRING = 만들어진 Azure 이벤트 허브 네임스페이스에 대한 연결 문자열입니다.
- CONTENTMODERATOR_KEY - 만들어진 Azure Content Moderator 인식 서비스에 액세스하는 데 사용되는 액세스 키입니다.
팁
Azure Functions를 로컬로 실행하려면 다음과 동일한 앱 설정을 사용하여 local.settings.json 파일을 업데이트합니다.
단계별 설명
- 플레이어의 디바이스는 Azure Traffic Manager에서 결정하는 특정 지역의 채팅 서버에 대 한 지속적이고 암호화된 연결을 엽니다. 채팅 서버는 몇 가지 기본 메타데이터와 함께 플레이어와의 연결을 유지 관리하는 프로세스를 만듭니다.
- 플레이어의 클라이언트는 이전에 만든 보안 연결을 통해 채팅 서버에 채팅 메시지를 보냅니다. 채팅 서버에 있는 플레이어의 프로세스는 메시지를 수신하고, 암호 해독하고, 구문 분석합니다.
- 표준 유효성 검사가 실행되며 채팅 서버는 메시지 순서를 유지하면서Azure 이벤트 허브 서비스를 호출합니다.
- Azure 이벤트 허브는 Azure 함수에 대한 입력 트리거 역할을 합니다.
- Azure 함수는 Azure Content Moderator 서비스를 호출합니다. 이 서비스는 플레이어가 보낸 메시지를 검토하고 결과를 반환합니다.
- 또 하나의 Azure 이벤트 허브가 Azure 함수용 출력으로 설정되어 있습니다.
- 채팅 서버는 Azure 이벤트 허브로부터 메시지를 수신합니다.
- 선택적으로 채팅 서버가 Azure Data Lake Storage와 같은 영구 저장소에 원본 메시지와 Azure Content Moderator 서비스의 결과를 모두 저장합니다.
- 메시지가 저장된 경우에는 선택적으로 분석을 위해 Azure Data Lake Analytics에 저장될 수 있습니다.
- 그런 다음 Azure Content Moderator 서비스의 결과가 채팅 서버의 수신 플레이어의 프로세스로 전송됩니다. 이 프로세스는 메시지에 대해 추가 유효성 검사를 실행하고 이를 직렬화하여 보안 연결을 통해 수신 플레이어의 디바이스에 전송합니다.
Azure Event Hubs
여러 프로그래밍 언어로 이벤트 허브에 이벤트를 전송하는 간단한 구현은 이 빠른 시작을 참조하세요. 여기에서 몇 가지 추가 샘플을 사용할 수 있습니다.
한 Azure 이벤트 허브가 다른 Azure 이벤트 허브에 대해 트리거하는 함수
이벤트 허브 트리거 함수가 트리거될 때 이를 트리거하는 메시지가 함수에 문자열로 전달됩니다. 이벤트 허브 출력 바인딩을 사용하여 이벤트 스트림에 이벤트를 기록합니다.
[return: EventHub("ehigce-output", Connection = "EventHubConnectionAppSetting")]
public static string Run([EventHubTrigger("ehigce-input", Connection = "EventHubConnectionAppSetting")] string chatString, ILogger log)
Cognitive Services 호출 시 401 액세스 거부 오류에 대한 일반적인 원인 및 해결 방법을 확인하세요.
보안 고려 사항
이벤트 허브 또는 Cognitive Services 연결 문자열을 함수의 원본에 하드 코딩하지 마세요. 대신, 적어도 함수 앱 설정을 활용하거나 더 강력한 보안을 위해 Key Vault를 사용하세요. Key Vault를 만드는 방법, 함수에 관리되는 서비스 ID를 사용하는 방법, 마지막으로 함수에서 Key Vault에 저장된 암호를 읽는 방법을 설명하는 자습서가 있습니다.
이벤트 허브 인증 및 보안 모델 개요를 검토하고 연습에 포함하여 채팅 서버만 이벤트 허브에 연결할 수 있도록 합니다.
크기 조정
이 아키텍처에서 병목이 될 수 있는 2개 지점에 대해 준비를 해야 합니다.
- Cognitive Services는 크기 조정이 잘 되지만 기본적으로 스로틀됩니다. 대규모로 사용하여 용량을 늘릴 계획인 경우 Azure 지원에 문의하세요.
- Azure 이벤트 허브 응답을 수신하는 채팅 서버는 크기 조정을 해야 합니다. 수요를 처리하기에 충분한 가상 컴퓨터를 스핀업합니다.
대안
Apache Spark 기반 플랫폼을 사용하여 분석을 수집하는 데 관심이 있는 경우 Azure Cache for Redis 및 Azure Databricks를 활용하는 것을 고려할 수 있습니다.
추가 리소스 및 샘플
Unity용 Azure Event Hubs SDK: 샌드박스 프로젝트입니다. 이 문서의 내용은 지원되지 않습니다. 따라서 최신 상태가 아니거나 작동 상태가 아닐 수 있습니다.
가격
Azure 구독이 없는 경우 무료 계정을 만들어 12개월 무료 서비스를 시작합니다. 이러한 서비스의 제한을 초과하지 않는 한 Azure 무료 계정에서 무료로 제공하는 서비스에 대해서는 요금이 부과되지 않습니다. Azure Portal을 통해 또는 사용량 파일을 통해 사용량을 확인하는 방법을 알아보세요.
이러한 참조 아키텍처를 실행하는 동안 사용되는 Azure 서비스의 비용은 사용자가 부담합니다. 전체 금액은 사용량에 따라 달라집니다. 참조 아키텍처에 사용된 각 서비스에 대한 가격 웹 페이지를 참조하세요.
Azure 가격 계산기를 사용하여 사용하려는 Azure 서비스에 대한 비용을 구성하고 예측할 수도 있습니다.