이해하기
소개
리소스 서버는
Tus 프로토콜업로드된 리소스는 빠르고 안정적인 콘텐츠 전송 네트워크(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을 이용하여 리소스를 업로드 한다.
- POST /{Container} -> 리소스 생성 요청 후 resource uuid 리턴 값 확인
- PATCH /{Container}/{ResourceUuid} -> 리소스 버퍼 업로드 반복
- GET /{Container}/{ResourceUuid} -> URI 로 리소스 확인
Step3
GET /{Container}/ 컨테이너 호출로 업로드 된 리소스 리스트 확인한다.