KR102246581B1 - 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버 - Google Patents

클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버 Download PDF

Info

Publication number
KR102246581B1
KR102246581B1 KR1020210000182A KR20210000182A KR102246581B1 KR 102246581 B1 KR102246581 B1 KR 102246581B1 KR 1020210000182 A KR1020210000182 A KR 1020210000182A KR 20210000182 A KR20210000182 A KR 20210000182A KR 102246581 B1 KR102246581 B1 KR 102246581B1
Authority
KR
South Korea
Prior art keywords
upload
target file
file
client
chunks
Prior art date
Application number
KR1020210000182A
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 이선웅
Priority to KR1020210000182A priority Critical patent/KR102246581B1/ko
Application granted granted Critical
Publication of KR102246581B1 publication Critical patent/KR102246581B1/ko
Priority to US17/472,835 priority patent/US11368516B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/02Agriculture; Fishing; Forestry; Mining

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Library & Information Science (AREA)
  • Information Transfer Between Computers (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Business, Economics & Management (AREA)
  • Mining & Mineral Resources (AREA)
  • Marketing (AREA)
  • Animal Husbandry (AREA)
  • Agronomy & Crop Science (AREA)
  • Economics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marine Sciences & Fisheries (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

파일 업로드 방법 및 이를 수행하기 위한 프록시 서버가 제공된다. 본 발명의 실시예들은 프록시 서버를 통해 파일의 업로드 속도를 향상시키고 업로드 과정에서의 에러 발생에 따른 업로드 지연(delay)을 최소화하기 위한 것이다. 본 발명의 실시예들에 따르면, 클라이언트가 분할된 각 청크에 대한 업로드 링크를 백엔드 서버로 요청하고 이를 백엔드 서버로부터 수신하는 대신 하나의 HTTP 요청만을 프록시 서버로 전달함으로써 업로드 대상파일의 업로드가 개시된다는 점에서 통신 속도가 상대적으로 느린 네트워크를 통한 트랜잭션을 최소화할 수 있으며 이에 따라 업로드 속도를 향상시킬 수 있다.

Description

클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버{METHOD FOR UPLOADING FILE VIA CLOUD COMPUTING ENVIRONMENT, AND PROXY SERVER FOR EXECUTING THE SAME}
본 발명의 예시적인 실시예들은 파일의 업로드 기술과 관련된다.
네트워크 기술이 발전함에 따라 사용자가 이용하는 단말(예컨대, 데스크탑, 노트북, 휴대용 기기 등)에 저장되던 데이터는 클라우드 스토리지에 저장되고, 사용자는 필요할 때마다 자신의 계정을 이용하여 언제 어디서든 클라우드 스토리지에 저장된 데이터를 이용할 수 있게 되었다. 사용자는 클라우드 스토리지를 통해 파일을 업로드하거나 다운로드할 수 있으며, 파일 공유 및 동기화를 통해 수정된 파일을 실시간으로 확인할 수 있다.
그러나, 이러한 클라우드 서비스에 있어서 하나의 파일을 업로드하기 위해서는 많은 양의 요청(request)을 생성하여야 하며, 특히 업로드하고자 하는 파일의 크기가 커질수록 클라우드 스토리지에 분산 저장될 각 청크(chunk)들의 개수가 많아지게 되어 파일 업로드를 위한 요청이 더욱 많아지게 되는 문제점이 있다. 이에 따라, 사용자가 사진과 같은 하나의 파일을 업로드하는 데에 많은 시간이 소요될 수 있으며 이는 곧 클라우드 서비스의 품질 저하로 이어지게 된다.
한국등록특허공보 제10-1667026호(2016.10.11)
본 발명의 실시예들은 프록시 서버를 통해 파일의 업로드 속도를 향상시키고 업로드 과정에서의 에러 발생에 따른 업로드 지연(delay)을 최소화하기 위한 것이다.
예시적인 실시예에 따르면, 클라이언트와 네트워크를 통해 연결되고, 상기 네트워크보다 통신 속도가 빠른 클라우드 컴퓨팅 환경(cloud computing environment)을 통해 클라우드 스토리지, 백엔드 서버(backend server) 및 클라우드 워커(cloud worker)와 각각 연결되는 프록시 서버(proxy server)로서, 상기 클라이언트로부터 업로드 대상파일을 포함하는 업로드 요청 메시지를 수신하는 파일 수신부; 상기 업로드 대상파일을 복수의 청크(chunk)로 분할하며, 분할된 상기 복수의 청크 각각에 대한 업로드 링크(upload link)를 생성하며, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 상기 클라우드 스토리지로 업로드하는 파일 처리부; 상기 업로드 대상파일의 메타 데이터를 추출하는 메타 데이터 추출부; 및 상기 클라우드 워커에서 업로드 대상파일의 후처리(post-processing)를 수행할 수 있도록 상기 복수의 청크 각각에 대한 업로드 링크 및 상기 메타 데이터를 포함하는 업로드 완료 메시지를 상기 백엔드 서버를 통해 상기 클라우드 워커로 전달하고, 상기 백엔드 서버로부터 상기 업로드 완료 메시지에 대한 확인 메시지를 수신함에 따라 상기 업로드 요청 메시지에 대한 응답 메시지를 상기 클라이언트로 전송하는 업로드 완료 처리부를 포함하는, 프록시 서버가 제공된다.
상기 파일 처리부는, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 상기 클라우드 스토리지로 동시에(simultaneously) 업로드하며, 상기 복수의 청크 각각에 대한 업로드 과정 중 에러가 발생되는 경우 에러가 발생된 청크에 대해서만 재업로드를 수행할 수 있다.
상기 업로드 대상파일의 후처리는, 상기 클라우드 워커에서 상기 업로드 링크 및 상기 메타 데이터를 이용하여 상기 클라우드 스토리지로부터 상기 업로드 대상파일을 획득함으로써 수행될 수 있다.
상기 업로드 대상파일의 후처리는, 상기 업로드 대상파일에 대한 아이콘(icon) 생성, 상기 업로드 대상파일에 대한 프리뷰(preview) 생성, 상기 업로드 대상파일에 대한 섬네일(thumbnail) 생성, 상기 업로드 대상파일에 대한 트랜스코딩(transcoding) 및 상기 업로드 대상파일에 포함된 얼굴 인식(face recognition) 중 하나 이상을 포함할 수 있다.
상기 파일 수신부는, 상기 업로드 요청 메시지에 대한 응답 메시지가 상기 클라이언트로 전송된 이후에는 상기 업로드 대상파일의 후처리가 완료될 때까지 기다릴 필요 없이 상기 클라이언트로부터 새로운 파일에 대한 업로드 요청 메시지를 수신 가능하다.
다른 예시적인 실시예에 따르면, 클라이언트와 네트워크를 통해 연결되고, 상기 네트워크보다 통신 속도가 빠른 클라우드 컴퓨팅 환경(cloud computing environment)을 통해 클라우드 스토리지, 백엔드 서버(backend server) 및 클라우드 워커(cloud worker)와 각각 연결되는 프록시 서버(proxy server)에서 수행되는 파일 업로드 방법으로서, 파일 수신부에서, 상기 클라이언트로부터 업로드 대상파일을 포함하는 업로드 요청 메시지를 수신하는 단계; 파일 처리부에서, 상기 업로드 대상파일을 복수의 청크(chunk)로 분할하는 단계; 상기 파일 처리부에서, 분할된 상기 복수의 청크 각각에 대한 업로드 링크(upload link)를 생성하는 단계; 상기 파일 처리부에서, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 상기 클라우드 스토리지로 업로드하는 단계; 메타 데이터 추출부에서, 상기 업로드 대상파일의 메타 데이터를 추출하는 단계; 업로드 완료 처리부에서, 상기 클라우드 워커에서 업로드 대상파일의 후처리(post-processing)를 수행할 수 있도록 상기 복수의 청크 각각에 대한 업로드 링크 및 상기 메타 데이터를 포함하는 업로드 완료 메시지를 상기 백엔드 서버를 통해 상기 클라우드 워커로 전달하는 단계; 및 상기 업로드 완료 처리부에서, 상기 백엔드 서버로부터 상기 업로드 완료 메시지에 대한 확인 메시지를 수신함에 따라 상기 업로드 요청 메시지에 대한 응답 메시지를 상기 클라이언트로 전송하는 단계를 포함하는, 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법이 제공된다.
상기 복수의 청크 각각을 상기 클라우드 스토리지로 업로드하는 단계는, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 상기 클라우드 스토리지로 동시에(simultaneously) 업로드하며, 상기 복수의 청크 각각에 대한 업로드 과정 중 에러가 발생되는 경우 에러가 발생된 청크에 대해서만 재업로드를 수행할 수 있다.
상기 업로드 대상파일의 후처리는, 상기 클라우드 워커에서 상기 업로드 링크 및 상기 메타 데이터를 이용하여상기 클라우드 스토리지로부터 상기 업로드 대상파일을 획득함으로써 수행될 수 있다.
상기 업로드 대상파일의 후처리는, 상기 업로드 대상파일에 대한 아이콘(icon) 생성, 상기 업로드 대상파일에 대한 프리뷰(preview) 생성, 상기 업로드 대상파일에 대한 섬네일(thumbnail) 생성, 상기 업로드 대상파일에 대한 트랜스코딩(transcoding) 및 상기 업로드 대상파일에 포함된 얼굴 인식(face recognition) 중 하나 이상을 포함할 수 있다.
상기 파일 업로드 방법은, 상기 업로드 요청 메시지에 대한 응답 메시지를 상기 클라이언트로 전송하는 단계 이후, 상기 파일 수신부에서, 상기 업로드 대상파일의 후처리가 완료될 때까지 기다릴 필요 없이 상기 클라이언트로부터 새로운 파일에 대한 업로드 요청 메시지를 수신 가능하다.
본 발명의 실시예들에 따르면, 클라이언트가 분할된 각 청크에 대한 업로드 링크를 백엔드 서버로 요청하고 이를 백엔드 서버로부터 수신하는 대신 하나의 HTTP 요청만을 프록시 서버로 전달함으로써 업로드 대상파일의 업로드가 개시된다는 점에서 통신 속도가 상대적으로 느린 네트워크를 통한 트랜잭션을 최소화할 수 있으며 이에 따라 업로드 속도를 향상시킬 수 있다.
또한, 본 발명의 실시예에 따르면, 프록시 서버가 클라우드 컴퓨팅 환경을 통해 업로드 대상파일의 각 청크를 클라우드 스토리지로 동시에 업로드함으로써, 클라이언트가 인터넷, 와이파이 네트워크 등과 같은 네트워크를 통해 각 청크를 클라우드 스토리지로 업로드하는 경우에 비해 업로드 속도가 대폭 향상될 수 있다.
또한, 본 발명의 실시예에 따르면, 프록시 서버에서 업로드 대상파일을 복수의 청크로 분할한 후 분할된 각 청크에 대한 업로드 링크를 직접 생성하므로, 업로드 과정 중 에러가 발생되더라도 에러가 발생된 청크에 대해서만 재업로드를 수행함으로써 네트워크 장애(network interruption) 등에 의한 에러 발생에 따른 업로드 지연을 최소화할 수 있다.
나아가, 본 발명의 실시예에 따르면, 프록시 서버에서 업로드 대상파일의 메타 데이터가 추출되어 백엔드 서버를 통해 클라우드 워커로 전달되므로, 클라이언트는 상기 메타 데이터의 추출 이후 프록시 서버로부터 상기 업로드 요청 메시지에 대한 응답 메시지를 보다 빠르게 수신할 수 있으며 이에 따라 업로드 대상파일의 후처리가 완료될 때까지 기다릴 필요 없이 새로운 파일에 대한 업로드를 프록시 서버로 요청할 수 있다.
도 1은 본 발명의 제1 실시예에 따른 파일 업로드 시스템의 상세 구성을 나타낸 블록도
도 2는 본 발명의 제1 실시예에 따른 파일 업로드 방법을 설명하기 위한 흐름도
도 3은 본 발명의 제2 실시예에 따른 파일 업로드 시스템의 상세 구성을 나타낸 블록도
도 4는 본 발명의 제2 실시예에 따른 프록시 서버의 상세 구성을 나타낸 블록도
도 5는 본 발명의 제2 실시예에 따른 파일 업로드 방법을 설명하기 위한 흐름도
도 6은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 제1 실시예에 따른 파일 업로드 시스템(100)의 상세 구성을 나타낸 블록도이다. 도 1에 도시된 바와 같이, 본 발명의 제1 실시예에 따른 파일 업로드 시스템(100)은 클라이언트(102), 백엔드 서버(108, backend server), 클라우드 스토리지(110, cloud storage) 및 클라우드 워커(112, cloud worker)를 포함한다.
클라이언트(102)는 사용자가 소지하는 단말로서 예를 들어, 데스크탑, 노트북, 태블릿 컴퓨터, 스마트폰, PDA, 스마트 워치와 같은 웨어러블 디바이스 등이 될 수 있다. 클라이언트(102)는 사용자의 명령에 따라 파일의 업로드 요청을 생성할 수 있다. 이하에서는, 클라이언트(102)에 의해 업로드가 요청되는 파일을 업로드 대상파일이라 칭하기로 한다. 상기 업로드 대상파일은 예를 들어, 사진(picture), 이미지(image), 동영상(video), 문서(document) 파일 등을 포함할 수 있으나, 상기 업로드 대상파일이 특정 종류의 파일로 한정되는 것은 아니다.
클라이언트(102)는 네트워크(104)를 통해 클라우드 컴퓨팅 환경(106) 내 백엔드 서버(108)와 클라우드 스토리지(110)에 접속할 수 있다. 여기서, 네트워크(104)는 인터넷, 와이파이 네트워크(wifi network), 3G 네트워크, LTE 네트워크 등과 같은 모바일 네트워크(mobile network), 광역 네트워크(wire area networks) 등을 포함할 수 있다.
클라이언트(102)는 업로드 대상파일에 대한 업로드 요청 메시지를 생성하여 백엔드 서버(108)로 전송할 수 있다. 클라이언트(102)는 상기 업로드 요청 메시지에 대한 응답 메시지를 백엔드 서버(108)로부터 수신함에 따라 상기 업로드 대상파일을 복수의 청크(chunk)로 분할하고, 분할된 상기 복수의 청크 각각에 대한 업로드 링크(upload link)를 백엔드 서버(108)로 순차적으로 요청할 수 있다. 구체적으로, 클라이언트(102)는 분할된 상기 복수의 청크 중 #1번째 청크에 대한 업로드 링크(upload link)를 백엔드 서버(108)로 요청하고, 백엔드 서버(108)로부터 상기 #1번째 청크에 대한 업로드 링크를 수신함에 따라 이를 이용하여 상기 #1번째 청크를 클라우드 스토리지(110)로 업로드할 수 있다. 이후, 클라이언트(102)는 분할된 상기 복수의 청크 중 #2번째 청크에 대한 업로드 링크를 백엔드 서버(108)로 요청하고, 백엔드 서버(108)로부터 상기 #2번째 청크에 대한 업로드 링크를 수신함에 따라 이를 이용하여 상기 #2번째 청크를 클라우드 스토리지(110)로 업로드할 수 있다. 이와 같이, 클라이언트(102)는 #N번째 청크에 대한 업로드 링크를 백엔드 서버(108)로 요청하여 수신하고, 상기 #N번째 청크에 대한 업로드 링크에 따라 상기 #N번째 청크를 클라우드 스토리지(110)로 업로드할 수 있다. 즉, 클라이언트(102)는 #1, #2,…#N번째 청크 각각에 대한 업로드 링크의 요청/수신, 클라우드 스토리지(110)로의 업로드를 순차적으로 수행할 수 있다.
클라이언트(102)는 상기 업로드 대상파일의 #1 ~ #N번째 청크 각각에 대한 업로드가 완료되는 경우 백엔드 서버(108)로 업로드 대상파일에 대한 업로드 완료 확인을 요청하고, 이에 대한 응답으로서 상기 업로드 대상파일의 후처리를 위한 테스크 아이디(Task ID)를 백엔드 서버(108)로부터 수신할 수 있다. 후술할 바와 같이, 클라우드 워커(112)에서 상기 업로드 대상파일에 대한 후처리가 수행될 수 있으며, 클라이언트(102)는 상기 테스크 아이디를 통해 백엔드 서버(108)로 후처리의 완료를 확인 요청할 수 있다. 클라이언트(102)는 상기 후처리가 완료되었다는 완료 메시지를 백엔드 서버(108)로부터 수신할 수 있으며, 후처리 완료 메시지를 수신한 이후에 비로소 새로운 파일에 대한 업로드를 백엔드 서버(108)로 요청할 수 있다.
백엔드 서버(108)는 클라우드 서비스를 제공함에 있어서 데이터의 로그(log) 기록/관리 등을 포함하는 데이터베이스(DB) 관리, 사용자 인증 등을 수행하는 장치로서, 클라우드 컴퓨팅 환경(106) 내 존재할 수 있다. 상술한 바와 같이, 백엔드 서버(108)는 클라이언트(102)로부터 업로드 대상파일을 포함하는 업로드 요청 메시지를 수신하고 이에 대한 응답 메시지를 클라이언트(102)로 전송할 수 있다. 또한, 백엔드 서버(108)는 상기 업로드 대상파일의 #N번째 청크에 대한 업로드 링크를 클라이언트(102)로부터 요청 받고, 상기 #N번째 청크에 대한 업로드 링크를 생성하여 클라이언트(102)로 전송할 수 있다. 이때, 백엔드 서버(108)는 상기 업로드 대상파일의 #1, #2,…#N번째 청크 각각에 대한 상기 업로드 링크의 생성 및 전송을 순차적으로 수행할 수 있다.
또한, 백엔드 서버(108)는 클라이언트(102)로부터 업로드 대상파일에 대한 업로드 완료 확인요청을 수신하고, 상기 업로드 대상파일의 후처리를 위한 테스크를 클라이언트 워크(112)로 요청할 수 있다. 또한, 백엔드 서버(108)는 상기 업로드 대상파일의 후처리를 위한 테스크 아이디(Task ID)를 클라이언트(102)로 전송할 수 있다.
클라우드 스토리지(110)는 업로드 대상파일이 저장되는 저장소로서, 클라우드 컴퓨팅 환경(106) 내 존재할 수 있다. 상술한 바와 같이, 클라이언트(102)는 백엔드 서버(108)로부터 수신된 업로드 링크에 따라 상기 업로드 대상파일의 #1 ~ #N번째 청크 각각을 클라우드 스토리지(110)로 순차적으로 업로드할 수 있다.
클라우드 워커(112)는 업로드 대상파일의 후처리를 수행하는 모듈로서, 클라우드 컴퓨팅 환경(106) 내 존재할 수 있다. 클라우드 워커(112)는 백엔드 서버(108)로부터 상기 업로드 대상파일의 후처리 요청을 수신함에 따라 클라우드 스토리지(110)에 접속하여 업로드 대상파일을 획득할 수 있다. 이후, 클라우드 워커(112)는 상기 업로드 대상파일에 대한 아이콘(icon) 생성, 상기 업로드 대상파일에 대한 프리뷰(preview) 생성, 상기 업로드 대상파일에 대한 섬네일(thumbnail) 생성, 상기 업로드 대상파일에 대한 트랜스코딩(transcoding), 상기 업로드 대상파일에 포함된 얼굴 인식(face recognition) 등과 같은 각종 후처리를 수행할 수 있다. 또한, 클라우드 워커(112)는 상기 후처리를 통해 생성된 아이콘, 프리뷰 등을 클라우드 스토리지(110)에 업로드할 수 있다.
도 2는 본 발명의 제1 실시예에 따른 파일 업로드 방법을 설명하기 위한 흐름도이다.
먼저, 클라이언트(102)는 업로드 대상파일에 대한 업로드 요청 메시지를 생성하여 백엔드 서버(108)로 전송한다(S12).
다음으로, 백엔드 서버(108)는 상기 업로드 요청 메시지에 대한 응답 메시지를 클라이언트(102)로 전송한다(S14).
다음으로, 클라이언트(102)는 상기 업로드 대상파일을 복수의 청크로 분할하고, 분할된 상기 복수의 청크 중 #1번째 청크에 대한 업로드 링크를 백엔드 서버(108)로 요청한다(S16).
다음으로, 클라이언트(102)는 백엔드 서버(108)로부터 상기 #1번째 청크에 대한 업로드 링크를 수신한다(S18).
다음으로, 클라이언트(102)는 상기 #1번째 청크에 대한 업로드 링크를 이용하여 상기 #1번째 청크를 클라우드 스토리지(110)로 업로드한다(S20).
다음으로, 클라이언트(102)는 상기 #1번째 청크에 대한 업로드 확인 메시지를 클라우드 스토리지(110)로부터 수신한다(S22).
다음으로, 클라이언트(102)는 #2 ~ #N번째 청크에 대한 업로드 링크 요청 및 업로드 링크 수신, #2 ~ #N번째 청크에 대한 업로드 및 업로드 확인 메시지 수신 단계를 순차적으로 수행한다(S24 내지 S30).
다음으로, 클라이언트(102)는 업로드 대상파일에 대한 업로드 완료 확인을 백엔드 서버(108)로 요청한다(S32).
다음으로, 백엔드 서버(108)는 상기 업로드 대상파일의 후처리를 위한 테스크를 클라이언트 워크(112)로 요청한다(S34). 이때, 상기 테스크 요청에는 백엔드 서버(108)에서 생성된 각 청크에 대한 업로드 링크에 대한 정보가 포함될 수 있다.
다음으로, 클라이언트(102)는 S32 단계에서의 업로드 대상파일에 대한 업로드 완료 확인요청에 대한 응답으로서 상기 업로드 대상파일의 후처리를 위한 테스크 아이디(Task ID)를 백엔드 서버(108)로부터 수신한다(S36).
다음으로, 클라우드 워커(112)는 업로드 대상파일을 클라우드 스토리지(110)로 요청한다(S38). 클라우드 워커(112)는 S34 단계에서 수신된 테스크 요청에 포함된 각 청크에 대한 업로드 링크를 참조하여 업로드 대상파일을 클라우드 스토리지(110)로 요청할 수 있다.
다음으로, 클라우드 워커(112)는 클라우드 스토리지(110)로부터 업로드 대상파일을 획득한다(S40).
다음으로, 클라우드 워커(112)는 상기 업로드 대상파일에 대한 후처리를 수행한다(S42). 이때, 클라우드 워커(112)는 상기 업로드 대상파일로부터 상기 업로드 대상파일에 대한 메타 데이터를 추출하고, 이를 이용하여 상기 업로드 대상파일에 대한 후처리를 수행할 수 있다. 상기 후처리는 예를 들어, 상기 업로드 대상파일에 대한 아이콘(icon) 생성, 상기 업로드 대상파일에 대한 프리뷰(preview) 생성, 상기 업로드 대상파일에 대한 섬네일(thumbnail) 생성, 상기 업로드 대상파일에 대한 트랜스코딩(transcoding), 상기 업로드 대상파일에 포함된 얼굴 인식(face recognition) 등을 포함할 수 있다.
다음으로, 클라우드 워커(112)는 상기 후처리를 통해 생성된 아이콘, 프리뷰 등을 클라우드 스토리지(110)에 업로드한다(S44).
다음으로, 클라이언트(102)는 S36 단계에서 전달 받은 상기 테스크 아이디를 통해 백엔드 서버(108)로 후처리의 완료를 확인 요청한다(S46).
마지막으로, 클라이언트(102)는 상기 후처리가 완료되었다는 완료 메시지를 백엔드 서버(108)로부터 수신한다(S48).
이상 살펴본 바와 같이, 본 발명의 제1 실시예에 따른 파일 업로드 방법은 백엔드 서버(108)가 클라이언트(102)의 업로드 요청을 처리하여 클라우드 스토리지(110)에의 파일 업로드를 지원하게 된다. 그러나, 본 발명의 제1 실시예에 따른 파일 업로드 방법은 몇 가지 문제가 있다.
첫째, 도 2의 A를 참조하면, 클라이언트(102)는 업로드 대상파일을 클라우드 스토리지(110)로 업로드하기 위해 업로드 대상파일을 복수의 청크로 분할한 후 분할된 각 청크에 대한 업로드 링크를 백엔드 서버(108)로 일일이 요청하여야 한다. 즉, 클라이언트(102)는 분할된 각 청크에 대한 업로드 링크를 백엔드 서버(108)로 요청하여 이를 수신한 후에야 비로소 상기 각 청크에 대한 업로드를 수행할 수 있게 된다. 이에 따라, 업로드 대상파일에 대한 청크의 개수가 많아질수록 업로드 링크의 요청/수신에 따른 트랜잭션(transaction)이 많아지게 되며, 이는 곧 백엔드 서버(108)의 부하 증대 및 업로드 속도의 저하를 일으키게 된다. 특히, 클라이언트(102)와 백엔드 서버(108) 간의 파일 송수신을 위한 네트워크는 클라우드 컴퓨팅 환경(106)에 비해 통신 속도가 느리므로 청크의 개수가 많아질수록 파일 업로드 속도가 현저히 떨어지게 된다.
둘째, 도 2의 A를 참조하면, 클라이언트(102)는 업로드 대상파일의 #1, #2,…#N번째 청크 각각에 대한 업로드 링크의 요청/수신, 클라우드 스토리지(110)로의 업로드를 순차적으로 수행하게 된다. 이러한 순차적 업로드 방식에 따르면, 상기 복수의 청크 각각에 대한 업로드 과정 중 에러가 발생되는 경우 에러가 발생된 청크뿐 아니라 에러가 발생된 청크 이전에 업로드된 청크까지 재업로드를 수행하여야 한다. 즉, 본 발명의 제1 실시예에 따른 파일 업로드 방법에 따르면 업로드 과정에서 에러 발생시 업로드 대상파일 전체에 대한 업로드를 재수행하여야 하는 번거로움이 있다.
셋째, 도 2의 B를 참조하면, 클라이언트(102)는 S48 단계가 완료된 이후에나 비로소 새로운 파일에 대한 업로드를 개시할 수 있다. 즉, 클라이언트(102)가 S12 단계를 통해 업로드 대상파일의 업로드를 요청한 이후 클라우드 스토리지(110)에 업로드 대상파일이 업로드되더라도 클라우드 워커(112)가 클라우드 스토리지(110)로부터 업로드 대상파일을 획득하여 업로드 대상파일에 대한 메타 데이터를 추출하기 전에는 상기 업로드 대상파일에 대한 동기화 작업, 상기 업로드 대상파일의 위치 파악 등을 포함하는 각종 후처리 작업을 수행할 수 없으므로, 클라이언트(102)는 클라우드 워커(112)에서 상기 업로드 대상파일에 대한 메타 데이터를 추출할 때까지 기다려야 한다. 이에 따라, 클라이언트(102)는 클라우드 워커(112)에서 상기 업로드 대상파일에 대한 메타 데이터를 추출이 완료되고 S48 단계를 통해 후처리 완료 메시지를 백엔드 서버(108)로부터 수신한 이후에나 비로소 새로운 파일에 대한 업로드를 개시할 수 있다. 이러한 이유로 인해 새로운 파일에 대한 업로드가 지연되고, 업로드 대상파일이 많을수록 전체 업로드 시간이 길어지게 된다.
이와 같이, 본 발명의 제1 실시예에 따른 파일 업로드 방법은 몇 가지 문제가 있으며 이러한 문제를 해결하기 위해 본 발명의 제1 실시예에 따른 파일 업로드 방법을 개선하였으며, 개선된 파일 업로드 방법은 도 3 내지 도 5를 참조하여 구체적으로 설명하기로 한다.
도 3은 본 발명의 제2 실시예에 따른 파일 업로드 시스템(200)의 상세 구성을 나타낸 블록도이다. 도 3은 본 발명의 제2 실시예에 따른 파일 업로드 시스템(200)은 앞서 설명한 본 발명의 제1 실시예에 따른 파일 업로드 시스템(100)을 개선한 것으로서, 이하에서는 도 1에서 설명한 부분과 중복되는 부분 이외의 구성 및 기능을 중심으로 본 발명의 제2 실시예에 따른 파일 업로드 시스템(200)에 대해 살펴보기로 한다.
도 3에 도시된 바와 같이, 본 발명의 제2 실시예에 따른 파일 업로드 시스템(200)은 클라이언트(202), 프록시 서버(207), 백엔드 서버(208), 클라우드 스토리지(210) 및 클라우드 워커(212)를 포함한다.
클라이언트(202)는 사용자가 소지하는 단말로서 예를 들어, 데스크탑, 노트북, 태블릿 컴퓨터, 스마트폰, PDA, 스마트 워치와 같은 웨어러블 디바이스 등이 될 수 있다. 클라이언트(202)는 사용자의 명령에 따라 업로드 대상파일에 대한 업로드 요청을 생성할 수 있다.
클라이언트(202)는 네트워크(204)를 통해 클라우드 컴퓨팅 환경(106) 내 프록시 서버(207)에 접속하여 업로드 대상파일에 대한 업로드를 요청할 수 있다. 여기서, 네트워크(104)는 인터넷, 와이파이 네트워크(wifi network), 3G 네트워크, LTE 네트워크 등과 같은 모바일 네트워크(mobile network), 광역 네트워크(wire area networks) 등을 포함할 수 있다.
클라이언트(202)는 업로드 요청 메시지를 생성하여 프록시 서버(207)로 전송할 수 있다. 이때, 클라이언트(202)는 업로드 대상파일의 각 청크에 대한 업로드 링크를 백엔드 서버(208)로 요청하는 대신 업로드 요청 메시지만을 프록시 서버(207)로 전송하게 된다. 또한, 상기 업로드 요청 메시지는 상기 업로드 대상파일을 포함하게 되며, 이에 따라 클라이언트(202)는 상기 업로드 대상파일을 클라우드 스토리지(210)에 전달하지 않게 된다. 즉, 클라이언트(202)는 업로드 대상파일을 포함하는 업로드 요청 메시지만을 프록시 서버(207)로 전송하게 되며, 이후 프록시 서버(207)로부터 상기 업로드 요청 메시지에 대한 응답 메시지를 수신하는 것으로 업로드 완료를 확인하게 된다.
프록시 서버(207)는 클라이언트(202)로부터 파일 업로드 요청과 관련된 데이터를 수신하여 이를 중계하는 장치로서, 클라우드 컴퓨팅 환경(206) 내 존재할 수 있다.
프록시 서버(207)는 클라이언트(202)로부터 업로드 대상파일을 포함하는 업로드 요청 메시지를 수신한다. 이에 따라, 프록시 서버(207)는 상기 업로드 대상파일을 복수의 청크(chunk)로 분할하며, 분할된 상기 복수의 청크 각각에 대한 업로드 링크(upload link)를 생성하며, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 클라우드 스토리지(210)로 업로드할 수 있다. 이때, 프록시 서버(207)는 상기 업로드 링크에 따라 상기 복수의 청크 각각을 클라우드 스토리지(210)로 동시에(simultaneously) 업로드할 수 있다. 만약, 상기 복수의 청크 각각에 대한 업로드 과정 중 에러가 발생되는 경우, 프록시 서버(207)는 상기 복수의 청크 각각에 대한 재업로드를 수행하는 대신 에러가 발생된 청크에 대해서만 재업로드를 수행할 수 있다.
즉, 본 발명의 제2 실시예에 따르면, 클라이언트(202)가 업로드 대상파일을 복수의 청크로 분할한 후 분할된 각 청크에 대한 업로드 링크를 백엔드 서버(208)로 일일이 요청하는 대신, 프록시 서버(207)가 업로드 대상파일을 복수의 청크로 분할하고 분할된 각 청크에 대한 업로드 링크를 생성한 후 상기 각 청크를 클라우드 스토리지(210)로 한번에 업로드하게 된다. 이 경우, 앞서 살펴본 제1 실시예와 비교하여 분할된 각 청크에 대한 업로드 링크를 요청하고 수신하는 단계가 생략되므로 업로드 속도가 대폭 향상될 수 있다. 또한, 프록시 서버(207)와 클라우드 스토리지(210)는 동일한 클라우드 컴퓨팅 환경(206) 내에 존재하므로, 클라이언트(202)가 인터넷, 와이파이 네트워크 등과 같은 네트워크(204)를 통해 각 청크를 클라우드 스토리지(210)로 업로드하는 경우에 비해 프록시 서버(207)가 상기 클라우드 컴퓨팅 환경(206)을 통해 각 청크를 클라우드 스토리지(210)로 업로드하는 것이 업로드 속도가 훨씬 빠르다. 나아가, 프록시 서버(207)에서 업로드 대상파일을 복수의 청크로 분할한 후 분할된 각 청크에 대한 업로드 링크를 직접 생성하므로, 업로드 과정 중 에러가 발생되더라도 에러가 발생된 청크에 대해서만 재업로드를 수행함으로써 네트워크 장애(network interruption) 등에 의한 에러 발생에 따른 업로드 지연을 최소화할 수 있다.
또한, 프록시 서버(207)는 업로드 대상파일의 메타 데이터를 추출하고, 클라우드 워커(212)에서 업로드 대상파일의 후처리(post-processing)를 수행할 수 있도록 상기 복수의 청크 각각에 대한 업로드 링크 및 상기 메타 데이터를 포함하는 업로드 완료 메시지를 백엔드 서버(208)로 전송할 수 있다.
백엔드 서버(208)는 클라우드 서비스를 제공함에 있어서 데이터의 로그(log) 기록/관리 등을 포함하는 데이터베이스(DB) 관리, 사용자 인증 등을 수행하는 장치로서, 클라우드 컴퓨팅 환경(206) 내 존재할 수 있다. 백엔드 서버(208)는 프록시 서버(207)로부터 상기 복수의 청크 각각에 대한 업로드 링크 및 상기 메타 데이터를 포함하는 업로드 완료 메시지를 수신하고, 상기 업로드 대상파일의 후처리를 위한 테스크를 클라이언트 워크(112)로 요청할 수 있다. 이때, 상기 테스크의 요청에는 상기 업로드 완료 메시지가 포함될 수 있다. 또한, 백엔드 서버(208)는 상기 업로드 완료 메시지에 대한 확인 메시지를 프록시 서버(207)로 전송할 수 있으며, 이에 따라 프록시 서버(207)는 상기 업로드 요청 메시지에 대한 응답 메시지를 클라이언트(202)로 전송할 수 있다.
클라우드 스토리지(210)는 업로드 대상파일이 저장되는 저장소로서, 클라우드 컴퓨팅 환경(206) 내 존재할 수 있다. 상술한 바와 같이, 프록시 서버(207)는 업로드 대상파일을 복수의 청크로 분할하고, 분할된 각 청크에 대한 업로드 링크를 생성한 후 상기 각 청크를 클라우드 스토리지(210)로 한번에 업로드할 수 있다. 이러한 파일 업로드는 동일한 클라우드 컴퓨팅 환경(206) 내에서 이루어지므로, 클라이언트(202)가 인터넷, 와이파이 네트워크 등과 같은 네트워크(204)를 통해 각 청크를 클라우드 스토리지(210)로 업로드하는 경우와 비교하여 매우 빠르게 수행될 수 있다.
클라우드 워커(212)는 업로드 대상파일의 후처리를 수행하는 모듈로서, 클라우드 컴퓨팅 환경(206) 내 존재할 수 있다. 클라우드 워커(212)는 프록시 서버(207)로부터 상기 업로드 대상파일의 후처리 요청을 수신함에 따라 클라우드 스토리지(210)에 접속하여 업로드 대상파일을 획득할 수 있다. 이후, 클라우드 워커(112)는 상기 업로드 대상파일에 대한 아이콘(icon) 생성, 상기 업로드 대상파일에 대한 프리뷰(preview) 생성, 상기 업로드 대상파일에 대한 섬네일(thumbnail) 생성, 상기 업로드 대상파일에 대한 트랜스코딩(transcoding), 상기 업로드 대상파일에 포함된 얼굴 인식(face recognition) 등과 같은 각종 후처리를 수행할 수 있다. 또한, 클라우드 워커(112)는 상기 후처리를 통해 생성된 아이콘, 프리뷰 등을 클라우드 스토리지(110)에 업로드할 수 있다.
상술한 바와 같이, 상기 테스크의 요청에는 업로드 대상파일의 각 청크에 대한 업로드 링크 및 업로드 대상파일의 메타 데이터가 포함될 수 있다. 이에 따라, 클라우드 워커(212)는 상기 메타 데이터를 이용하여 상기 업로드 대상파일의 후처리를 보다 빠르게 수행할 수 있다. 나아가, 프록시 서버(207)에서 업로드 대상파일의 메타 데이터가 추출되어 백엔드 서버(208)를 통해 클라우드 워커(212)로 전달되므로, 클라이언트(202)는 상기 메타 데이터의 추출 이후 프록시 서버(207)로부터 상기 업로드 요청 메시지에 대한 응답 메시지를 수신할 수 있으며 이에 따라 업로드 대상파일의 후처리가 완료될 때까지 기다릴 필요 없이 새로운 파일에 대한 업로드를 프록시 서버(207)로 요청할 수 있다. 즉, 본 발명의 제2 실시예에 따르면, 업로드 대상파일에 대한 메타 데이터의 추출이 클라우드 워커(212)가 아닌 프록시 서버(207)에서 이루어지므로 새로운 파일에 대한 업로드 지연을 최소화할 수 있으며, 이에 따라 전체 업로드 시간을 단축시킬 수 있다.
도 4는 본 발명의 제2 실시예에 따른 프록시 서버(207)의 상세 구성을 나타낸 블록도이다. 도 4에 도시된 바와 같이, 본 발명의 제2 실시예에 따른 프록시 서버(207)는 파일 수신부(302), 파일 처리부(304), 메타 데이터 추출부(306) 및 업로드 완료 처리부(308)를 포함한다.
파일 수신부(302)는 클라이언트(202)로부터 업로드 대상파일을 포함하는 업로드 요청 메시지를 수신한다. 후술할 바와 같이, 파일 수신부(302)는 상기 업로드 요청 메시지에 대한 응답 메시지가 클라이언트(202)로 전송된 이후에는 상기 업로드 대상파일의 후처리가 완료될 때까지 기다릴 필요 없이 클라이언트(202)로부터 새로운 파일에 대한 업로드 요청 메시지를 수신할 수 있다.
파일 처리부(304)는 상기 업로드 대상파일을 복수의 청크로 분할하며, 분할된 상기 복수의 청크 각각에 대한 인덱싱(indexing) 작업을 수행할 수 있다. 또한, 파일 처리부(304)는 분할된 상기 복수의 청크 각각에 대한 업로드 링크를 생성하며, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 클라우드 스토리지(210)로 업로드한다. 이때, 파일 처리부(304)는 상기 업로드 링크에 따라 상기 복수의 청크 각각을 클라우드 스토리지(210)로 동시에(simultaneously) 업로드할 수 있다. 또한, 상기 복수의 청크 각각에 대한 업로드 과정 중 에러가 발생되는 경우, 파일 처리부(304)는 에러가 발생된 청크에 대해서만 재업로드를 수행할 수 있다.
메타 데이터 추출부(306)는 상기 업로드 대상파일의 메타 데이터를 추출한다. 여기서, 메타 데이터는 예를 들어, 상기 업로드 대상파일의 파일명, 파일 종류 또는 유형, 파일 크기, 분할된 각 청크의 개수, 상기 업로드 대상파일의 생성 시각, 상기 업로드 대상파일을 업로드한 클라이언트(202)의 식별번호 등이 될 수 있다.
업로드 완료 처리부(308)는 클라우드 워커(212)에서 업로드 대상파일의 후처리를 수행할 수 있도록 상기 복수의 청크 각각에 대한 업로드 링크 및 상기 메타 데이터를 포함하는 업로드 완료 메시지를 백엔드 서버(208)를 통해 클라우드 워커(212)로 전달한다. 상술한 바와 같이, 상기 업로드 대상파일의 후처리는 클라우드 워커(212)에서 상기 업로드 링크 및 상기 메타 데이터를 이용하여 클라우드 스토리지(210)로부터 상기 업로드 대상파일을 획득함으로써 수행될 수 있다. 상기 후처리는 메타 데이터만을 이용하는 후처리, 상기 업로드 대상파일을 이용하는 후처리, 상기 메타 데이터와 상기 업로드 대상파일을 동시에 이용하는 후처리를 포함할 수 있다. 이와 같이, 상기 메타 데이터가 프록시 서버(207)에서 미리 추출되어 클라우드 워커(212)로 전달되는 경우 상술한 업로드 대상파일에 대한 각종 후처리가 보다 빠르게 수행될 수 있다.
또한, 업로드 완료 처리부(308)는 백엔드 서버(208)로부터 상기 업로드 완료 메시지에 대한 확인 메시지를 수신함에 따라 상기 업로드 요청 메시지에 대한 응답 메시지를 클라이언트(202)로 전송할 수 있다. 상술한 바와 같이, 클라이언트(202)는 상기 업로드 요청 메시지에 대한 응답 메시지를 수신한 이후에는 새로운 파일에 대한 업로드 요청 메시지를 파일 수신부(302)로 전송하여 새로운 파일에 대한 업로드를 개시할 수 있다.
도 5는 본 발명의 제2 실시예에 따른 파일 업로드 방법을 설명하기 위한 흐름도이다. 이하에서 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
먼저, 클라이언트(202)는 업로드 대상파일을 포함하는 업로드 요청 메시지를 생성하여 프록시 서버(107)로 전송한다(S102).
다음으로, 프록시 서버(207)는 상기 업로드 대상파일을 복수의 청크로 분할하며, 분할된 상기 복수의 청크 각각에 대한 업로드 링크를 생성하며, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 클라우드 스토리지(210)로 업로드한다(S104). 이때, 프록시 서버(207)는 상기 업로드 링크에 따라 상기 복수의 청크 각각을 클라우드 스토리지(210)로 동시에(simultaneously) 업로드할 수 있다.
다음으로, 프록시 서버(207)는 상기 복수의 청크 각각에 대한 업로드 확인 메시지를 클라우드 스토리지(210)로부터 수신한다(S106).
다음으로, 프록시 서버(207)는 상기 업로드 대상파일의 메타 데이터를 추출한다(S108).
다음으로, 프록시 서버(207)는 클라우드 워커(212)에서 업로드 대상파일의 후처리를 수행할 수 있도록 상기 복수의 청크 각각에 대한 업로드 링크 및 상기 메타 데이터를 포함하는 업로드 완료 메시지를 백엔드 서버(208)로 전송한다(S110).
다음으로, 백엔드 서버(208)는 상기 업로드 대상파일의 후처리를 위한 테스크를 클라이언트 워크(112)로 요청한다(S112). 이때, 상기 테스크의 요청에는 상기 업로드 완료 메시지가 포함될 수 있다.
다음으로, 백엔드 서버(208)는 상기 업로드 완료 메시지에 대한 확인 메시지를 프록시 서버(207)로 전송한다(S114).
다음으로, 프록시 서버(207)는 상기 업로드 요청 메시지에 대한 응답 메시지를 클라이언트(202)로 전송한다(S116).
다음으로, 클라우드 워커(212)는 업로드 대상파일을 클라우드 스토리지(210)로 요청한다(S118). 클라우드 워커(212)는 S112 단계에서 수신된 테스크 요청에 포함된 각 청크에 대한 업로드 링크 및 업로드 대상파일의 메타 데이터를 참조하여 업로드 대상파일을 클라우드 스토리지(210)로 요청할 수 있다.
다음으로, 클라우드 워커(212)는 클라우드 스토리지(210)로부터 업로드 대상파일을 획득한다(S120).
다음으로, 클라우드 워커(212)는 상기 업로드 대상파일에 대한 후처리를 수행한다(S122). 이때, 클라우드 워커(212)가 상기 후처리를 수행하기 전 상기 업로드 대상파일에 대한 메타 데이터를 이미 가지고 있으므로 상기 후처리를 보다 빠르게 수행할 수 있다. 상기 후처리는 예를 들어, 상기 업로드 대상파일에 대한 아이콘(icon) 생성, 상기 업로드 대상파일에 대한 프리뷰(preview) 생성, 상기 업로드 대상파일에 대한 섬네일(thumbnail) 생성, 상기 업로드 대상파일에 대한 트랜스코딩(transcoding), 상기 업로드 대상파일에 포함된 얼굴 인식(face recognition) 등을 포함할 수 있다.
마지막으로, 클라우드 워커(212)는 상기 후처리를 통해 생성된 아이콘, 프리뷰 등을 클라우드 스토리지(210)에 업로드한다(S124).
이와 같이, 본 발명의 제2 실시예에 따르면, 앞서 살펴본 제1 실시예와 비교하여 클라이언트(202)가 분할된 각 청크에 대한 업로드 링크를 백엔드 서버(208)로 요청하고 이를 백엔드 서버(208)로부터 수신하는 대신 하나의 HTTP 요청(즉, S102 단계에서의 업로드 요청)만을 프록시 서버(207)로 전달함으로써 업로드 대상파일의 업로드가 개시된다는 점에서 통신 속도가 상대적으로 느린 네트워크(204)를 통한 트랜잭션을 최소화할 수 있으며 이에 따라 업로드 속도를 향상시킬 수 있다.
또한, 본 발명의 제2 실시예에 따르면, 프록시 서버(207)가 클라우드 컴퓨팅 환경(206)을 통해 업로드 대상파일의 각 청크를 클라우드 스토리지(210)로 동시에 업로드함으로써, 클라이언트(202)가 인터넷, 와이파이 네트워크 등과 같은 네트워크(204)를 통해 각 청크를 클라우드 스토리지(210)로 업로드하는 경우에 비해 업로드 속도가 대폭 향상될 수 있다.
또한, 본 발명의 제2 실시예에 따르면, 프록시 서버(207)에서 업로드 대상파일을 복수의 청크로 분할한 후 분할된 각 청크에 대한 업로드 링크를 직접 생성하므로, 업로드 과정 중 에러가 발생되더라도 에러가 발생된 청크에 대해서만 재업로드를 수행함으로써 네트워크 장애(network interruption) 등에 의한 에러 발생에 따른 업로드 지연을 최소화할 수 있다.
나아가, 본 발명의 제2 실시예에 따르면, 프록시 서버(207)에서 업로드 대상파일의 메타 데이터가 추출되어 백엔드 서버(208)를 통해 클라우드 워커(212)로 전달되므로, 클라이언트(202)는 상기 메타 데이터의 추출 이후 프록시 서버(207)로부터 상기 업로드 요청 메시지에 대한 응답 메시지를 보다 빠르게 수신할 수 있으며 이에 따라 업로드 대상파일의 후처리가 완료될 때까지 기다릴 필요 없이 새로운 파일에 대한 업로드를 프록시 서버(207)로 요청할 수 있다.
도 6은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 파일 업로드 시스템(100, 200), 또는 파일 업로드 시스템(100, 200)에 포함되는 하나 이상의 컴포넌트일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100, 200 : 파일 업로드 시스템
102, 202 : 클라이언트
104, 204 : 네트워크
106, 206 : 클라우드 컴퓨팅 환경
108, 208 : 백엔드 서버
110, 210 : 클라우드 스토리지
112, 212 : 클라우드 워커
207 : 프록시 서버
302 : 파일 수신부
304 : 파일 처리부
306 : 메타 데이터 추출부
308 : 업로드 완료 처리부

Claims (10)

  1. 클라이언트와 네트워크를 통해 연결되고, 상기 네트워크보다 통신 속도가 빠른 클라우드 컴퓨팅 환경(cloud computing environment)을 통해 클라우드 스토리지, 백엔드 서버(backend server) 및 클라우드 워커(cloud worker)와 각각 연결되는 프록시 서버(proxy server)로서,
    상기 클라이언트로부터 업로드 대상파일을 포함하는 업로드 요청 메시지를 수신하는 파일 수신부;
    상기 업로드 대상파일을 복수의 청크(chunk)로 분할하며, 분할된 상기 복수의 청크 각각에 대한 업로드 링크(upload link)를 생성하며, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 상기 클라우드 스토리지로 업로드하는 파일 처리부;
    상기 업로드 대상파일의 메타 데이터를 추출하는 메타 데이터 추출부; 및
    상기 클라우드 워커에서 업로드 대상파일의 후처리(post-processing)를 수행할 수 있도록 상기 복수의 청크 각각에 대한 업로드 링크 및 상기 메타 데이터를 포함하는 업로드 완료 메시지를 상기 백엔드 서버를 통해 상기 클라우드 워커로 전달하고, 상기 백엔드 서버로부터 상기 업로드 완료 메시지에 대한 확인 메시지를 수신함에 따라 상기 업로드 요청 메시지에 대한 응답 메시지를 상기 클라이언트로 전송하는 업로드 완료 처리부를 포함하며,
    상기 업로드 요청 메시지에 대한 응답 메시지는, 상기 메타 데이터 추출부에서 상기 메타 데이터가 추출된 이후 상기 클라이언트로 전송되며,
    상기 파일 수신부는, 상기 업로드 요청 메시지에 대한 응답 메시지가 상기 클라이언트로 전송된 이후에는 상기 업로드 대상파일의 후처리가 완료될 때까지 기다릴 필요 없이 상기 클라이언트로부터 새로운 파일에 대한 업로드 요청 메시지를 수신하고,
    상기 업로드 대상파일의 후처리는, 상기 업로드 대상파일에 대한 아이콘(icon) 생성, 상기 업로드 대상파일에 대한 프리뷰(preview) 생성, 상기 업로드 대상파일에 대한 섬네일(thumbnail) 생성, 상기 업로드 대상파일에 대한 트랜스코딩(transcoding) 및 상기 업로드 대상파일에 포함된 얼굴 인식(face recognition) 중 하나 이상을 포함하며,
    상기 업로드 대상파일의 후처리는, 상기 클라우드 워커에서 상기 업로드 링크 및 상기 메타 데이터를 이용하여 상기 클라우드 스토리지로부터 상기 업로드 대상파일을 획득함으로써 수행되는, 프록시 서버.
  2. 청구항 1에 있어서,
    상기 파일 처리부는, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 상기 클라우드 스토리지로 동시에(simultaneously) 업로드하며, 상기 복수의 청크 각각에 대한 업로드 과정 중 에러가 발생되는 경우 에러가 발생된 청크에 대해서만 재업로드를 수행하는, 프록시 서버.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 클라이언트와 네트워크를 통해 연결되고, 상기 네트워크보다 통신 속도가 빠른 클라우드 컴퓨팅 환경(cloud computing environment)을 통해 클라우드 스토리지, 백엔드 서버(backend server) 및 클라우드 워커(cloud worker)와 각각 연결되는 프록시 서버(proxy server)에서 수행되는 파일 업로드 방법으로서,
    파일 수신부에서, 상기 클라이언트로부터 업로드 대상파일을 포함하는 업로드 요청 메시지를 수신하는 단계;
    파일 처리부에서, 상기 업로드 대상파일을 복수의 청크(chunk)로 분할하는 단계;
    상기 파일 처리부에서, 분할된 상기 복수의 청크 각각에 대한 업로드 링크(upload link)를 생성하는 단계;
    상기 파일 처리부에서, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 상기 클라우드 스토리지로 업로드하는 단계;
    메타 데이터 추출부에서, 상기 업로드 대상파일의 메타 데이터를 추출하는 단계;
    업로드 완료 처리부에서, 상기 클라우드 워커에서 업로드 대상파일의 후처리(post-processing)를 수행할 수 있도록 상기 복수의 청크 각각에 대한 업로드 링크 및 상기 메타 데이터를 포함하는 업로드 완료 메시지를 상기 백엔드 서버를 통해 상기 클라우드 워커로 전달하는 단계;
    상기 업로드 완료 처리부에서, 상기 백엔드 서버로부터 상기 업로드 완료 메시지에 대한 확인 메시지를 수신함에 따라 상기 업로드 요청 메시지에 대한 응답 메시지를 상기 클라이언트로 전송하는 단계; 및
    상기 파일 수신부에서, 상기 업로드 대상파일의 후처리가 완료될 때까지 기다릴 필요 없이 상기 클라이언트로부터 새로운 파일에 대한 업로드 요청 메시지를 수신하는 단계를 포함하며,
    상기 업로드 요청 메시지에 대한 응답 메시지를 상기 클라이언트로 전송하는 단계는, 상기 메타 데이터 추출부에서 상기 메타 데이터가 추출된 이후 수행되며,
    상기 업로드 대상파일의 후처리는, 상기 업로드 대상파일에 대한 아이콘(icon) 생성, 상기 업로드 대상파일에 대한 프리뷰(preview) 생성, 상기 업로드 대상파일에 대한 섬네일(thumbnail) 생성, 상기 업로드 대상파일에 대한 트랜스코딩(transcoding) 및 상기 업로드 대상파일에 포함된 얼굴 인식(face recognition) 중 하나 이상을 포함하며,
    상기 업로드 대상파일의 후처리는, 상기 클라우드 워커에서 상기 업로드 링크 및 상기 메타 데이터를 이용하여상기 클라우드 스토리지로부터 상기 업로드 대상파일을 획득함으로써 수행되는, 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법.
  7. 청구항 6에 있어서,
    상기 복수의 청크 각각을 상기 클라우드 스토리지로 업로드하는 단계는, 상기 업로드 링크에 따라 상기 복수의 청크 각각을 상기 클라우드 스토리지로 동시에(simultaneously) 업로드하며, 상기 복수의 청크 각각에 대한 업로드 과정 중 에러가 발생되는 경우 에러가 발생된 청크에 대해서만 재업로드를 수행하는, 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법.
  8. 삭제
  9. 삭제
  10. 삭제
KR1020210000182A 2021-01-04 2021-01-04 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버 KR102246581B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210000182A KR102246581B1 (ko) 2021-01-04 2021-01-04 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버
US17/472,835 US11368516B1 (en) 2021-01-04 2021-09-13 Method for uploading file via cloud computing environment, and proxy server for executing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210000182A KR102246581B1 (ko) 2021-01-04 2021-01-04 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버

Publications (1)

Publication Number Publication Date
KR102246581B1 true KR102246581B1 (ko) 2021-04-29

Family

ID=75728472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210000182A KR102246581B1 (ko) 2021-01-04 2021-01-04 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버

Country Status (2)

Country Link
US (1) US11368516B1 (ko)
KR (1) KR102246581B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023149968A1 (en) 2022-02-03 2023-08-10 Analytics Hq, Llc Asynchronous distributed data transfer system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090097165A (ko) * 2007-01-12 2009-09-15 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 구현 방법, 데이터 파일 업로드 장치 및 컴퓨터 프로그램 제품
KR20150047684A (ko) * 2013-10-24 2015-05-06 에스케이플래닛 주식회사 클라우드 컴퓨팅 기반의 컨텐츠 관리 방법, 이를 위한 시스템 및 장치
KR101667026B1 (ko) 2014-08-22 2016-10-20 김지필 파일 자동업로드 방법
KR20170028621A (ko) * 2015-09-04 2017-03-14 삼성전자주식회사 다수 개의 무선 억세스 인터페이스들을 지원하는 이동 통신 시스템에서 데이터 업로드 장치 및 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083618B2 (en) * 2012-08-21 2018-09-25 Jacob UKELSON System and method for crowd sourced multi-media lecture capture, sharing and playback
US20140136733A1 (en) * 2012-11-13 2014-05-15 UmiCam Incorporated System and method for the collaborative recording, uploading and sharing of multimedia content over a computer network
RU2609087C2 (ru) * 2014-04-09 2017-01-30 Общество С Ограниченной Ответственностью "Яндекс" Способ определения местоположения пользователя и сервер, используемый в нем
US11108920B2 (en) * 2019-10-03 2021-08-31 Starfish Technologies LLC Cloud-based scanning systems and remote image processing methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090097165A (ko) * 2007-01-12 2009-09-15 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 구현 방법, 데이터 파일 업로드 장치 및 컴퓨터 프로그램 제품
KR20150047684A (ko) * 2013-10-24 2015-05-06 에스케이플래닛 주식회사 클라우드 컴퓨팅 기반의 컨텐츠 관리 방법, 이를 위한 시스템 및 장치
KR101667026B1 (ko) 2014-08-22 2016-10-20 김지필 파일 자동업로드 방법
KR20170028621A (ko) * 2015-09-04 2017-03-14 삼성전자주식회사 다수 개의 무선 억세스 인터페이스들을 지원하는 이동 통신 시스템에서 데이터 업로드 장치 및 방법

Also Published As

Publication number Publication date
US11368516B1 (en) 2022-06-21
US20220217197A1 (en) 2022-07-07

Similar Documents

Publication Publication Date Title
US11354080B2 (en) Relay apparatus, information processing apparatus, information processing system, and recording medium storing information processing program
US10637953B2 (en) Apparatus, system and method for cache management
JP6439370B2 (ja) 情報処理システム、情報処理方法、情報処理装置及びプログラム
US10445489B2 (en) Information processing system, information processing apparatus, and method for processing information
US9128642B2 (en) System and control method
JP6474367B2 (ja) 分散システム用ファイル処理方法、および装置
JP2017528795A (ja) コンテンツアイテムの共有のための未登録ユーザアカウントの生成
US9917915B2 (en) Information processing system, information processing apparatus, terminal apparatus and information transmission method for ordered transmission of stored information to be synchronously displayed at terminal apparatuses
US8769041B2 (en) Document generation apparatus, document generation system, document upload method, and storage medium
US20200153889A1 (en) Method for uploading and downloading file, and server for executing the same
US9164707B2 (en) Server system, method for controlling server system, and storage medium
US20140289288A1 (en) Relay apparatus, system, and non-transitory computer readable medium
KR102246581B1 (ko) 클라우드 컴퓨팅 환경을 통한 파일 업로드 방법 및 이를 수행하기 위한 프록시 서버
CN115150392A (zh) 远程文件复制方法、系统、计算设备及存储介质
US20210176368A1 (en) Cloud-based document management system
US8902462B1 (en) System and control method
US20130110979A1 (en) Remote access from mobile devices
US20140365430A1 (en) Information processing apparatus, system, and control method
CN112149392A (zh) 一种富文本编辑方法和装置
EP3598697B1 (en) Content deployment method and distribution controller
US9602562B2 (en) Terminal apparatus, information processing system and information processing method
US11848978B2 (en) System and method for remote support service
US11184423B2 (en) Offloading upload processing of a file in a distributed system using a key that includes a hash created using attribute(s) of a requestor and/or the file
JP2013106193A (ja) システム、およびその制御方法。
JP2022167830A (ja) アクセスのための装置、方法及びコンピュータ可読媒体

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant