오디오 스트리밍 서비스의 시스템 설계

오디오 스트리밍 서비스의 시스템 설계

오디오 스트리밍 앱의 시스템 설계는 특유의 비즈니스 요구를 다루는 방법에서 독특합니다. 일반적으로 오디오 스트리밍은 네트워크 통신 채널의 제한된 대역폭 내에서 많은 양의 데이터를 전송해야합니다.

성공적인 오디오 스트리밍 서비스는 다양한 지리적 위치에서 수백만 명의 활성 사용자와 수천 명의 컨텐츠 제공 업체를 처리해야합니다. 다양한 장치 및 플랫폼 (스마트 폰, 데스크탑, 스마트 스피커)은 MP3, FLAC, ALAC 등과 같은 다양한 오디오 형식을 지원할 수 있습니다.

이 블로그 게시물에서는 기능적 및 비 기능적 요구 사항을 다루는 복잡한 시스템을 설계하는 뉘앙스를 탐색 할 것입니다.

기능적 요구 사항

기능 요구 사항은 컨텐츠 제작자 및 오디오 사용자 또는 청취자에게 필요한 기능을 다룹니다.

  • 컨텐츠 관리. 컨텐츠 제작자는 모든 형식으로 오디오를 업로드, 삭제 또는 업데이트 할 수 있습니다. 각 오디오에는 제목, 저자, 설명, 카테고리 및 메타 데이터 태그와 같은 메타 데이터가 있어야합니다.
  • 공고. 컨텐츠 제작자는 오디오 업로드의 성공 또는 실패에 대한 알림을받습니다. 오디오 리스너 또는 사용자는 오디오의 성공적인 업로드에 대한 알림을받습니다.
  • 원활한 스트리밍. 사용자는 선택한 형식의 오디오를 재생, 일시 중지, 되감기 및 다운로드 할 수 있습니다.
  • 구독하다. 사용자는 선택한 오디오를 구독하여 새로 업데이트 된 콘텐츠 또는 업데이트 된 콘텐츠에 대한 알림을받을 수 있어야합니다.
  • 사용자 로그인. 컨텐츠 제작자는 시스템에 액세스 할 수 있도록 인증 및 권한을 부여해야합니다. 사용자는 시스템에 등록하여 프로파일을 설정할 수 있습니다.
  • 찾다. 사용자는 특정 속성 또는 메타 데이터를 기반으로 오디오를 검색 할 수 있어야합니다.

메모: 라이브 스트리밍 및 지불 서비스는이 기사의 범위에서 벗어납니다.

기능적 사용 사례의 시퀀스 다이어그램

시퀀스 다이어그램

건축 설계

기능 요구 사항을 지원하기 위해 서비스 구성 요소를 정의해 봅시다.

첫 번째 기능 요구 사항은 MP3, FLAC, ALAC 등과 같은 형식을 사용하여 오디오를 업로드하는 것입니다. 이러한 오디오 파일은 인상적인 양의 데이터를 보유 할 수 있습니다. 오디오 코덱은이 데이터를 효율적으로 저장, 전송 및 재생하는 데 중요한 역할을합니다. 코덱에는 주로 두 가지 유형이 있습니다.

  1. 무손실 코덱 – 데이터를 잃지 않고 오디오를 압축하고 품질을 잃지 않고 완전히 복원 할 수 있습니다.
  2. 손실 코덱 – 크기를 크게 줄이는 데 도움이되는 일부 데이터를 제거합니다. 이것은 음질을 손상시킬 수 있습니다.

컨텐츠 제공 업체는 일반적으로 녹음 및 편집을 위해 무손실 형식으로 작동합니다. 이를 통해 오디오를 작동하고 효과를 적용하며 최종 제품을 마스터 할 때 품질이 손실되지 않습니다. 간단히 말해서, 오디오 마스터 링은 오디오 제작 과정의 마지막 단계입니다.

최종 오디오가 마스터되면 일반 배포를 위해 손실 형식으로 변환됩니다. 손실 형식으로 크기가 더 크게 줄어들어 스트리밍 및 다운로드가 더 쉽고 빠릅니다.

트랜스 코딩

압축 오디오는 지원되는 네트워크 대역폭을 사용하여 리스너 장치로 전송해야합니다. 대역폭은 동적으로 달라질 수 있으며, 연결된 사용자 수 또는 사용자가 오디오를 들으면서 한 네트워크 영역에서 다른 네트워크 영역으로 이동하는 사용자의 수에 따라 네트워크로드가 변경 될 수 있습니다.

이 변화하는 네트워크 대역폭을 지원하기 위해 코덱은 “적응 비트 속도”메커니즘을 사용할 수 있습니다. 적응 형 비트 레이트 스트리밍은 사용자의 대역폭을 실시간으로 감지하여 스트림을 그에 따라 조정합니다. 사용자의 현재 대역폭에 따라 비트 속도 스트리밍을 동적으로 전환 할 수 있습니다. 이로 인해 버퍼링이 거의없고 시작 시간이 빠르며 고급 및 저가형 연결 모두에 대한 좋은 경험이 생깁니다.

인코더는 오디오 파일의 단일 소스를 여러 비트 속도로 인코딩합니다. 이 바이트 스트림은 리스너가 사용할 수 있도록 객체 저장소에 포장되어 저장됩니다. 오디오가 성공적으로 업로드되면 알림 서비스는 컨텐츠 제공 업체에 알림을 보냅니다.

코덱을 사용한 적응 형 비트 속도 지원

컨텐츠 제작자는 오디오를 업로드하도록 요청하면서 메타 데이터를 추가로 제공합니다. 오디오 데이터 서비스. 이 데이터는 오디오 리스너에게 더 나은 검색 기능을 제공하도록 색인화됩니다.

오디오 시스템에는 새로운 사용자 등록을 처리하고 사용자 자격 증명을 사용하여 로그인 및 사용자 (리스너 및 컨텐츠 제공 업체)와 관련된 역할을 기반으로 승인을 위해 인증 및 승인 서비스가 필요합니다. API 게이트웨이 서비스 이는 인증 및 승인을 중앙에서 관리 할 수 ​​있습니다. 이 서비스는 요청 경로를 수행하고 프론트 엔드에서 백엔드 서비스로의 오케스트레이션 프로세스 흐름을 수행하도록 활용할 수 있습니다.

오디오 사용자 (리스너)는 관심있는 오디오를 검색 할 수 있으며, 이는 오디오 데이터 서비스 관련 오디오의 위치를 ​​반환하려면 오디오 메타 데이터 저장소에서 정보를 가져옵니다. 사용자는 링크를 클릭하면 패키지 및 저장된 오디오 바이트를 반환합니다. 패키지 서비스.

그만큼 사용자 프로필 서비스가 관리됩니다 사용자 선호, 팔로어 및 팔로어.

오디오 업로드의 프로세스 흐름

위의 다이어그램은 컨텐츠 제공 업체에 의해 트리거 된 기본 “오디오 업로드 오디오”프로세스 흐름과 오디오 사용자/리스너가 트리거 된 “오디오 청취”프로세스 흐름을 보여줍니다.

메시지 대기열이있는 파이프 라인 및 필터링 설계 패턴은 서비스 간의 데이터 흐름을 지원하여 병렬 처리 및 결함 공차로 프로세스를 효율적으로 확장하는 데 사용됩니다.

이제 비 기능적 요구 사항으로 이동합시다.

비 기능적 요구 사항

  • 확장 성. 이 시스템은 수천 명의 동시 사용자를 지원하고 성장하고 축소 할 수 있어야합니다.
  • 결함 공지. 시스템은 일반적으로 중복 데이터를 사용하여 다운 타임이 낮아야합니다.
  • 성능. 컨텐츠 재생 중에 시스템은 대기 시간이 낮고 응답 성이 낮아야합니다.
  • 보안. 이 시스템은 무단 액세스 또는 DDO와 같은 유해한 공격으로부터 안전해야합니다.

확장 성

오디오 시스템은 수천 명의 활성 콘텐츠 제작자를 지원할 수 있어야합니다. 로드를 관리하기 위해 디자인에는 API 게이트웨이 서비스의 여러 인스턴스, 앱 웹 서비스 및로드 밸런서가 전술 한 오디오 데이터 서비스를 실행하는 것이 포함됩니다.

그러나 이것은 컨텐츠 제작자의 수가 증가함에 따라 확장 할 수 없습니다. 오디오 파일은 일반적으로 크기 때문에 여러 서비스 구성 요소를 통과하는 동안 높은 네트워크 및 컴퓨팅 전력을 사용합니다. 시스템 리소스 사용을 최적화하기 위해 서명 된 URL (사전 서명 된 URL이라고도 함)을 사용하여 오브젝트 저장에 시간 제한 액세스를 제공하여 오디오 파일을 직접 업로드 할 수 있습니다. 이를 통해 API 게이트웨이 및 API 웹 서비스를 통해 트래픽을 라우팅 할 필요가 없습니다. 서명 된 URL은 더 나은 보안을 위해 세분화 권한 및 만료 규칙으로 구성 할 수 있습니다.

사전 서명 된 URL 사용

여기에는 콘텐츠 제공 업체 별 오디오 파일을 업로드하기위한 확장 성 요구 사항이 포함됩니다.

오디오 리스너의 수백만 개의 검색 요청이 시스템에 도달하여 오디오 데이터 서비스가 과부하 될 수 있습니다. 이 대규모 검색 작업을 지원하는 시스템을 확장하기 위해 CQRS (Content Query Diskintibility Segrictation) 설계 패턴을 사용할 수 있습니다. /Datastore에서/To Datastore에서 읽기 및 쓰기 작업은 독립적으로 관리하여 다양한 대기 시간, 확장 성 및 보안 요구 사항을 지원할 수 있습니다.

CQRS 디자인 패턴

결함 공지

결함 공차 설계에는 다양한 차원이 있습니다. 그들 중 일부는 이미 디자인에 포함되어 있습니다.

  • 확장 성 및 결함 허용 오류를위한 여러 서비스 인스턴스 사용
  • 데이터 흐름 수준에서 결함 공차를 지원하기 위해 파이프 라인 처리로 메시지 대기
  • 트랜스 코더 서비스 및 포장 서비스 분리
  • 복제본이있는 여러 DB 인스턴스
  • 가용성 구역은 특정 지역 및 사용자베이스를 지원하는 전체 시스템을 배치하기 위해 미국 동부, 미국 서부 및 아시아 태평양과 같은 지역에 조정됩니다.

다중 지역 배치

성능

CDN (Content Delivery Network)은 오디오 및 비디오 파일과 같은 콘텐츠를 더 빠르고 효율적으로 제공하기 위해 함께 그룹화 된 분산 서버 네트워크입니다. Edge 서버의 컨텐츠를 캐시하여 낮은 대기 시간으로 더 나은 성능을 제공합니다.

보안

CDN은 또한 DDOS 완화 및 몇 가지 다른 보안 측정을 제공하여 보안을 향상시킵니다.

콘텐츠 전달 네트워크 (CDN)

패키지 서비스는 오디오 파일을 Edge 서버에서 캐시 할 수 있도록 CDN에 배포합니다. 오디오 데이터 서비스는 CDN의 위치를 ​​메타 데이터로 업데이트하여 사용자의 쿼리를 위해 검색 서비스로 라우팅됩니다.

높은 수준의 구성 요소 아키텍처

위의 다이어그램은 일반적인 오디오 시스템의 높은 수준의 구성 요소 아키텍처를 보여줍니다.

결론

우수한 오디오 시스템의 핵심에는 확장 성, 성능 및 결함 공차가 있으며 최소한의 왜곡, 낮은 대기 시간 및 안정성으로 우수한 사용자 경험을 제공합니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다