서비스 기본 구조와 필수 고려사항

시바코코개발자·2024년 2월 8일
0

클라우드

목록 보기
2/3

반드시 고려해야할 사항

1. 최초 접속과 사용자 인증

1) 아이디와 패스워드로 지식기반 인증(ID,PW)

  - 보안강화: 강력한 패스워드 정책을 적용하고, 정기적인 패스워드 변경을 권장.
  
  - 다중 인증: 추가 보안을 위해 2단계 인증(2FA)을 도입할 수 있으며, 이는 SMS,이메일, 또는 인증 앱을 통해 실행될 수 있습니다.

2) 중복 접속 이슈

  - 서비스 정책에 따라 한 아이디로 여러 기기 접속을 허용할지 결정 -> 사용자 경험과 서버 부하 관리에 영향
  
  - 사용자가 등록한 기기를 제한하고, IP 주소 및 기기 정보를 통해 접속을 관리.-> 필요한 경우 기기 변경 빈도 제한도.

2. 영상 목록 조회

1) API설계

  • 사용자에게 제공될 영상 목록을 효율적으로 관리하기 위한 RESTful API 또는 GraphQL API를 설계

2) 캐싱 전략

  • 고성능을 유지하기 위해 데이터베이스 쿼리결과를 캐싱. 인기 있는 콘텐츠의 목록은 더 빈번하게 캐시될 수 있습니다.

3. 영상 사용자 선택 및 재생(다운로드 가능성)

1) DRM(디지털 저작권 보호체계)

  • 플랫폼 선택
    Widevine (Google), FairPlay (Apple), PlayReady (Microsoft) 등 다양한 DRM 시스템 중에서 선택

  • 플레이어 통합
    Video.js와 같은 플레이어를 사용하여 DRM 보호된 콘텐츠 재생을 지원합니다. 이는 별도의 프로그램 설치 없이 웹 브라우저에서 직접 실행됩니다.

4. 전송 방법(HTTP,HLS)

  • 스트리밍 프로토콜
    HLS (HTTP Live Streaming)은 가장 널리 사용되는 스트리밍 프로토콜 중 하나로, 다양한 네트워크 조건에서 효율적인 콘텐츠 전송을 지원합니다.

  • HLS(HTTP Live Streaming)
    애플에 의해 개발된 비디오 스트리밍 프로토콜. 실시간 및 온디맨드 콘텐츠를 전송하기 위해 설계. 이 프로토콜은 동영상을 여러 개의 작은 파일(세그먼트)로 분할하고, 세그먼트로 분할된 파일들을 순차적으로 전송합니다.
    높은 호환성과 적응형 스트리밍 기능을 제공하여, 다양한 네트워크 환경과 장치에서 최적의 사용자 경험을 제공하는 것을 목표.

1️⃣ 비디오 인코딩
﹕원본 비디오는 서버에서 여러가지 해상도와 비트레이트로 인코딩되어, 다양한 네트워크 조건과 장치에 대응할 수 있는 여러 버전의 세그먼트로 준비.

2️⃣ M3U8 플레이리스트 파일
﹕각 비디오 버전에 대한 정보(해상도,비트레이트)와 세그먼트 파일의 위치가 담긴 플레이리스트 파일을 생성합니다. 클라이언트는 이 파일을 해석하여 현재 네트워크 상태에 가장 적합한 비디오 스트림을 선택.

3️⃣ 동적 전송
﹕클라이언트는 재생 중 네트워크 상태의 변화를 감지하고, 상태에 맞는 다른 해상도의 세그먼트를 요청하여 재생함으로써, 버퍼링을 최소화하고 영상 품질을 최적화.

HLS 스트리밍 구현

  • 서버 측
    ﹕원본 비디오를 여러 해상도와 비트레이트로 인코딩하고, 이를 세그먼트로 분할합니다. 각 비디오 스트림에 대한 정보를 담은 M3U8 플레이리스트 파일을 생성하고, 이 파일과 세그먼트를 웹 서버를 통해 제공합니다.

  • 클라이언트 측
    ﹕M3U8 플레이리스트 파일을 해석하고, 사용자의 네트워크 조건에 가장 적합한 비디오 스트림을 선택하여 세그먼트를 순차적으로 다운로드 및 재생합니다.

  • 인코딩
    콘텐츠는 여러 해상도와 비트레이트로 인코딩되어, 사용자의 네트워크 속도와 장치에 맞는 최적의 버전이 전송됩니다.

5. 인기도에 따른 부하 집중 및 대응

  • 부하 분산
    로드 밸런서를 사용하여 요청을 여러 서버에 분산시킵니다. 이는 서버의 과부하를 방지하고 서비스의 가용성을 높입니다.

  • 캐싱과 CDN
    정적 파일과 자주 요청되는 콘텐츠는 CDN을 통해 전 세계에 분산된 서버에서 캐싱되어 제공됩니다. 이는 지연 시간을 줄이고 스트리밍 경험을 개선합니다.

0개의 댓글