본문 바로가기
줌 아키텍처

줌 클라우드의 이해

by 라인하트 2021. 12. 16.

줌 클러스터 (Zoom Cluster)

   줌 클러스터는 줌 클라우드 서비스를 제공하는 논리적인 인스턴스입니다. 하나의 줌 클러스터는 줌 클라우드 서비스를 제공하는 물리적인 데이터 센터를 여러 개를 묶습니다. 줌은 무료 사용자 클러스터 와 유료 사용자 클러스터를 구분하고, 유료 사용자 클러스터는 여러 클러스터로 나눕니다. 줌 클러스터는 모든 줌 클라우드 서비스를 제공하는 완전한 서비스 단위입니다.  현재 줌은 약 10개의 줌 클러스터를 관리합니다. 

   클러스터를 구성하는 컴포넌트는 다음과 같습니다.

  • 실시간 서비스(Real-Time Service) : 실시간으로 제공하는 서비스
    - 미팅 서비스 
    - 클라우드 녹화 서비스 
    - 게이트웨이 : 전화 및 H.323/SIP 단말 연동을 위한 프락시

  • 비실시간 서비스 (Non-Real-Time Services) 
    - 웹서비스 : 사용자 인증, 미팅 개최 및 참석, 미팅 설정, 마켓플레이스 등, 과금(Zuora), 이메일(Mandril), OAuth providers 연동
    - XMPP (eXtensible Messaging and Presence Protocol) : XML 기반의 인스턴스 채팅 서비스
    - Asunc : 메시지 큐와 상위 레벨 서비스

  • 클라우드 컨트롤러 (Cloud Controller)
    - 중앙 집중식 관리, 자원 할당, 서비스 코디네이션

   

데이터센터

    줌의 초기 데이터센터는 AWS(아마존 웹 서비스, Amazon Web Services)에 위치하였습니다. 사용자가 급증하고  실시간 서비스의 지연이 증가됨에 따라 여러 데이터센터를 이용합니다. Equinix, Zayo, Pacnet, Tata, Cogeco, Level 3, CoreSite 등의 데이터센터를  사용합니다. 데이터센터간 연결은 최소 10Gbps 링크를 사용하고, 두 데이터센터간 통신 지연이 200ms 이하를 유지하도록 설계하였습니다. 비실시간 서비스는 여전히 AWS 데이터센터를 사용합니다. 또한, 특정 고객의 요구에 맞추어 Azure 및 Oracle 을 사용하기도 합니다. 

 

     줌의 데이터센터 위치는 다음과 같습니다. 사용량이 증가함에 따라 데이터센터는 매년 증가하기 때문에 정확하지 않습니다. 

 

실시간 서비스 아키택처

   줌 클라우드 서비스 중 실시간 서비스를 제공하는 주요 컴포넌트는 다음과 같습니다. 

 

  

   줌 클러스터는 3 개의 클라우드 클러스터(CC, Cloud Controller)를 포함합니다. 클라우드 컨트롤러는 중앙 집중식 서비스와 자원 분배를 제공하고, 아파치 주키퍼(ZooKeeper)와 비슷합니다. 아파치 주키퍼는 대규모 분산시스템에서 고가용성을 지원하는 아키텍처입니다. 주키퍼는 동일한 서비스를 제공하는 여러 노드를 묶어서 관리하므로 하나의 노드가 장애가 나더라도 안정적인 서비스가 가능하고, 성능이 부족할 경우 노드를 추가할 수 있습니다. 또한, 만일 주키퍼가 요청에 응답하지 않을지라도 다른 주키퍼에게 요청을 보내므로 매우 안정적인 서비스가 가능합니다. 

   하나의 줌 클러스터는 클라우드 컨트롤러와 통신하는 여러 서비스 존(Service Zone)으로 구성됩니다. 각각의 존은 미팅, 라이브 스트리밍, 클라우드 미팅 녹화와 같은 실시간 서비스를 제공합니다. 예를 들어, 미팅 존 (meeting zone)은 여러 데이터센터에 분산되어 있습니다. 여러 미팅 존들은 상황에 따라 서로 연동합니다. 각 존에는 2 개의 존 컨트롤러(ZC, Zone Controller)가 있고, Primary-Backup 관계를 유지하면서 존 내의 자원을 관리합니다.

 

   클라우드 컨트롤러(CC)는 서비스 요청이 있을 때마다 어떤 존 컨트롤러(ZC)를 사용할 지를 결정합니다. 줌 클러스터에 있는 주요 실시간 서비스를 제공하는 존들을 자세히 살펴봅니다.

 

 

멀티미디어 존 (MMZ, MultiMedia Zone)

   멀티미디어 존은 줌 클러스터에서 제공하는 핵심 실시간 서비스입니다. 각 존에는 2 개의 존 컨트롤러가 있고, 존 컨트롤러는 멀티미디어 라우터 (MMR, Multi-Media Router)를 관리합니다. 멀티미디어 라우터는 미팅을 호스트하고 모든 미팅 콘텐츠를 참가자들에게 전달합니다. 

 

    호스트와 참가자가 서로 다른 리전에서 줌 미팅에 접속하는 과정은 다음과 같습니다. 우선 호스트가 미팅을 개최하는 플로우는 다음과 같습니다.  

  1. 리전 A의 호스트는 줌 미팅 클라이언트에서 미팅을 시작합니다.
    리전 A의 웹 서비스는 호스트의 미팅 시작 요청을 받습니다. 

  2. 웹 서비스는 호스트 라이센스, 사용자 권한 그리고 미팅 설정 정보를 확인합니다.
    웹 서비스는 미팅 토큰과 줌 클라이언트의 IP 주소에 기반하여 가장 가까운 멀티미디어 존의 리스트를 줌 클라이언트로 전달합니다.
    줌 클라이언트는 멀티미디어 존의 존 컨트롤러 리스트로 핑을 쳐서 가장 가까운 존 컨트롤러를 선택합니다.
    줌 클라이언트는 리전 A의 존 컨트롤러 A로 미팅 시작을 요청합니다.

  3. 존 컨트롤러 A는 자신이 관리하는 멀티미디어 라우터 중에서 부하가 가장 적은 멀티미디어 라우터를 선택합니다.
    존 컨트롤러 A는 줌 클라이언트에 멀티미디어 라우터의 주소를 전달합니다. 
    줌 클라이언트는 미팅 토크으로 멀티미디어 라우터와 직접 통신하고, 미팅이 시작되는 멀티미디어 라우터를 Top MMR라고 합니다.
    이 미팅 정보는 줌 클러스터의 클라우드 컨트롤러에 등록됩니다.

   참석자가 미팅에 참가하는 플로우는 다음과 같습니다. 

  1. 리전 B의 참가자가 줌 미팅 클라이언트에서 미팅에 참석합니다.
    리전 B의 웹 서비스는 참가자의 미팅 참석 요청을 받습니다.

  2. 웹 서비스는 참가자에게 권한을 부여합니다.
    줌 클라이언트의 IP 주소에 기반하여 가장 가까운 멀티미디어 존의 리스트를  줌 클라이언트로 전달합니다. 
    줌 클라이언트는 리전 B의 존 컨트롤러 B로 미팅 참석을 요청합니다.

  3. 존 컨트롤러 B는 자신이 관리하는 멀티미디어 라우터 중에서 부하가 가장 적은 멀티미디어 라우터를 선택합니다. 
    존 컨트롤러 B는 줌 클라이언트에 멀티미디어 라우터의 주소를 전달합니다. 
    줌 클라이언트는 멀티미디어 라우터와 직접 통신하고, 이미 열려진 미팅을 참석하는 멀티미디어 라우터를 Sub MMR라고 합니다.
    실시간 미팅 콘텐츠를 교환하기 위해 Sub MMR은 Top MMR과 직접 통신합니다.
    Sub MMR은 이 미팅의 Top MMR 정보를 확인하기 위해 클러스터 컨트롤러에게 문의합니다. 

   이 것이 줌 아키택처의 통신 과정입니다. 전세계에서 접속하는 대형 미팅은 참가자들을 최대 256개까지 확장합니다. MMR이 장애가 발생할 경우, 존 컨트롤러는 자동으로 새로운 MMR을 할당합니다. 전형적으로 하나의 존에 10,000개의 미팅을 지원할 수 있는 100개의 MMR이 있고, 미팅의 수가 증가할 경우 멀티미디어 존을 추가합니다. 

 

 

클라우드 녹화 존 (CRZ, Cloud Recorder Zone)

   클라우드 녹화 존은 미팅 콘텐츠를 녹화하고 줌 사용자들이 녹화 데이터를 활용할 수 있도록 돕습니다. 각 존에는 2 개의 존 컨트롤러가 있고, 존 컨트롤러는 미팅 레코더 에이전트 (MRA, Meeting Recorder Agent)와 미팅 녹화 업로더 (MRU, Meeting Recording Uploader)가 관리합니다 

   미팅 녹화 서비스 플로우는  다음과 같습니다. 

  1. 줌 클라이언트는 멀티미디어 존의 MMR에 연결하여 미팅중입니다.
    호스트는 줌 클라이언트에서 녹화 버튼을 클릭합니다.  
    MMR은 녹화 시작 요청을 수신합니다.

  2. MMR은 녹화 시작 요청을  멀티미디어 존의 존 컨트롤러로 전달합니다.
    존 컨트롤러는 클라우드 녹화 존의 존 컨트롤러로 다시 전달합니다. (사전에 MMZ 마다 CRZ를 사전 설정)
    클라우드 녹화 존의 존 컨트롤러는 관리하는 미팅 레코더 에이전트 (MRA) 서버들 중에 가용한 MRA를 선택합니다.  

  3. MMR은 MRA를 미팅에 초대합니다. (MRA는 일반 줌 클라이언트처럼 미팅에 참석)
    MRA는 모든 미팅 콘텐츠를 녹화합니다. 

  4. 미팅이 끝날 때 녹화 파일은 미팅 녹화 업로더는 NFS 스토리지 (Network File system)로 녹화 파일을 업로드합니다. 
  5. 미팅 녹화 번역기(MRT, Meeting Recording Translator) 는 녹화 파일을 다운로드한 후 MP4 포맷으로 변경합니다. 

  6. MRT는 미팅 관련 음성 파일(.m4a),영상 파일(.mp4), 채팅 파일(.txt)를 S3 서버에 업로드합니다. 

  7. 옵션으로 회의록 작성 서비스를 이용한다면, AiSense 서버는  회의록(.vtt) 파일을 작성합니다. 

  8. MRT는 녹화 완료 상태를 웹 서비스로 전달합니다. 
    사용자들은 mp4 녹화 파일에 접근할 수 있는 URL을 이메일로 받습니다. 
    사용자가 URL을 클릭하면 미디어 플레이어에서 녹화를 재생합니다. 

 

라이브 스트림 존 (LSZ, Live Stream Zone)

   라이브 스트림 존은 미팅 콘텐츠를 유튜브, 페이스북 등으로 스트리밍합니다. 각 존에는 2 개의 존 컨트롤러가 있고, 존 컨트롤러는 라이브 스트리밍 게이트웨이(LSGW, Live Streaming Gateway)를 관리합니다 

 

라이브 스트리밍 플로우는 클라우드 미팅 레코딩 플로우와 비스하고, 다음과 같습니다. 

  1. 호스트는 줌 클라이언트에서 라이브 스트림 버튼을 클릭합니다.  
    줌 클라이언트는 웹 서비스로 라이브 스트림 요청을 전달합니다. 

  2. 웹 서비스는 유트브/페이스북 API를 호출하여 RTMP/RTMPS URL/ Session Key 등의 라이브 스트림 파라미터를 획득합니다.

  3. 웹 서비스는 라이브 스트림 파라미터를 포함한 메시지를 존 컨트롤러로 전달합니다.

  4. 멀티미디어 존의 존 컨트롤러는 라이브 스트림 존의 존 컨트롤러에게 통지합니다.
    라이브 스트림 존의 존 컨트롤러는 가용한 라이브 스트림 게이트웨이를 선택합니다. 
    멀티미디어 라우터는 라이브 스트림 게이트웨이를 미팅에 참석시키기 위해 초대합니다.

  5. 라이브 스트림 게이트웨이는 일반 클라이언트처럼 미팅에 참석합니다.

  6. 라이브 스트림 게이트웨이는 미디어를 flv포맷 스트림 데이타로 변환하고 유트브와 페이스북에 전달합니다.
    사용자는 미디어 플레이로 라이브 스트림되는 컨텐츠를 시청합니다.

