본문으로 건너뛰기

이해하기

소개

리소스 서버는

Tus 프로토콜은 HTTP를 기반으로 하는 재개 가능한 파일 업로드를 위한 오픈 프로토콜입니다. 클라이언트와 서버 간에 파일을 업로드할 수 있는 표준화된 방법을 제공합니다. 이를 통해 파일 업로드 프로세스가 더 안정적이고 효율적이며 확장성이 뛰어납니다.

업로드된 리소스는 빠르고 안정적인 콘텐츠 전송 네트워크(CDN)인 AWS Cloud Front를 사용하여 전 세계에 배포됩니다. 리소스 서버는 리소스를 URI를 통해 식별하고, 전 세계에 배포된 리소스의 URI를 전달합니다.

리소스 서버는 URI 및 AWS Cloud Front를 결합하여 웹 사이트 및 애플리케이션에 대한 액세스 속도를 높일 수 있습니다. CloudFront는 사용자와 가까운 서버에서 콘텐츠를 제공하여 지연 시간을 줄입니다. URI는 Cloud Front에서 콘텐츠를 식별하는 데 사용되어 콘텐츠에 대한 액세스를 제어하는 데 사용됩니다.

리소스 서버는 다음과 같은 다양한 역할을 합니다.

  • 파일 업로드: HTTP POST 요청 또는 웹 인터페이스를 통해 파일 업로드를 허용합니다.
  • 파일 저장: 파일 시스템, 데이터베이스 또는 클라우드 스토리지 서비스를 사용하여 파일을 저장합니다.
  • 파일 액세스: HTTP GET 요청 또는 웹 인터페이스를 통해 파일에 대한 엑세스를 허용합니다.
  • (WIP)파일 관리: 파일 생성, 수정, 삭제 및 이동을 통해 파일을 관리합니다.

이를 수행하기 위해서 리소스 서버는 Container를 통해 Resource를 관리합니다.

URI

리소스 서버는 다음과 같이 URI를 정의합니다.

scheme:[//[user[:password]@]host[:port]][/path][/sub-path][?query]

  • scheme: 사용할 프로토콜
  • user/password: 데이터에 접근하기 위한 사용자/패스워드
  • host/port: 접근할 대상의 호스트명/포트
  • path: 접근할 대상의 경로 정보
  • sub-path: 메인 리소스 내에 존재하는 서브 리소스에 접근하기 위한 식별 정보
  • query: 접근할 대상에 전달하는 추가 정보

Note: URI, URL, URN

URI, URL, URN은 모두 웹 리소스를 식별하는 데 사용되는 식별자입니다. URI는 가장 포괄적인 용어이며 URL과 URN은 URI의 하위 집합입니다.

URI(Uniform Resource Identifier)는 웹 리소스를 식별하는 데 사용되는 식별자입니다. URI는 프로토콜, 호스트 이름, 경로 및 파일 이름을 포함할 수 있습니다.

URL(Uniform Resource Locator)은 URI의 한 유형입니다. URL은 웹 리소스의 위치를 식별합니다. 예를 들어, https://www.maxverse.io/ 의 URL은 웹 사이트 Maxverse의 위치를 식별합니다.

URN(Uniform Resource Name)은 URI의 한 유형입니다. URN은 웹 리소스의 이름을 식별합니다. 예를 들어, ISBN(International Standard Book Number)은 책의 URN입니다.

Container

컨테이너는 리소스 서버의 가장 중요한 부분입니다. 서로 다른 리소스를 연결하고, 저장하는 데이터 모델입니다. 컨테이너는 리소스를 캡슐화하고 격리하는 데 사용되므로 데이터를 안전하고 효율적으로 관리할 수 있습니다.

컨테이너는 다음과 같은 다양한 역할을 합니다.

  • 리소스를 분산 저장하고 관리하는 데 사용됩니다.
  • 리소스 쉽게 확장하고 확장할 수 있도록 합니다.
  • 리소스에 대한 액세스를 제어하고 보호하는 데 사용됩니다.
  • (WIP)리소스를 쉽게 이동하고 배포할 수 있도록 합니다.

Resource

업로드된 리소스는 하나의 객체로 관리됩니다. 리소스는 URI로 식별되며, 이는 리소스에 대한 고유한 식별자입니다.

리소스는 다음과 같은 다양한 역할을 합니다.

  • Tus 프로토콜을 통해 용량에 관계없이 재개 가능한 형태로 업로드 할 수 있습니다.
  • CDN을 사용하여 가장 가까운 서버에서 다운 받을 수 있습니다.
  • 이름, 속성 및 관계와 같은 다양한 속성으로 설명할 수 있습니다.

Sequence Diagram

Step1

POST /{Container}/ API로 컨테이너 생성한다.

Step2

TUS Protocol을 이용하여 리소스를 업로드 한다.

  1. POST /{Container} -> 리소스 생성 요청 후 resource uuid 리턴 값 확인
  2. PATCH /{Container}/{ResourceUuid} -> 리소스 버퍼 업로드 반복
  3. GET /{Container}/{ResourceUuid} -> URI 로 리소스 확인

Step3

GET /{Container}/ 컨테이너 호출로 업로드 된 리소스 리스트 확인한다.