KR102081364B1 - 클라우드 기반 가변형 분산 렌더링 시스템 및 방법 - Google Patents

클라우드 기반 가변형 분산 렌더링 시스템 및 방법 Download PDF

Info

Publication number
KR102081364B1
KR102081364B1 KR1020200004400A KR20200004400A KR102081364B1 KR 102081364 B1 KR102081364 B1 KR 102081364B1 KR 1020200004400 A KR1020200004400 A KR 1020200004400A KR 20200004400 A KR20200004400 A KR 20200004400A KR 102081364 B1 KR102081364 B1 KR 102081364B1
Authority
KR
South Korea
Prior art keywords
rendering
cloud
group
image
project
Prior art date
Application number
KR1020200004400A
Other languages
English (en)
Inventor
전동혁
Original Assignee
(주)비디오몬스터
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)비디오몬스터 filed Critical (주)비디오몬스터
Application granted granted Critical
Publication of KR102081364B1 publication Critical patent/KR102081364B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명은 분산 렌더링 시스템을 개시한다. 보다 상세하게는, 본 발명은 다수의 템플릿을 이용하여 영상 콘텐츠를 생성하는 클라우드 환경을 제공하되, 부하를 낮추기 위해 복수의 노드에서 분산 렌더링을 수행하는 클라우드 기반 가변형 분산 렌더링 시스템에 관한 것이다.
본 발명의 실시예에 따르면, 클라우드 기반으로 템플릿 기반 영상 소스를 그룹 단위로 렌더링하여 영상 콘텐츠를 생성할 수 있고, 특히 현재 작업상황에 따라 각 렌더링 그룹에 속하는 렌더링 유닛의 개수를 가변함으로써 렌더링 속도 및 능률을 향상시킬 수 있는 효과가 있다.

Description