전화 회의 존 (TCZ, Telephone Conference Zone )

     전화 게이트웨이 존은 전화로 미팅에 참석할 수 있게 합니다. 각 존에는 2 개의 전화 컨트롤러(TC, TCZ Controller)가 있고, TCZ 컨트롤러는 전화 게이트웨이 (TG, Telephony Gateway)를 관리합니다 

전화 회의 플로우는 다음과 같습니다. 

 

  1. 사용자는 미팅 전화 번호를 다이얼링합니다. 
    전화는 PSTN을 통해 SBC와 연결합니다.
    SBC(세션 보더 컨트롤러, Session Boarder Controller)는 음성을 IP 로 네트워크에 맞게 패킷화합니다. 

  2. SBC는 TCZ 컨트롤러로 호를 전달합니다. 
    TCZ 컨틀롤러는  전화 게이트웨이를 선택합니다. 

  3. 전화 게이트웨이는 MMR 에 연결하여 미팅에 참석합니다. 

  4. 여러 전화기에서 오는 음성 데이타는 MMR에 전달되기 전에 Media Server에서 다중화합니다. 
    MMR에서 오는 음성도 Media Server를 통해 SBC로 전달합니다.

회의실 커넥터(CRC, Conference Room Connector)

   회의실 게이트웨이 존은 H.323 및 SIP 클라이언트로 미팅에 참석할 수 있게 합니다. 각 존에는 2 개의 로드밸런서 (Load Balancer)와 여러 Room Gateway가 있습니다.

 

   회의실 커넥터를 통한 호 플로우는 전화 회의와 비슷합니다. 

  1. 사용자는 IP 주소 또는 URI 주소를 다이얼링합니다.  
    H.323 / SIP 클라이언트는 로드밸런서와 연결합니다.  

  2. 로드 밸런서는 Room Gateway를 선택합니다.  

  3. Room Gateway는 미팅에 참석하여 H.323 / SIP 클라이언트를 연결합니다.


링크 커넥터 (Lync Connector)

   링크 커넥터는 스카이프 (Skype) 클라이언트로 미팅에 참석할 수 있게 합니다. 각 존에는 링크 커넥터와 링크 게이트웨이가 있습니다.

 

   링크 커넥터를 통한 호 플로우는 회의실 커넥터와 비슷합니다. 

  1. 사용자는 URL을 클릭합니다.  
    스카이프 클라이언트는 링크 컨트롤러와 연결합니다.  

  2. 링크 컨트롤러는 링크 게이트웨이를 선택합니다.   

  3. 링크 게이트웨이는 미팅에 참석하여 스카이프 클라이언트를 연결합니다.

 

RTPWeb 

   RTPWebe 존은 웹 브라우저가 미팅에 참석할 수 있게 합니다. 각 존에는 RTPWeb 컨트롤러와 RTPWeb 게이트웨이가 있습니다.

사용자는 별도의 앱을 설치할 필요가 없고, 미팅 URL을 클릭합니다. 

 

 RTPWeb를 통한 호 플로우는 회의실 커넥터와 비슷합니다.

  1. 사용자는 미팅 URL을 클릭합니다.  
    웹브라우저는 RTPWeb 컨트롤러와 연결합니다.  

  2. RTPWeb 컨트롤러는 RTPWeb 게이트웨이를 선택합니다.   

  3. RTPWeb 게이트웨이는 미팅에 참석하여 스카이프 클라이언트를 연결합니다.