클라우드 기반 가변형 분산 렌더링 시스템 및 방법{VARIABLE DISTRIBUTED RENDERING SYSTEM FOR EDITING VIDEO BASED ON CLOUD AND METHOD THEREOF}
본 발명은 분산 렌더링 시스템에 관한 것으로, 특히 다수의 템플릿을 이용하여 영상 콘텐츠를 생성하는 클라우드 환경을 제공하되, 부하를 낮추기 위해 복수의 노드에서 분산 렌더링을 수행하는 클라우드 기반 가변형 분산 렌더링 시스템에 관한 것이다.
최근, 콘텐츠 제작 기술의 발전에 따라 개인이 다양한 멀티미디어 콘텐츠를 제작 및 공유하고 이에 기반한 새로운 방송 서비스 등을 할 수 있는 다양한 종류의 플랫폼 들이 서비스되고 있다.
그러나, 이러한 종래의 멀티미디어 콘텐츠 제작 어플리케이션들은 단순히 사진들을 이용한 뮤직비디오의 제작이나, 간단한 동영상을 편집하는 수준의 영상물 제작에 그치고 있어, 보다 편리하고 활용가치가 높은 개인 멀티미디어 콘텐츠 제작을 원하는 사용자들을 만족시키지 못하고 있다.
특히, 멀티미디어 콘텐츠 제작 서비스는 웹(Web)을 기반으로 하여 영상소스를 편집할 수 있는 다양한 온라인 영상 제작 솔루션을 제공하고 있으나, 기존의 웹 기반 동영상 제작 솔루션들은 영상의 재생순서 변경 및 영상 내 텍스트 삽입 등의 단순 편집기능 만을 제공하며, 그 결과물은 슬라이드쇼 수준정도에 이르지 못하는 한계가 있었다.
또한, 기존의 웹 기반 동영상 제작 솔루션 서비스 업체들은 자체 서버 및 프로그램을 운영함에 따라, 대용량의 영상소스를 업로드, 편집 및 저장하는 프로세스를 수행하기 위해, 고성능 프로세서 및 대용량 저장소를 갖는 시스템을 구비해야 하며, 이에 시스템 운영비용이 상승하여 결국 사용자들의 서비스 비용이 상승하게 되는 단점이 있으며, 사용자가 증가할 경우 작업부하가 기하급수적으로 증가하여 작업시간이 지연됨에 따라 서비스 품질이 낮아지는 한계가 있다.
공개특허공보 제10-2016-0089742호(공개일자: 2016.07.28.)
본 발명은 렌더링 서버 및 렌더링 컴퓨터를 가상머신으로 구현하여 그룹 단위로 템플릿 기반 영상 소스를 렌더링하여 영상 콘텐츠를 생성함으로써, 복수의 노드로 작업을 분산 처리하여 렌더링 속도를 향상시키는 동시에, 유후 노드를 현재 렌더링 그룹에 포함시켜 노드 구성을 능동적으로 가변함으로써 효율을 극대화하는 분산 렌더링 시스템을 제공하는 데 과제가 있다.
전술한 과제를 해결하기 위해, 본 발명의 바람직한 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템은, 하나 이상의 사용자 단말로부터 복수개로 분할된 영상블록으로 이루어진 콘텐츠 소스에 대한 렌더링 작업을 요청받고, 상기 렌더링 작업에 대한 프로젝트를 생성하는 WAS, 하나의 콘텐츠 소스를 렌더링하는 하나 이상의 렌더링 노드를 포함하는 렌더링 그룹, 상기 프로젝트의 진행에 따라, 요청된 렌더링 작업을 대기열에 등록하고, 상기 렌더링 그룹을 생성하여 렌더링 작업을 할당하고, 렌더링 데이터를 반환받아 영상 콘텐츠를 생성하고 상기 WAS에 제공하는 렌더링 서버를 포함할 수 있고, 상기 렌더링 서버는, 상기 영상블록의 개수에 대응하여, 스케일링을 통해 하나의 렌더링 그룹에 참여하는 렌더링 노드의 개수를 결정할 수 있다.
상기 영상블록은, 원 영상 및 메타정보와, 상기 원 영상에 사용자에 의해 삽입된 텍스트, 이미지 및 템플릿 중, 하나 이상을 포함할 수 있다.
상기 렌더링 그룹은 작업 수행 여부에 따라 활성상태 또는 유휴상태로 구분되고, 상기 렌더링 서버는, 우선순위에 따라 유휴상태의 렌더링 그룹에 대기중인 렌더링 작업을 할당하고, 활성상태의 렌더링 그룹의 작업이 완료됨에 따라 유후상태로 전환되는 렌더링 그룹에 순차적으로 렌더링 작업을 할당할 수 있다.
상기 렌더링 서버 및 렌더링 그룹은, 가상머신으로 구현되고, 클라우드 시스템의 클라우드 자원이 할당된 인스턴스일 수 있다.
상기 WAS는, 정보통신망을 통해 접속한 회원의 사용자 단말을 로그인 처리하고, 렌더링 작업의 요청 및 요청에 따른 콘텐츠 소스를 전송받는 웹 페이지를 제공하는 웹 페이지 제공부, 렌더링 작업 요청에 따라 프로젝트를 생성하고, 상기 렌더링 서버로부터 제작된 영상 콘텐츠의 수신시까지 프로젝트를 진행하는 프로젝트 관리부, 생성된 프로젝트의 진행에 따라, 상기 콘텐츠 소스를 상기 렌더링 서버에 전송하는 클라우드 접속부 및 상기 콘텐츠 소스 또는 제작된 영상 콘텐츠를 각 프로젝트별로 저장하는 콘텐츠 스토리지를 포함할 수 있다.
상기 WAS는, 상기 사용자 단말에 대한 회원가입 절차 또는 로그인 절차를 수행하고, 회원 가입된 사용자 정보의 생성, 갱신 및 삭제를 포함하는 회원 관리절차를 수행하는 회원 관리부 및 회원 가입된 사용자 정보를 해당 사용자가 요청한 렌더링 작업의 프로젝트와 연관 설정하여 저장하는 회원 데이터 베이스를 포함할 수 있다.
상기 렌더링 서버는, 대기중인 렌더링 작업 목록을 로딩하고, 우선순위에 따라 대기중인 렌더링 작업이 존재하면 분할된 블록에 대응하여 필요한 렌더링 노드의 개수를 결정하고, 렌더링 작업의 대기건수가 기준을 초과하면 렌더링 그룹의 새로운 인스턴스의 생성을 통해 유휴상태의 렌더링 그룹을 추가로 확보하는 스케일링 부, 유휴상태의 렌더링 그룹에 할당된 대기중인 렌더링 작업에 대한 콘텐츠 소스의 영상블록을 렌더링 노드 별로 전달하는 렌더링 처리부 및 각 렌더링 노드에 의해 작업 완료됨에 따라, 분할된 렌더링 데이터를 반환받아 병합하여 하나의 영상 콘텐츠를 생성하는 영상 병합부를 포함할 수 있다.
상기 영상 병합부는, 상기 사용자 단말의 요청에 따라, 상기 영상블록을 메타정보에 정의된 결합 및 재생순서에 따라 순차적으로 재생하는 프리뷰 노드와 더 연결될 수 있다.
또한, 전술한 과제를 해결하기 위해 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템에 의한 렌더링 방법으로서, (a) 하나 이상의 사용자 단말로부터 복수개로 분할된 영상블록으로 이루어진 콘텐츠 소스에 대한 렌더링 작업을 요청받고, 상기 렌더링 작업에 대한 프로젝트를 생성하는 단계, (b) 상기 영상블록의 개수에 대응하여, 스케일링을 통해 하나의 렌더링 그룹에 참여하는 렌더링 노드의 개수를 결정하는 단계, (c) 상기 프로젝트의 진행에 따라, 요청된 렌더링 작업을 대기열에 등록하고, 하나의 콘텐츠 소스를 렌더링하는 하나 이상의 렌더링 노드를 포함하는 렌더링 그룹을 생성하여 렌더링 작업을 할당하는 단계 및 (d) 상기 렌더링 그룹으로부터 렌더링 데이터를 반환받아 영상 콘텐츠를 생성 및 상기 사용자 단말에 제공하는 단계를 포함할 수 있다.
상기 영상블록은, 원 영상 및 메타정보와, 상기 원 영상에 사용자에 의해 삽입된 텍스트, 이미지 및 템플릿 중, 하나 이상을 포함할 수 있다.
상기 렌더링 그룹은 작업 수행 여부에 따라 활성상태 또는 유휴상태로 구분되고, 상기 (c) 단계는, (c1) 우선순위에 따라 유휴상태의 렌더링 그룹에 대기중인 렌더링 작업을 할당하고, 활성상태의 렌더링 그룹의 작업이 완료됨에 따라 유후상태로 전환되는 렌더링 그룹에 순차적으로 렌더링 작업을 할당하는 단계를 포함할 수 있다.
상기 렌더링 서버 및 렌더링 그룹은, 가상머신으로 구현되고, 클라우드 시스템의 클라우드 자원이 할당된 인스턴스일 수 있다.
상기 (c) 단계는, (c2) 대기중인 렌더링 작업 목록을 로딩하고, 우선순위에 따라 대기중인 렌더링 작업이 존재하면 분할된 블록에 대응하여 필요한 렌더링 노드의 개수를 결정하고, 렌더링 작업의 대기건수가 기준을 초과하면 렌더링 그룹의 새로운 인스턴스의 생성을 통해 유휴상태의 렌더링 그룹을 추가로 확보하는 단계, (c3) 유휴상태의 렌더링 그룹에 할당된 대기중인 렌더링 작업에 대한 콘텐츠 소스의 영상블록을 렌더링 노드 별로 전달하는 단계 및 (c4) 각 렌더링 노드에 의해 작업 완료됨에 따라, 분할된 렌더링 데이터를 반환받아 병합하여 하나의 영상 콘텐츠를 생성하는 단계를 더 포함할 수 있다.
상기 (a) 단계 이후, (a1) 상기 사용자 단말의 요청에 따라, 상기 영상블록을 메타정보에 정의된 결합 및 재생순서에 따라 순차적으로 재생하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따르면, 클라우드 기반으로 템플릿을 이용한 영상 소스를 그룹 단위로 렌더링하여 영상 콘텐츠를 생성할 수 있고, 특히 현재 작업상황에 따라 각 렌더링 그룹에 속하는 렌더링 노드의 개수를 가변함으로써 렌더링 속도 및 능률을 향상시킬 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 전체 구조를 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 WAS의 구조를 나타낸 도면이다.
도 3은 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 렌더링 서버의 구조를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 방법을 나타낸 도면이다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "구비" 또는 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부(Unit)", "...서버(Server)" 및 "...시스템(System)" 등의 용어는 하나 또는 그 이상의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어, 소프트웨어 또는, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
또한 본 명세서에서 "실시예"라는 용어는 예시, 사례 또는 도해의 역할을 하는 것을 의미하나, 발명의 대상은 그러한 예에 의해 제한되지 않는다. 또한 "포함하는", "구비하는", "갖는" 및 다른 유사한 용어가 사용되고 있으나, 청구범위에서 사용되는 경우 임의의 추가적인 또는 다른 구성요소를 배제하지 않는 개방적인 전환어(Transition Word)로서 "포함하는(Comprising)"이라는 용어와 유사한 방식으로 포괄적으로 사용될 수 있다.
본 명세서에 설명된 다양한 기법은 하드웨어 또는 소프트웨어와 함께 구현되거나, 적합한 경우에 이들 모두의 조합과 함께 구현될 수 있다. 본 명세서에 사용된 바와 같은 "...부(Unit)", "...서버(Server)" 및 "...시스템(System)" 등의 용어는 마찬가지로 컴퓨터 관련 엔티티(Entity), 즉 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어 또는 실행 시의 소프트웨어와 등가로 취급할 수 있다. 또한, 본 발명의 프로그램에서 실행되는 각 기능은 모듈단위로 구성될 수 있고, 하나의 물리적 메모리에 기록되거나, 둘 이상의 메모리 및 기록매체 사이에 분산되어 기록될 수 있다.
이하의 설명에서, "클라우드 기반 가변형 분산 렌더링 시스템"의 용어는 설명의 편의상 "분산 렌더링 시스템" 또는 "시스템"으로 약식 표기될 수 있다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템 및 방법을 설명한다.
도 1은 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 전체 구조를 나타낸 도면이다.
도 1을 참조하면 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템(200)은, 하나 이상의 사용자 단말(100)로부터 복수개로 분할된 영상블록으로 이루어진 콘텐츠 소스에 대한 렌더링 작업을 요청받고, 렌더링 작업에 대한 프로젝트를 생성하는 WAS(300), 하나의 콘텐츠 소스를 렌더링하는 하나 이상의 렌더링 노드(600)를 포함하는 렌더링 그룹(500), 프로젝트의 진행에 따라, 요청된 렌더링 작업을 대기열에 등록하고, 렌더링 그룹(500)을 생성하여 렌더링 작업을 할당하고, 렌더링 데이터를 반환받아 영상 콘텐츠를 생성하고 WAS(300)에 제공하는 렌더링 서버(400)를 포함하고, 렌더링 서버(400)는 영상블록의 개수에 대응하여, 스케일링을 통해 하나의 렌더링 그룹(500)에 참여하는 렌더링 노드(600)의 개수를 결정할 수 있다.
전술한 사용자 단말(100)은 본 발명의 실시예에 따른 분산 렌더링 시스템(200)을 제공하는 저작 환경을 통해 소정의 영상 파일을 템플릿 기반으로 웹 상에서 편집을 수행하고 영상 콘텐츠를 생성하고자 하는 사용자들이 이용하는 단말장치이다.
사용자 단말(100)은 공지의 웹 브라우저(Web Browser)를 탑재할 수 있고, WAS(300)가 제공하는 웹 페이지를 통해 웹 기반의 편집툴 상에서 구현되는 영상 제작 환경을 제공할 수 있다. 사용자는 의도에 따라 템플릿을 선택하고, 텍스트 또는 이미지와 같은 데이터를 입력하여 광고 영상 등의 영상 콘텐츠를 제작할 수 있다. 영상 편집 과정이 완료되면, 사용자 단말(100)은 WAS(300)에 편집 완료된 콘텐츠 소스에 대한 렌더링을 요청할 수 있고, WAS(300)는 클라우드 기반 렌더링 서버(400)에 콘텐츠 소스에 대한 프로젝트를 생성하여 렌더링 서버(400)에 렌더링 프로세스를 요청할 수 있다.
이러한 사용자 단말(100)로는 PCS(Personal Communication System), GSM(Global System for Mobile communications), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet) 단말, 스마트폰(smartphone), 스마트 패드(smartpad), 타블렛 PC(Tablet PC) 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 모바일 단말 장치 또는 거치형PC, 노트북과 같은 컴퓨팅 장치가 이용될 수 있다.
본 발명의 분산 렌더링 시스템(200)은 크게 웹 어플리케이션 서버(WAS, 300), 렌더링 서버(400) 및 렌더링 노드(600)로 구분될 수 있다.
이러한 분산 렌더링 시스템(200)의 각 구성요소들은 상용화된 클라우드 플랫폼 상에서 구현될 수 있고, 이러한 클라우드 플랫폼으로는 MICROSOFT 사의 Azure이 이용될 수 있으며, 렌더링 작업을 위한 오토 스케일링(Auto Scaling) 기법이 적용될 수 있다. 여기서, 오토 스케일링 기법은 렌더링 대기자가 많을 경우 자동으로 렌더링 환경이 구축된 가상머신을 유동적으로 늘리고 대기자가 없을 때는 가상머신을 줄이는 것으로, 다수의 렌더링 요청에 대한 트래픽을 최소화할 수 있는 특징이 있다.
상세하게는, 웹 어플리케이션 서버(Web Application Server; WAS, 300)는 정보통신망을 통해 웹 기반의 영상 편집 툴을 공개하고 접속하는 다수의 사용자 단말(100)에 영상 편집 환경을 제공하는 것으로, 전술한 웹 페이지는 HTML5, CSS, JQuery 및 Javascript를 기반으로 구현될 수 있다.
또한, WAS(300)가 제공하는 웹 페이지는 크로스 브라우저(cross browser)를 지원할 수 있고, 신뢰성 있는 웹 서비스를 제공할 수 있다.
전술한 정보통신망으로는, LTE(long-term evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 등 중, 어느 하나가 이용될 수 있다.
특히, WAS(300)는 하나 이상의 사용자 단말(100)로부터 편집 완료된 콘텐츠 소스에 대한 렌더링 작업을 요청받고, 콘텐츠 소스에 대한 렌더링 작업에 대한 프로젝트를 생성하여 콘텐츠 소스를 렌더링 서버(400)에 제공할 수 있다. 이후, WAS(300)는 렌더링 서버(400)로부터 작업 완료에 따라 생성된 영상 콘텐츠를 회신받아 사용자 단말(100)에 전달할 수 있다.
이때, 편집 완료된 콘텐츠 소스는, 원 영상 및 메타정보와, 상기 원 영상상에 사용자에 의해 삽입된 텍스트, 이미지 및 템플릿 등을 포함할 수 있다. 본 발명의 실시예에 따른 WAS(300)가 제공하는 편집 툴에 의해 편집된 콘텐츠 소스는 각각 하나의 장면(scene)을 이루는 복수의 영상블록과, 각 영상블록에 중첩되어 표시되는 템플릿, 텍스트 또는 이미지와, 각 구성요소를 결합하는 규칙이 정의된 메타정보로 이루어질 수 있고, 이러한 복수의 영상블록은 후술하는 렌더링 노드(600) 각각을 통해 동영상의 형태로 렌더링됨과 아울러, 병합되어 하나의 영상 콘텐츠의 형태로 변환되게 된다.
또한, WAS(300)은 렌더링 작업의 완료 이전에, 사용자 단말(100)의 요청에 따라, 전술한 영상블록을 메타정보에 정의된 결합 및 재생순서에 따라 순차적으로 재생하는 프리뷰 기능을 더 제공할 수 있고, 이를 위한 프리뷰 노드를 포함할 수 있다.
렌더링 서버(400)는 WAS(300)의 요청에 따라 렌더링을 위한 콘텐츠 소스를 전달받고, 가상머신(Virtual Machine)으로 구현되는 실질적인 렌더링 수단 즉, 가상머신의 인스턴스인 복수의 렌더링 노드(600)에 렌더링 작업을 지시하되, 복수의 렌더링 그룹(500) 중 활성상태의 렌더링 그룹(500)에 할당할 수 있고, 렌더링 데이터를 반환받아 병합하여 영상 콘텐츠를 생성하고 WAS(300)에 제공할 수 있다.
이러한 렌더링 서버(400)는 WAS(300)로부터 의뢰되는 콘텐츠 소스에 대한 전반적인 렌더링 과정을 제어할 수 있다. 상세하게는, 본 발명의 렌더링 서버(400)는 클라우드 자원으로 구현된 하위 개념인 하나 이상의 렌더링 그룹(500)을 운영할 수 있고, 렌더링 그룹(500)을 제어하여 그에 의한 렌더링 작업의 효율성을 위한 오토 스케일링을 수행할 수 있다.
렌더링 그룹(500)은 실제 렌더링 작업을 수행하는 복수의 렌더링 노드(600)로 구성될 수 있고, 렌더링 서버(400)의 제어에 따라 복수의 렌더링 노드(600)상에서 렌더링 작업을 영상블록별로 분산 처리할 수 있다.
또한, 렌더링 그룹(500)은 복수개가 존재할 수 있고, 현재 렌더링 작업 중인 활성상태(alive)인 렌더링 그룹 및 작업이 가능한 아직 인스턴스화 되지 않아 클라우드 자원이 할당되지 않은 유휴상태(idle)인 렌더링 그룹으로 구분될 수 있으며, 유휴상태인 렌더링 그룹은 렌더링 서버(400)로부터 인스턴스화 되어 렌더링 작업을 할당받고 작업을 수행하게 된다.
또한, 모든 렌더링 그룹이 활성상태에서 렌더링 서버(400)의 대기열에 대기중인 렌더링 작업의 대기개수가 기준을 초과하면, 렌더링 서버(400)에 의해 오토 스케링일되어 새로운 렌더링 그룹의 인스턴스가 생성됨에 따라 대기중인 렌더링 작업을 할당받게 된다.
렌더링 노드(600)는 어느 하나의 렌더링 그룹(500)에 속하며, 해당 렌더링 그룹(500)에 할당된 렌더링 작업에 따른 콘텐츠 소스를 렌더링 처리할 수 있다. 이러한 렌더링 노드(600)는 각각 자신에게 할당된 렌더링 데이터를 소정의 이미지, 일례로서, 프레임별 'TIFF' 파일로 부분 렌더링을 수행하고, 각 파일별 인덱스를 생성하여 렌더링 서버(400)에 반환하게 된다.
이후, 렌더링 서버(400)는 반환된 복수의 렌더링 데이터를 병합하여 하나의 영상 콘텐츠를 생성하고, WAS(300)를 통해 사용자 단말(100)에 전송할 수 있다.
전술한 구조에 따라, 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 시스템은 클라우드 기반으로 다수의 사용자 단말이 웹 상에서 영상 콘텐츠를 손쉽게 편집 및 제작할 수 있는 온라인 영상 편집 환경을 제공함과 아울러, 클라우드 시스템에 구축되는 복수의 렌더링 수단에 대한 작업 스케일을 현재 상황에 적절하게 적응적으로 조절함으로써 협약에 따라 제한된 클라우드 자원의 낭비를 최소화하고, 최소 운영 비용으로 고품질의 웹 영상 편집 서비스를 제공할 수 있는 효과를 기대할 수 있다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 WAS를 상세히 설명한다.
도 2는 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 WAS의 구조를 나타낸 도면이다.
도 2를 참조하면, 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 WAS(300)는, 정보통신망을 통해 접속한 회원의 사용자 단말을 로그인 처리하고, 렌더링 작업의 요청 및 요청에 따른 콘텐츠 소스를 전송받는 웹 페이지를 제공하는 웹 페이지 제공부(310), 렌더링 작업 요청에 따라 프로젝트를 생성하고, 렌더링 서버(400)로부터 제작된 영상 콘텐츠의 수신시까지 프로젝트를 진행하는 프로젝트 관리부(320), 생성된 프로젝트의 진행에 따라, 클라우드망을 통해 상기 콘텐츠 소스를 상기 렌더링 서버에 전송하는 클라우드 접속부(330), 콘텐츠 소스 또는 제작된 영상 콘텐츠를 각 프로젝트별로 저장하는 콘텐츠 스토리지(340), 사용자 단말(100)에 대한 회원가입 절차 또는 로그인 절차를 수행하고, 회원 가입된 사용자 정보의 생성, 갱신 및 삭제를 포함하는 회원 관리절차를 수행하는 회원 관리부(350) 및 회원 가입된 사용자 정보를 해당 사용자가 요청한 렌더링 작업의 프로젝트와 연관 설정하여 저장하는 회원 데이터 베이스(360)를 포함할 수 있다.
웹 페이지 제공부(310)는 온라인 상에 본 발명의 서비스를 이용할 수 있는 웹 페이지를 게시하는 것으로, 이러한 웹 페이지는 Internet explorer, Chrome 등 공지의 상용화된 웹 브라우저에 최적화되어 있고, 사용자 단말(100)로부터 입력되는 영상 파일에 대한 GUI 편집 화면을 제공할 수 있다. 이러한 GUI 편집 화면은 HTML5 및 Javascript 등으로 구현될 수 있다.
프로젝트 관리부(320)는 사용자 단말(100)의 요청에 따라, 영상 렌더링에 대한 프로젝트를 생성하고, 렌더링 작업의 진행에 따른 절차를 관리할 수 있다. 프로젝트는 사용자 권한에 따라 그 개수가 결정되며 하나 이상 생성될 수 있고, 프로젝트 관리부(320)는 프로젝트를 생성하고 영상 파일를 전송받아 프로젝트에 반영하며, 프로젝트 상에서 작업이 완료된 콘텐츠 소스를 렌더링 서버(400)에 제공하여 렌더링 작업을 수행하게 된다.
클라우드 접속부(330)는 WAS(300)와 클라우드 시스템에 구현된 렌더링 서버(400)간 데이터 송수신을 구현할 수 있다. 클라우드 접속부(330)는 클라우드 자원의 할당에 따라 활성화된 렌더링 서버(400)와 통신을 수행하여 렌더링 작업을 요청하고 영상 콘텐츠를 반환받아 콘텐츠 스토리지(340)에 저장할 수 있다.
콘텐츠 스토리지(340)는 렌더링 서비스를 위한 각종 영상 관련 데이터가 저장될 수 있다. 이러한 콘텐츠 스토리지(340)는 작업 전 후, 영상 파일, 분할 데이터 및 작업 완료된 영상 콘텐츠 등이 저장됨에 따라 프로젝트 관리부(320) 및 렌더링 서버(400)와 데이터 전송에 유리한 SMB 프로토콜로 연결될 수 있고, 전달된 데이터를 콘텐츠 스토리지(340)에 저장될 수 있다.
또한, 본 발명의 WAS(300)는 웹 페이지를 매개로 하여 사용자 단말(100)과 연결됨에 따라, 웹 페이지를 이용한 사용자에 대한 관리가 요구되며, 이를 위한 구성부를 더 포함할 수 있다.
이에 관한 구성으로서, 회원 관리부(350)는 웹 페이지에 게시된 회원가입절차를 통해 사용자 단말(100)로부터 입력된 계정 및 패스워드와 기타 회원정보를 입력받아 계정을 부여하고 정보를 회원 데이터 베이스(360)에 저장하고, 이후, 사용자 단말(100)의 접속 시도시 계정 및 패스워드를 통해 본인 인증을 수행하고, 이용내역 등을 관리할 수 있다.
또한, 회원 관리부(350)는 계정관리 기능으로서, 회원 가입된 사용자 정보의 생성, 갱신 및 삭제 등의 기능을 제공할 수 있다.
회원 데이터 베이스(360)는 회원과 관련된 각종 회원정보를 저장할 수 있다. 이러한 회원 데이터 베이스(360)에 저장되는 회원정보에는 이름, 연락처와 같은 개인적인 정보 이외에도, 서비스 이용 권한과 현재까지 생성, 완료한 프로젝트 내역, 이용현황 등이 연관 설정되어 저장될 수 있다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 렌더링 서버를 상세히 설명한다.
도 3은 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 렌더링 서버의 구조를 나타낸 도면이다.
도 3을 참조하면, 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템의 렌더링 서버(400)는, 대기중인 렌더링 작업 목록을 로딩하고, 우선순위에 따라 대기중인 렌더링 작업이 존재하면 분할된 블록에 대응하여 필요한 렌더링 노드의 개수를 결정하고, 렌더링 작업의 대기건수가 기준을 초과하면 렌더링 그룹의 새로운 인스턴스의 생성을 통해 유휴상태의 렌더링 그룹을 추가로 확보하는 스케일링 부(410), 유휴상태의 렌더링 그룹에 할당된 대기중인 렌더링 작업에 대한 콘텐츠 소스의 영상블록을 렌더링 노드 별로 전달하는 렌더링 처리부(420), 각 렌더링 노드에 의해 작업 완료됨에 따라, 분할된 렌더링 데이터를 반환받아 병합하여 하나의 영상 콘텐츠를 생성하는 영상 병합부(430)를 포함할 수 있다. 특히, 영상 병합부(430)는 사용자 단말(100)의 요청에 따라, 영상블록을 상기 메타정보에 정의된 결합 및 재생순서에 따라 순차적으로 재생하는 프리뷰 노드(700)와 더 연결될 수 있다.
스케일링 부(410)는 WAS 로부터 대기중인 렌더링 작업 목록을 로딩하여 현재 대기중인 렌더링 작업의 존재 및 개수를 확인할 수 있고, 우선순위에 따라 렌더링 작업이 존재하면 영상블록에 대응하여 필요한 렌더링 노드(600)의 개수를 결정하고, 유휴상태의 렌더링 그룹(500)에 렌더링 작업을 할당할 수 있다. 여기서, 우선순위는 큐 대기열에 등록된 순서일 수 있다.
일례로서, 활성상태의 제1 렌더링 그룹(510)과 유휴상태의 제2 렌더링 그룹(520)만이 존재한다고 가정하면, 렌더링 서버(400)는 제2 렌더링 그룹(520)에 다음 순서의 렌더링 작업을 할당하게 된다.
또한, 모든 렌더링 그룹(510, 520)이 활성상태이면 대기열의 렌더링 작업을 대기상태를 유지하고, 제1 렌더링 그룹(510)에 의한 작업이 종료된 후 유휴상태로 전환되면 제1 렌더링 그룹(510)에 다음 순서의 렌더링 작업을 할당하게 된다.
또한, 모든 렌더링 그룹(510, 520)이 활성상태에서 대기열의 렌더링 작업을 대기상태가 기준시간을 초과하면, 렌더링 그룹의 새로운 인스턴스의 생성을 통해 유휴상태의 제3 렌더링 그룹(530)을 추가로 확보하고, 다음 순서의 렌더링 작업을 할당하게 된다.
또한, 대기열에 대기중인 렌더링 작업이 존재하지 않거나, 활성상태의 렌더링 그룹이 존재하지 않고 유후상태의 렌더링 그룹(500)이 필요 이상으로 많이 존재하는 경우 일정 시간이 경과되면 유후상태의 렌더링 그룹(500)을 해제하여 클라우드 시스템에 클라우드 자원을 반환할 수 있다.
전술한 렌더링 노드의 개수 결정 및 렌더링 그룹의 추가 또는 삭제 기능은, 오토 스케일링 기능으로서, 렌더링 대기건이 다수일 경우 자동으로 렌더링 환경이 렌더링 그룹(500)을 유동적으로 늘리고 대기건이 일정시간 존재하지 않을 때에는 렌더링 그룹(500)의 개수를 줄임으로써 다수의 렌더링 요청에 대한 트래픽을 최소화하는 동시에 클라우드 자원의 유휴 선점을 최소화하기 위함이다.
이하의 표 1은, 본 발명의 실시예에 따른 분산 렌더링 시스템의 오토 스케일링 증, 감축과 관련된 소스코드의 일부를 예시하고 있다.
코드 1-1
// 렌더러 목록 가져오기
const renderer = socketmodule .GetRenderer ()
const groupIndexes = Object .keys (renderer )
const aliveGroupArr = [] // 살아있는 렌더러 그룹
const idleGroupArr = [] // 쉬고있는 렌더러 그룹
groupIndexes .forEach (groupIndex => {
// 현재 내려가고 있는 그룹이 아닐 경우, 살아있는 렌더러 그룹 목록에 push
if (renderer [groupIndex ].isWillShutdown == false ) aliveGroupArr .push (groupIndex )

//코드 1-2
...
// isWillShutdown 플래그를 설정하여 VM이 내려가는 동안 렌더링 요청을 받지 않도록 설정
renderer [groupIndex ].isWillShutdown = true
...
...

코드 1-3
// 오토스케일링 그룹 확장
let increaseFlag = false
async function Increase (threshold , minGroupCount , maxGroupCount , vmCountPerGroup ) {
if (isWorking ) return
isWorking = true
console .log (`[${new Date ().toISOString ()}] Increase Start!`)
...
예시된 코드에 의하면, 상기의 코드 1-1에서, 활성상태 및 유휴상태의 렌더링 그룹은 각각 "const aliveGroupArr = []" 및 "const idleGroupArr = []"의 구조체로 선언될 수 있고, 복수의 렌더링 로드를 포함할 수 있다.
코드 1-2에서, 가상머신(VM) 인스턴스는 "isWillShutdown" 플래그를 지정하여 렌더링 작업의 할당 가능 여부가 식별될 수 있다.
코드 1-3에서, 임계값(threshold)과, 최소그룹갯수(minGroupCount) 및 최대그룹갯수(maxGroupCount)의 변수를 통해 오토 스케일링에 따른 그룹의 확장 또는 감소를 설정할 수 있다.
렌더링 처리부(420)는 오토 스케일링이 완료되고, 렌더링 그룹(500) 유휴상태의 렌더링 그룹(500)에 대기중인 렌더링 작업에 대한 콘텐츠 소스의 영상블록을 렌더링 노드(600) 별로 전달할 수 있고, 작업이 완료된 렌더링 데이터를 반환 받을 수 있다.
이하의 표 2는, 본 발명의 실시예에 따른 분산 렌더링 시스템의 렌더링 요청과 관련된 소스코드의 일부를 예시하고 있다.
// 코드 2-1
exports .rendering = async function (type , cb ){
var ae_log = ""; // 로그
var script ;
try {
while (isScriptRunning ) {
//console.log(`[System] 앞 스크립트 종료 대기중..`)
await sleep (1000 )
}
isScriptRunning = true
let localPath = `${Save_path }/${TemplateId }`
await MkdirAsync (localPath )

// 코드 2-2
switch (type ){
case "template":
{
script = io .FileInfo .readAllText (ScriptRoot_path + '/makeTemplate.jsx');
script = script .replace ("${ProjectPath}", Template_path );
script = script .replace ("${Json2Path}", ScriptRoot_path + '/json2.js');
script = script .replace ("${SavePath}", localPath )// Save_path);
script = script .replace ("${TemplateRoot}",TemplateRoot_path );
script = script .replace ("${TemplateId}", TemplateId );
}
break ;
case "confirm":
{
script = io .FileInfo .readAllText (ScriptRoot_path + '/renderSample.jsx');
script = script .replace ("${Json2Path}", ScriptRoot_path + '/json2.js');
script = script .replace ("${ResultPath}", localPath )//Save_path);
script = script .replace ("${ProjectPath}", Template_path );
}
break ;
case "video":
{
script = io .FileInfo .readAllText (ScriptRoot_path + '/materialParse.js');
script = script .replace ("${ProjectPath}", Template_path );
script = script .replace ("${Json2Path}", ScriptRoot_path + '/json2.js');
script = script .replace ("${Material}", Material_Json );
script = script .replace ("${ReplaceSourcePath}", ReplaceSourcePath );
script = script .replace ("${ResultPath}", localPath )//Save_path);
script = script .replace ("${gettyImagesPath}", gettyImagesPath )
}
break ;
case "preview":
{
script = io .FileInfo .readAllText (ScriptRoot_path + '/createPreviewImage.jsx');
script = script .replace ("${ProjectPath}", Template_path );
script = script .replace ("${Json2Path}", ScriptRoot_path + '/json2.js');
script = script .replace ("${Material}", Material_Json );
script = script .replace ("${ReplaceSourcePath}", ReplaceSourcePath );
script = script .replace ("${ResultPath}", localPath )//Save_path);
script = script .replace ("${gettyImagesPath}", gettyImagesPath )
}
break ;
}
예시된 코드에 의하면, 상기의 코드 2-1에서, Javascript는 렌더링 요청을 대기열에 등록하여 순차적으로 렌더링 요청을 처리하게 된다.
코드 2-2에서, 렌더링 요청된 콘텐츠 소스는 'Json' 형식으로 전달되며, 콘텐츠 소스에 포함된 "템플릿(template)", 사용자 요청에 따른 작업 완료에 대한 "확인(confirm)" 및 "영상(video)"에 따라 각각 해당하는 데이터를 읽어 드리게 된다. 또한, 사용자 요청 중, "프리뷰(preview)" 기능 또한 렌더링 처리 절차에 포함될 수 있고 필요한 데이터를 읽어드려 그 결과를 사용자 단말에 제공할 수 있다.
영상 병합부(430)는 각 렌더링 노드에 의해 작업 완료되면, 완료된 결과물 즉, 렌더링 데이터를 반환받아 병합절차를 거쳐 하나의 영상 콘텐츠를 생성할 수 있다. 렌더링 작업은 복수의 렌더링 노드에 의해 분산 렌더링 처리됨에 따라, 영상 병합부(430)에 반환되는 렌더링 데이터는 영상의 장면(scene)별로 분할되어 있다. 이에 영상 병합부(430)는 각 렌더링 데이터를 병합하여 하나의 영상 콘텐츠를 생성하는 절차를 수행하게 되며, 이는 해당 콘텐츠 소스에 포함된 메타정보에 정의된 결합 및 재생순서를 참조할 수 있다.
이하의 표 3은, 본 발명의 실시예에 따른 분산 렌더링 시스템의 렌더링 작업과 관련된 소스코드의 일부를 예시하고 있다.
//코드 3-1
exports .VideoRender = (rendererIndex , aepPath , startFrame , endFrame , hashTagString ) => {
return new Promise (async (resolve , reject ) => {
try {
const frameDuration = {}
let nowTime = Date .now ()
console .log (`Video Render Start!`)
// 시작 전에 반드시 localPath 청소
if (await AccessAsync (localPath )) {
if (await AccessAsync (`${localPath }/${rendererIndex }`)) {
let files = await ReadDirAsync (`${localPath }/${rendererIndex }`)
for (let i = 0 ; i < files .length ; i ++) {
// 기존 파일들 모두 삭제
await UnlinkAsync (`${localPath }/${rendererIndex }/${files [i ]}`)
}
}
// 기존에 생성된 폴더가 없을 경우 생성
else
await MkdirAsync (`${localPath }/${rendererIndex }`)
}
...
// 코드 3-2
// startFrame ~ endFrame까지 부분 렌더링 (TIFF로 뽑아낸다.)
const spawn = require (`child_process`).spawn ,
ls = spawn (`cmd`, [`/c`, `aerender`, `-project`, `"${aepPath }"`, `-comp`, `"#Target"`, `-s`, `${startFrame }`, `-e`, `${endFrame }`, `-RStemplate`, `"Best Settings"`, `-OMtemplate`, `"TIFF Sequence with Alpha"`, `-output`, `"${localPath }/${rendererIndex }/frames[${hashTagString }].tif"`, `-continueOnMissingFootage`], { cwd: aerenderPath })
...
예시된 코드에 의하면, 상기의 코드 3-1에서, 각 콘텐츠 노드는 렌더링 작업을 수행함에 따라, 이전 작업이 지정된 localPath를 리셋하고, 남아 있는 기존 파일을 삭제하는 수행하며, 프로세스를 위한 폴더가 존재하지 않는 경우, 새로 작성하게 된다.
코드 3-2에서, 영상블록에 대한 각 프레임은 "TIFF"로 저장될 수 있고, 추후 ffmpge를 통해 "mp4" 코덱의 영상으로 렌더링 된다.
이하의 표 4는, 본 발명의 실시예에 따른 분산 렌더링 시스템의 렌더링 데이터의 병합과 소스코드의 일부를 예시하고 있다.
// 코드 4-1
exports .Merge = (rendererCount , videoPath ) => {
return new Promise (async (resolve , reject ) => {
try {
console .log (`Merge Start!`)
// merge 정보 txt 파일을 생성해준다.
let fileBody = ``
for (let i = 0 ; i < rendererCount ; i ++) {
fileBody += `file out ${i }.mp4 \n `
}
await WriteFileAsync (`${videoPath }/file.txt`, fileBody )
// merge를 수행한다.
const spawn = require (`child_process`).spawn ,
ls = spawn (`cmd`, [`/c`, `ffmpeg`, `-f`, `concat`, `-safe`, `0`, `-i`, `${videoPath }/file.txt`, `-c`, `copy`, `${videoPath }/merge.mp4`, `-y`], { cwd: ffmpegPath })
ls .stdout .on ('data', function (data ) {
console .log ('stdout: ' + data )
})
ls .stderr .on ('data', function (data ) {
console .log ('stderr: ' + data )
})
ls .on ('exit', async function (code ) {
console .log ('child process exited with code ' + code )
...
// 코드 4-2
...
// 출력된 mp4 파일이 존재하지 않으면 실패
if (!(await AccessAsync (`${videoPath }/merge.mp4`))) {
return reject (`ERR_MERGE_FILE_NOT_EXIST (렌더링 실패)`)
}
else {
return resolve ()
...
예시된 코드에 의하면, 상기의 코드 4-1에서 영상 병합부(430)는, 병합(Merge)을 위한 렌더링 데이터 개수 및 파일경로가 "Merge = (rendererCount, videoPath)"가 전달되면 TxT 파일을 생성하고 "child_process"를 통해 병합을 수행하게 된다. 병합되는 파일은 "video path"에 저장되며, 각 렌더링 데이터의 순번은 "rendererCount"에 의해 결정된다.
코드 4-2에서, 병합 절차가 완료된 영상 콘텐츠는 "videoPath" 폴더의 "merge.mp4"로 저장되며, 파일이 존재하지 않으면 렌더링 절차가 실패한 것으로서, 렌더링 실패 에러 메시지를 출력하고, 이후 재시도 또는 절차종료를 수행하게 된다.
또한, 영상 병합부(430)와는 별도로, 사용자는 렌더링 작업이 완료되지 않는 작업 건에 대하여 미리 제작될 영상 콘텐츠의 결과를 미리 확인하는 기능을 이용할 수 있으며, 이를 위한 구성으로서, 영상 병합부(430)는 사용자 단말(100)의 요청에 따라, 영상블록을 상기 메타정보에 정의된 결합 및 재생순서에 따라 순차적으로 재생하는 프리뷰 노드(700)와 더 연결될 수 있다.
단, 프리뷰 노드(700)에 의해 제공되는 재생화면은, 동영상 포맷이 아닌, 다수의 TIFF 포맷의 이미지가 고속 재생되는 형태로서 실제 영상 콘텐츠의 재생속도 및 화질과 비교하여 볼 때 상당시 낮은 수준으로 단지 제작결과를 개략적으로 확인하는 용도로만 활용되게 된다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 시스템에 의한 렌더링 방법을 상세히 설명한다.
도 4는 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 방법을 나타낸 도면이다.
도 4를 참조하면, 본 발명의 실시예에 따른 클라우드 기반 가변형 분산 렌더링 방법은, (a) 하나 이상의 사용자 단말로부터 복수개로 분할된 영상블록으로 이루어진 콘텐츠 소스에 대한 렌더링 작업을 요청받고, 렌더링 작업에 대한 프로젝트를 생성하는 단계, (b) 상기 영상블록의 개수에 대응하여, 스케일링을 통해 하나의 렌더링 그룹에 참여하는 렌더링 노드의 개수를 결정하는 단계, (c) 상기 프로젝트의 진행에 따라, 요청된 렌더링 작업을 대기열에 등록하고, 하나의 콘텐츠 소스를 렌더링하는 하나 이상의 렌더링 노드를 포함하는 렌더링 그룹을 생성하여 렌더링 작업을 할당하는 단계 및 (d) 상기 렌더링 그룹으로부터 렌더링 데이터를 반환받아 영상 콘텐츠를 생성 및 상기 사용자 단말에 제공하는 단계를 포함할 수 있다.
상세하게는, 하나 이상의 사용자 단말로부터 복수개로 분할된 영상블록으로 이루어진 콘텐츠 소스에 대한 렌더링 작업을 요청받고, 렌더링 작업에 대한 프로젝트를 생성하는 단계(a)에서는, 사용자 단말(100)이 정보통신망을 통해 WAS(300)가 온라인 상에 게시하는 웹 페이지에 접속하고, 영상 편집 및 렌더링 작업을 요청하면(S110), WAS(300)는 웹 상에서 구동하는 템플릿 기반 편집 툴을 제공하고, 영상 편집 프로젝트를 생성한다(S120). 이에 따라, 사용자는 편집 툴상에서 편집 작업을 수행 및 완료하여 콘텐츠 소스를 준비하게 된다. 이때, 콘텐츠 소스는 편집에 의해 분할된 복수의 영상블록, 각 블록에 연결된 템플릿, 이미지 및 텍스트 등과, 이러한 요소들을 결합하는 메타정보가 포함될 수 있다.
다음으로, 영상블록의 개수에 대응하여, 스케일링을 통해 하나의 렌더링 그룹에 참여하는 렌더링 노드의 개수를 결정하는 단계(b)에서는, WAS(300)가 완료된 편집 작업에 대한 콘텐츠 소스를 렌더링 서버(400)에 제공하고(S130), 이에 렌더링 서버(400)는 콘텐츠 소스에 포함된 영상블록의 개수를 판단하고 오토 스케일을 통해 작업에 요구되는 렌더링 노드의 개수를 결정하게 된다(S140).
다음으로, 프로젝트의 진행에 따라, 요청된 렌더링 작업을 대기열에 등록하고, 하나의 콘텐츠 소스를 렌더링하는 하나 이상의 렌더링 노드를 포함하는 렌더링 그룹을 생성하여 렌더링 작업을 할당하는 단계(c)에서는, 다수의 사용자 단말로부터 렌더링 작업의 요청 순서에 따라 대기열에 렌더링 작업을 등록하고, 렌더링 서버(400)가 결정된 개수에 따라 렌더링 노드의 인스턴스를 생성하여 렌더링 그룹을 준비하고, 우선순위에 따라 렌더링 작업을 각 렌더링 노드에 할당하게 된다(S150). 이때, 유휴상태의 렌더링 그룹이 존재하면 렌더링 서버(400)는 그 렌더링 그룹에 대한 인스턴스를 생성하여 렌더링 작업을 할당하게 된다. 이에 따라, 렌더링 작업을 할당받은 렌더링 그룹(500)은 영상블록에 대한 렌더링을 수행한다(S150).
다음으로, 렌더링 그룹으로부터 렌더링 데이터를 반환받아 영상 콘텐츠를 생성 및 상기 사용자 단말에 제공하는 단계(d)에서는, 작업을 완료한 렌더링 그룹(500)의 각 렌더링 노드들이 렌더링 완료된 복수의 렌더링 데이터를 렌더링 서버(400)에 반환하고(S170), 이에 렌더링 서버(400)가 메타정보를 이용하여 각 분할된 렌더링 데이터를 병합함으로써 하나의 영상 콘텐츠를 생성하게 된다(S180).
또한, 렌더링 서버(400)는 WAS(300)에 생성된 영상 콘텐츠를 전달하고(S190), 이에 WAS(300)는 해당 영상 콘텐츠의 사용자를 식별 및 사용자 단말(100)에 완성된 영상 콘텐츠를 제공하게 된다(S200).
상기한 설명에 많은 사항이 구체적으로 기재되어 있으나 이것은 발명의 범위를 한정하는 것이라기보다 바람직한 실시예의 예시로서 해석되어야 한다. 따라서, 발명은 설명된 실시예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위에 균등한 것에 의하여 정하여져야 한다.
100 : 사용자 단말 200 : 분산 렌더링 시스템
300 : Web Application Server(WAS) 310: 웹 페이지 제공부
320 : 프로젝트 관리부 330 : 클라우드 접속부
340 : 콘텐츠 스토리지 350 : 회원 관리부
360 : 회원 데이터 베이스 400 : 렌더링 서버
310 : 스케일링 부 420 : 렌더링 처리부
430 : 영상 병합부 500 : 렌더링 그룹
600 : 렌더링 노드

Claims (14)

  1. 하나 이상의 사용자 단말로부터 복수개로 분할된 영상블록으로 이루어진 콘텐츠 소스에 대한 렌더링 작업을 요청받고, 상기 렌더링 작업에 대한 프로젝트를 생성하는 WAS;
    하나의 콘텐츠 소스를 렌더링하는 하나 이상의 렌더링 노드를 포함하는 렌더링 그룹;
    상기 프로젝트의 진행에 따라, 요청된 렌더링 작업을 대기열에 등록하고, 상기 렌더링 그룹을 생성하여 렌더링 작업을 할당하고, 렌더링 데이터를 반환받아 영상 콘텐츠를 생성하고 상기 WAS에 제공하는 렌더링 서버를 포함하고,
    상기 렌더링 그룹은 작업 수행 여부에 따라 활성상태 또는 유휴상태로 구분되고
    ,상기 렌더링 서버는,
    상기 영상블록의 개수에 대응하여, 스케일링을 통해 하나의 렌더링 그룹에 참여하는 렌더링 노드의 개수를 결정하고, 우선순위에 따라 유휴상태의 렌더링 그룹에 대기중인 렌더링 작업을 할당하고, 활성상태의 렌더링 그룹의 작업이 완료됨에 따라 유후상태로 전환되는 렌더링 그룹에 순차적으로 렌더링 작업을 할당하는 클라우드 기반 가변형 분산 렌더링 시스템.
  2. 제 1 항에 있어서,
    상기 영상블록은,
    원 영상 및 메타정보와, 상기 원 영상에 사용자에 의해 삽입된 텍스트, 이미지 및 템플릿 중, 하나 이상을 포함하는 클라우드 기반 가변형 분산 렌더링 시스템.
  3. 삭제
  4. 제 1 항 및 제 2 항 중, 어느 하나의 항에 있어서,
    상기 렌더링 서버 및 렌더링 그룹은,
    가상머신으로 구현되고, 클라우드 시스템의 클라우드 자원이 할당된 인스턴스인 클라우드 기반 가변형 분산 렌더링 시스템.
  5. 제 4 항에 있어서,
    상기 WAS는,
    정보통신망을 통해 접속한 회원의 사용자 단말을 로그인 처리하고, 렌더링 작업의 요청 및 요청에 따른 콘텐츠 소스를 전송받는 웹 페이지를 제공하는 웹 페이지 제공부;
    렌더링 작업 요청에 따라 프로젝트를 생성하고, 상기 렌더링 서버로부터 제작된 영상 콘텐츠의 수신시까지 프로젝트를 진행하는 프로젝트 관리부;
    생성된 프로젝트의 진행에 따라, 상기 콘텐츠 소스를 상기 렌더링 서버에 전송하는 클라우드 접속부; 및
    상기 콘텐츠 소스 또는 제작된 영상 콘텐츠를 각 프로젝트별로 저장하는 콘텐츠 스토리지
    를 포함하는 클라우드 기반 가변형 분산 렌더링 시스템.
  6. 제 5 항에 있어서,
    상기 WAS는,
    상기 사용자 단말에 대한 회원가입 절차 또는 로그인 절차를 수행하고, 회원 가입된 사용자 정보의 생성, 갱신 및 삭제를 포함하는 회원 관리절차를 수행하는 회원 관리부; 및
    회원 가입된 사용자 정보를 해당 사용자가 요청한 렌더링 작업의 프로젝트와 연관 설정하여 저장하는 회원 데이터 베이스
    를 포함하는 클라우드 기반 가변형 분산 렌더링 시스템.
  7. 제 4 항에 있어서,
    상기 렌더링 서버는,
    대기중인 렌더링 작업 목록을 로딩하고, 우선순위에 따라 대기중인 렌더링 작업이 존재하면 분할된 블록에 대응하여 필요한 렌더링 노드의 개수를 결정하고, 렌더링 작업의 대기건수가 기준을 초과하면 렌더링 그룹의 새로운 인스턴스의 생성을 통해 유휴상태의 렌더링 그룹을 추가로 확보하는 스케일링 부;
    유휴상태의 렌더링 그룹에 할당된 대기중인 렌더링 작업에 대한 콘텐츠 소스의 영상블록을 렌더링 노드 별로 전달하는 렌더링 처리부; 및
    각 렌더링 노드에 의해 작업 완료됨에 따라, 분할된 렌더링 데이터를 반환받아 병합하여 하나의 영상 콘텐츠를 생성하는 영상 병합부
    를 포함하는 클라우드 기반 가변형 분산 렌더링 시스템.
  8. 제 7 항에 있어서,
    상기 영상 병합부는,
    상기 사용자 단말의 요청에 따라, 상기 영상블록을 메타정보에 정의된 결합 및 재생순서에 따라 순차적으로 재생하는 프리뷰 노드
    와 더 연결되는 클라우드 기반 가변형 분산 렌더링 시스템.
  9. 청구항 1에 기재된 클라우드 기반 가변형 분산 렌더링 시스템에 의한 렌더링 방법으로서,
    (a) 하나 이상의 사용자 단말로부터 복수개로 분할된 영상블록으로 이루어진 콘텐츠 소스에 대한 렌더링 작업을 요청받고, 상기 렌더링 작업에 대한 프로젝트를 생성하는 단계;
    (b) 상기 영상블록의 개수에 대응하여, 스케일링을 통해 하나의 렌더링 그룹에 참여하는 렌더링 노드의 개수를 결정하는 단계;
    (c) 상기 프로젝트의 진행에 따라, 요청된 렌더링 작업을 대기열에 등록하고, 하나의 콘텐츠 소스를 렌더링하는 하나 이상의 렌더링 노드를 포함하는 렌더링 그룹을 생성하여 렌더링 작업을 할당하는 단계; 및
    (d) 상기 렌더링 그룹으로부터 렌더링 데이터를 반환받아 영상 콘텐츠를 생성 및 상기 사용자 단말에 제공하는 단계를 포함하고,
    상기 렌더링 그룹은 작업 수행 여부에 따라 활성상태 또는 유휴상태로 구분되고,
    상기 (c) 단계는,
    (c1) 우선순위에 따라 유휴상태의 렌더링 그룹에 대기중인 렌더링 작업을 할당하고, 활성상태의 렌더링 그룹의 작업이 완료됨에 따라 유후상태로 전환되는 렌더링 그룹에 순차적으로 렌더링 작업을 할당하는 단계
    를 포함하는 클라우드 기반 가변형 분산 렌더링 방법.
  10. 제 9 항에 있어서,
    상기 영상블록은,
    원 영상 및 메타정보와, 상기 원 영상에 사용자에 의해 삽입된 텍스트, 이미지 및 템플릿 중, 하나 이상을 포함하는 클라우드 기반 가변형 분산 렌더링 방법.
  11. 삭제
  12. 제 9 항 및 제 10 항 중, 어느 하나의 항에 있어서,
    상기 렌더링 서버 및 렌더링 그룹은,
    가상머신으로 구현되고, 클라우드 시스템의 클라우드 자원이 할당된 인스턴스인 클라우드 기반 가변형 분산 렌더링 방법.
  13. 제 12 항에 있어서,
    상기 (c) 단계는,
    (c2) 대기중인 렌더링 작업 목록을 로딩하고, 우선순위에 따라 대기중인 렌더링 작업이 존재하면 분할된 블록에 대응하여 필요한 렌더링 노드의 개수를 결정하고, 렌더링 작업의 대기건수가 기준을 초과하면 렌더링 그룹의 새로운 인스턴스의 생성을 통해 유휴상태의 렌더링 그룹을 추가로 확보하는 단계;
    (c3) 유휴상태의 렌더링 그룹에 할당된 대기중인 렌더링 작업에 대한 콘텐츠 소스의 영상블록을 렌더링 노드 별로 전달하는 단계;
    (c4) 각 렌더링 노드에 의해 작업 완료됨에 따라, 분할된 렌더링 데이터를 반환받아 병합하여 하나의 영상 콘텐츠를 생성하는 단계
    를 더 포함하는 클라우드 기반 가변형 분산 렌더링 방법.
  14. 제 12 항에 있어서,
    상기 (a) 단계 이후,
    (a1) 상기 사용자 단말의 요청에 따라, 상기 영상블록을 메타정보에 정의된 결합 및 재생순서에 따라 순차적으로 재생하는 단계
    를 더 포함하는 클라우드 기반 가변형 분산 렌더링 방법.
KR1020200004400A 2019-11-27 2020-01-13 클라우드 기반 가변형 분산 렌더링 시스템 및 방법 KR102081364B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20190154584 2019-11-27
KR1020190154584 2019-11-27

Publications (1)

Publication Number Publication Date
KR102081364B1 true KR102081364B1 (ko) 2020-02-25

Family

ID=69647788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200004400A KR102081364B1 (ko) 2019-11-27 2020-01-13 클라우드 기반 가변형 분산 렌더링 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102081364B1 (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102274610B1 (ko) * 2020-12-24 2021-07-07 (주)비디오몬스터 클라우드 기반 동영상 분산 렌더링 시스템 및 이의 오토 스케일링 방법
WO2021235635A1 (ko) * 2020-05-20 2021-11-25 (주)아키드로우 가상 컨텐츠 데이터 기반 현실적 장면 이미지의 렌더링 방법 및 그 장치
KR20210143530A (ko) * 2020-05-20 2021-11-29 (주) 아키드로우 가상 컨텐츠 데이터 기반 현실적 장면 이미지의 객체 변환 렌더링 방법 및 그 장치
KR20210143529A (ko) * 2020-05-20 2021-11-29 (주) 아키드로우 가상 컨텐츠 데이터 기반의 현실적 장면 이미지 분산 렌더링 방법 및 그 장치
KR20220039530A (ko) * 2020-09-21 2022-03-29 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 인스턴스 수 조절 방법, 장치, 전자 기기 및 판독 가능한 저장 매체
WO2023074998A1 (ko) * 2021-10-27 2023-05-04 한국전자기술연구원 경량형 xr 장치를 위한 xr 스트리밍 시스템 및 이의 운용 방법
CN116866621A (zh) * 2023-09-05 2023-10-10 湖南马栏山视频先进技术研究院有限公司 一种面向视频实时渲染的云端同步方法及系统
WO2024014600A1 (ko) * 2022-07-13 2024-01-18 쿠팡 주식회사 인스턴스 관리 방법 및 이를 위한 전자 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160066228A (ko) * 2014-12-02 2016-06-10 (주)두리반테크 분산 렌더링 시스템
KR20160089742A (ko) 2015-01-20 2016-07-28 삼성전자주식회사 콘텐트 편집 장치 및 방법
KR101992829B1 (ko) * 2018-09-19 2019-06-25 (주)비디오몬스터 클라우드 기반 영상 렌더링 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160066228A (ko) * 2014-12-02 2016-06-10 (주)두리반테크 분산 렌더링 시스템
KR20160089742A (ko) 2015-01-20 2016-07-28 삼성전자주식회사 콘텐트 편집 장치 및 방법
KR101992829B1 (ko) * 2018-09-19 2019-06-25 (주)비디오몬스터 클라우드 기반 영상 렌더링 시스템 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
김홍성, "초대형 해석 결과의 분석을 위한 고해상도 타일 가시화 시스템의 개발 및 성능 향상에 관한 연구", 인하대학교 항공우주공학 석박사 학위논문* *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102339019B1 (ko) * 2020-05-20 2021-12-14 (주) 아키드로우 가상 컨텐츠 데이터 기반의 현실적 장면 이미지 분산 렌더링 방법 및 그 장치
WO2021235635A1 (ko) * 2020-05-20 2021-11-25 (주)아키드로우 가상 컨텐츠 데이터 기반 현실적 장면 이미지의 렌더링 방법 및 그 장치
KR20210143530A (ko) * 2020-05-20 2021-11-29 (주) 아키드로우 가상 컨텐츠 데이터 기반 현실적 장면 이미지의 객체 변환 렌더링 방법 및 그 장치
KR20210143529A (ko) * 2020-05-20 2021-11-29 (주) 아키드로우 가상 컨텐츠 데이터 기반의 현실적 장면 이미지 분산 렌더링 방법 및 그 장치
KR102339020B1 (ko) * 2020-05-20 2021-12-14 (주) 아키드로우 가상 컨텐츠 데이터 기반 현실적 장면 이미지의 객체 변환 렌더링 방법 및 그 장치
KR20220039530A (ko) * 2020-09-21 2022-03-29 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 인스턴스 수 조절 방법, 장치, 전자 기기 및 판독 가능한 저장 매체
KR102565409B1 (ko) * 2020-09-21 2023-08-09 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 인스턴스 수 조절 방법, 장치, 전자 기기 및 판독 가능한 저장 매체
KR102274610B1 (ko) * 2020-12-24 2021-07-07 (주)비디오몬스터 클라우드 기반 동영상 분산 렌더링 시스템 및 이의 오토 스케일링 방법
WO2022139150A1 (ko) * 2020-12-24 2022-06-30 (주)비디오몬스터 클라우드 기반 동영상 분산 렌더링 시스템 및 이의 오토 스케일링 방법
WO2023074998A1 (ko) * 2021-10-27 2023-05-04 한국전자기술연구원 경량형 xr 장치를 위한 xr 스트리밍 시스템 및 이의 운용 방법
KR20230060595A (ko) * 2021-10-27 2023-05-08 한국전자기술연구원 경량형 xr 장치를 위한 xr 스트리밍 시스템 및 이의 운용 방법
KR102585727B1 (ko) * 2021-10-27 2023-10-10 한국전자기술연구원 경량형 xr 장치를 위한 xr 스트리밍 시스템 및 이의 운용 방법
WO2024014600A1 (ko) * 2022-07-13 2024-01-18 쿠팡 주식회사 인스턴스 관리 방법 및 이를 위한 전자 장치
CN116866621A (zh) * 2023-09-05 2023-10-10 湖南马栏山视频先进技术研究院有限公司 一种面向视频实时渲染的云端同步方法及系统
CN116866621B (zh) * 2023-09-05 2023-11-03 湖南马栏山视频先进技术研究院有限公司 一种面向视频实时渲染的云端同步方法及系统

Similar Documents

Publication Publication Date Title
KR102081364B1 (ko) 클라우드 기반 가변형 분산 렌더링 시스템 및 방법
Huerta-Canepa et al. A virtual cloud computing provider for mobile devices
US11362971B2 (en) Pass through sharing of resources
US10764233B1 (en) Centralized communication platform with email which organizes communication as a plurality of information streams and which generates a second message based on and a first message and formatting rules associated with a communication setting
US9083693B2 (en) Managing private information in instant messaging
KR101992829B1 (ko) 클라우드 기반 영상 렌더링 시스템 및 방법
US11412026B2 (en) Method for communication among a plurality of users provided with communication terminals, via a virtual communication space
US20140214694A1 (en) Method and apparatus for managing group workspaces
CN112600878B (zh) 一种数据传输方法及装置
CN112600761A (zh) 一种资源分配的方法、装置及存储介质
CN107342929B (zh) 一种新消息通知的发送方法、装置及系统
JP2021507333A (ja) グループ間でデータを共有するための方法および装置
CN110505145B (zh) 一种通讯录添加方法及终端
WO2023109934A1 (zh) 一种对象存储桶的数据访问方法以及云管理平台
CA2967556A1 (en) Communication management method and communication management system
CN115396500A (zh) 基于专网的服务平台切换方法、系统及电子设备
CN114090925A (zh) 一种视觉类主题的切换方法、装置、电子设备及存储介质
CN115495065A (zh) 一种基于业务流控制的页面组件编排组合方法及装置
CN113014404B (zh) 一种消息传输方法、装置、服务器以及第二客户端
CN115706727A (zh) 云桌面数据的迁移方法、节点和服务器
CN109428743B (zh) QoS配置随虚拟机迁移的方法、服务器、交换机及系统
US10878187B1 (en) Network-based content rendering
US10176155B2 (en) Modifying a document graph to reflect information relating to a document it represents
CN112882714B (zh) SonarQube服务器集群扩容方法及装置
CN115243080B (zh) 一种数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant