개요
두 번째 보고서는 “Storage Service” 항목의 “S3(Simple Storage Service)”와 “OSS(Object Storage Service)” 에 대하여 비교를 진행한다.
OSS(Object Storage Service)가 S3(Simple Storage Service) 와 비교해서는 기본적인 기능은 구비되어 있으나, 향후 개선되어야 할것으로 보인다.
“Storage Service” 항목은 기능적으로 “Bucket” 과 “Object”로 기능을 분류 하고 비교해 보려 한다. 우선적으로 Bucket 부분을 S3(Simple Storage Service)와 OSS(Object Storage Service)로 나눠 비교해 본다.(엄밀히 말하면 맞지 않을 수 있으나 Bucket 은 서비스 단위, Object 는 file로 생각하면 이해하기가 쉽다.)
위 표는 S3(AWS)와 OSS(AliCloud) Bucket의 기능을 콘솔 상(콘솔에서 보이는)의 최상위 Category로 각각 정리 하여 비교 한 것이다. 해당 표를 참고하면 S3(AWS)가 OSS(AliCloud) 보다 많은 기능을 제공하고 있으며 실제 하위 Category 의 기능들을 봐도 S3(AWS)가 OSS(AliCloud) 보다 지원하는 범위가 넓다.
OSS(AliCloud) 최상위 Category)로 분류한 표(우측)을 보면 Anti-leech, CORS, Domain Management, Mirror 가 보이며 S3(AWS) 에서는 하위 기능에 포함 되어 있다.
각 항목의 이해를 돕기 위해 아래 표에 관련 기능에 대하여 간략하게 정리 하였다.
Permission 비교
S3(AWS)의 Permission(권한)은 1) User 기반, 2) Bucket Policy, 3) CORS 설정으로 나뉜다. 1) User 기반의 경우는 “Everyone, Log Delivery, Any Authenticated AWS User, Me” 설정이 가능하고, 2) Bucket Policy 는 S3(AWS)의 권한 설정의 핵심이며, 너무 광범위 해서 모두 다루기가 어려우나 이해를 돕기 위해 아래 표로 간략하게 정리 하였다.
위 표의 4가지 항목(Resource, Principal, Permission, Conditions)을 조합하여 권한설정이 가능하며, 설정 가능한 경우의 수는 단순하게 곱하기만 해도 16,192 이다. 또한 복잡할 수 있는 Policy 설정을 쉽게 할 수 있도록 generator(http://awspolicygen.s3.amazonaws.com/policygen.html) 를 제공 하고 있다. 보다 자세한 사항을 알고자 한다면 Bucket 정책 문서(https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/example-bucket-policies.html)를 참고 하면 된다. 3) CORS(Cross-Origin Resource Sharing)는 다른 도메인(Cross Domain)간 Resource 사용을 허용해주는 것을 말하며 설정 가능하다.
이에 비해OSS(AliCloud)는 콘솔 상에서 “1) Private, 2) Public Read, 3) Public”으로 설정 가능하며 하위 카테고리는 없고 셋 중에 하나로 설정 하여야 한다. 물론 OSS(AliCloud) 도 S3(AWS)의 Bucket Policy 와 유사한 기능이 있으나 User 기반으로 권한을 발급하는 형태이며 RAM User 라고 불린다. 그러나 아쉽게도 한국에서 사용시(영어포탈-icp 미인증)에 RAM User는 사용할 수 없었다. RAM User를 사용하기 위해서는 MFA(Multi-Factor-Authentication) 설정을 하여야 하는데 가이드상의 위치에 해당 메뉴(MFA)가 없었다. 참고로 아래 표에 S3(AWS)와 OSS(AliCloud)의 Permission 항목을 표로 비교 하였다.
Web Hosting 비교
S3(AWS)는 1) “Website hosting”, 2) “Redirect all requests to another host name” 로 나눌 수 있다. 1) “Website hosting”의 경우 index 와 error 페이지를 설정할 수 있는 부분과 redirection rule(Rewrite 와 유사한) 설정할 수 있는 부분으로 나뉜다. Redirection rule 은 흔히 알고 있는 rewrite rule 이라고 생각하면 쉽다. 특정 패턴으로 들어오는 요청을 다른 곳으로 넘겨(redirection) 시키는 것이다. “http://aaa.com/one” 으로 요청이 오면 “http://aaa.com/two” 로 보내라”라는 형태이다. 2) “redirect all requests to another host name” 은 모든 요청을 특정 host name(domain)으로 redirection 시키는 기능이다.
OSS(AliCloud)의 경우는 index page 와 error page 설정하는 부분만 존재 한다. S3(AWS)의 Redirection 의 기능들은 최상위 카테고리(mirror 라는 이름의 항목으로)로 별도 존재 한다.
Logging 비교
Logging 은 Bucket에 Access 한 내역을 기록 하는 것으로 S3(AWS), OSS(AliCloud) 이 동일해 보인다. Bucket 명 과 Prefix(도메인 뒤에 바로 오는 URI 로 폴더 명을 연상)만 지정하면 된다.
Event 비교
S3(AWS)에 만 존재 하는 기능으로 특정 액션이 발생하면 alarm(SNS, SQS 연동)을 Mail 과 SMS(문자)로 보내주는 기능이다. 모든 액션(Event)을 지원하지는 않고 지정된 액션(Event)만 지원되며 해당 내역은 아래 표를 참고 한다.
Versioning 비교
S3(AWS)에 만 존재 하는 기능으로 컨텐츠(Contents)를 보호하고, 복구 하는데 사용된다. 해당 Object(files)를 여러 개 가지고 있는 것으로 ID(number)로 구분되어 관리 된다. 갑작스런(예기치 않은) 문제로 삭제된 파일들을 복구할 때 유용하며 해당 컨텐츠(Contents)의 변경 이력 확인도 가능하다.
Life Cycle 비교
Life Cycle 은 Object(files)의 생명주기(Create -> 삭제에 이르는)를 설정하는 기능이며, S3(AWS)와 OSS(AliCloud) 모두 지원하나 S3(AWS)가 보다 다양한 옵션을 지원한다. S3(AWS)가 OSS(AliCloud) 보다 옵션을 다양한 것은 지원하는 Storage Class 가 추가로 존재하기 때문이다. 해당 Storage Class를 비교(설명)한 표는 아래와 같다.
S3(AWS) 와 OSS(AliCloud)의 지원되는 Storage Class 의 차이는 OSS(AliCloud)의 Life Cycle의 설정 지원 다양성에 제약을 받는다. S3(AWS)는 위 4가지 Storage Class 중 “STANDARD_IA” 와 “GLACIA” 에 대한 추가적인 옵션을 제공하며 다중 선택이 가능하다. 아래 표에 지원되는 Life Cycle 옵션을 정리 하였다.
Life Cycle은 기본적으로 생성 후 지난 일(day)수로 설정하며 S3(AWS)의 경우 옵션을 다중으로 선택하여 스케줄 가능 하다. 지정 지난 일(day)수의 크기로 Delete -> Transition -> Archive 형태로 전환이 가능하다.
Cross-Region Replication 비교
Cross-Region Replication은 물리적으로 떨어져 있는 다른 Region에 동일하게 Object(files)가 유지되도록 복제해주는 서비스며, S3(AWS) 와 OSS(AliCloud) 의 Cross-Region Replication 기능은 유사하나 다양성(선택의 폭)은 OSS(AliCloud)가 부족하다. 특히 대부분의 지역을 지원하는 S3(AWS)에 비해 2개 지역(중국 내 – Beijing, shanghai)만 지원하는 OSS(AliCloud)에 대해 아쉬움이 남는다. 또한, 보안(권한제어 측면) 또한 지원이 아쉽다.
Tag 비교
S3(AWS)에 만 있는 기능으로 Tag 설정을 해 두면 비용 리포트(report)에서 쉽게 비용 내용을 확인 할 수 있다. 이 부분은 Storage Service 의 기능 항목으로 보이지 않음으로 향후 필요 시 상세한 내용을 전달 할 예정이다.
Request Pay 비교
S3(AWS)에 만 있는 기능으로 Bucket의 소유자(owner)가 비용을 내는 형태가 아닌 요청자(Requester)가 비용을 내는 설정이다. 해당 기능을 설정(enable) 할 경우 익명 Access는 허용되지 않는다. 요청자(Requester)는 Header(GET, HEAD, POST) 에 x-amz-request-payer 값이 지정되어 있어야 한다. 이에 대한 자세한 내용은 메뉴월(https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html)을 참조 한다.
Transfer Acceleration 비교
S3(AWS)에 만 있는 기능으로 Application 이 S3(AWS)로 빠르게 데이터를 전송하기 위해 새로운 endpoint(URL)을 제공하는 기능이다. 추가적인 비용이 발생한다. AWS에서 speed를 비교할 수 있는 페이지를 제공하고 있다. 콘솔에서 클릭해서 접근 할 수 있으며 Base(AWS에 지정된)에 대한 결과는 아래 경로로 접근하여 확인할 수 있다.
http://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html?region=ap-northeast-2
해당 결과를 보면 Accelerated 전송 속도가 더 느리게 나오는 경우도 있어 신뢰가 간다.
기타(ETC) 비교
추가적으로 S3(AWS) 와 OSS(AliCloud) 에서 모두 지원하나 OSS(AliCloud) 최상위 Category 에 위치해 있는 4가지 1) Anti-leech, 2) CORS, 3) Domain Management, 4) Mirror” 에 대해서 간략하게 정리 해 본다.
CORS 와 Mirror(Redirection)는 위의 내용에서 언급된 것으로 생략하며 1) Anti-Ieech, 2) Domain Management 에 대하여 설명한다. OSS(AliCloud) 에서 1) Anti-Ieech 라 불리는 기능은 referer 를 확인하여 서비스 여부(허락하느냐 차단 하느냐)를 결정하는 설정이다. Referer 은 참조란 의미처럼 해당 파일 혹은 페이지에 대한 요청을 한 도메인(페이지 정보가 포함된 도메인) 정보이다. A.com 도메인에 서비스 중인 A.img 를 B.com 도메인에서 링크를 통해 요청하였을 때 Referer 은 B.com 정보가 남게 된다. 즉, Referer 정보로 접근제어(Access Control)하여 B.com 에서 오는 요청은 거부 할 수 있게 되는 것이다. 해당 기능을 OSS(AliCloud)은 최상위 카테고리에서 설정가능 하며, AWS는 Permission의 Bucket Policy(위의 글에서 언급) 에서 설정 할 수 있다. 2) Domain Management 기능은 기본적으로 제공되는 “amazon.com, AliCloud.com” 외에 사용자가 서비스하고자 하는 Domain이 서비스 되도록 설정하는 것으로 OSS(AliCloud)은 최상위 카테고리에서 도메인을 기재 하여 설정하며, S3(AWS)은 사용자의 도메인과 일치하는 Bucket명으로 설정 한다.
Object(files) 설정의 비교
앞서 살펴 본 기능들처럼, Object(file)에 대한 기능도 S3(AWS)과 OSS(AliCloud) 보다 많은(넓은) 기능을 제공한다. 아래 표는 S3(AWS)와 OSS(AliCloud)의 기능을 정리 해 놓은 것이다. S3(AWS)는 OSS(AliCloud)이 “storage class 와 Encryption” 설정을 제공한다. 앞서 설명된 듯이 Storage Class 는 용도에 따른 가용성 등의 차이 있으며 비용도 달라 선택의 폭이 넓다. Encryption은 AES-256 사용한다. 이에 대한 내용은
https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html 를 참고 한다. 또한 S3(AWS)는 metadata(Set Http Header)는 미리 정의된 6개의 이외에 사용자 지정이 가능하나 OSS(AliCloud)은 6가지 이외에는 지원하지 않는다.
한 가지 AliCloud 에만 있는 기능이 있는데 “Get URL” 이란 기능이다. 이 기능은 권한 설정(Private, Public read, Public read/write)이 private 일 때 필요한 기능으로 해당 컨텐츠를 보기(view)위해서는 URL을 받아 와야 한다. 또한 해당 URL을 허락해 주는 기간도 설정한다. AliCloud은 콘솔상에서 Object를 다운로드 하거나 Open 해서 볼 수 없기(AWS는 있다) 에 나온 고육지책이 아닌가 싶은데 다른 용도로도 사용될 것이다.
비용
AWS(Amazon Web Service)에 비용 계산기가 있는데, AliCloud도 비용 계산기가 존재 한다. 이번 OSS 에서는 비용 계산기를 기반으로 비용을 비교해 보았다. 비용 항목의 차이로 완벽한 비교가 되지는 않겠지만 대략적인 비교는 될 것이다.
AWS(Amazon Web Service) 비용 계산기
http://calculator.s3.amazonaws.com/index.html
AliCloud(Ali Cloud) 비용 계산기
https://intl.AliCloud.com/pricing/cost-calculator/
한 가지 알아야 할 점은 OSS(AliCloud)은 지역(Region)별로 비용이 균일하게 나오나 S3(AWS)은 지역별로 커다란 차이를 보인다. 지역적으로 S3(AWS)보다 저렴한 지역(Region)도 존재 하며 더 비싼 지역도 존재 한다. 이에 서비스 구축 시 확인이 필요 하다.
아래 표는 동일 지역인 “Singapore” 을 기준으로 작성된 표로 OSS(AliCloud)이 보다 저렴(Standard로 비교 시 7.5% 가량) 하다.
결론
OSS(AliCloud)은 기본기능은 갖추고 있다고 보여지나 범위와 깊이가 S3(AWS)에는 미치지 못하는 듯 하면서도 S3(AWS)와 유사하게 기능을 구현하려는 모습이 보인다. 세세한 설정이 필요하지 않다면 기본기능으로 사용에는 큰 문제가 없을 듯 보이나 세세한 설정(사용자 환경에 맞추는)이 필요하다면 충분한 확인이 필요할 것으로 보인다.
위 내용에 대하여 보다 자세한 내용을 궁금하거나 인프라 구축에 필요한 컨설팅 및 서비스가 필요하다면, Bespin Global 홈페이지(https://www.bespinglobal.com/contact/) 에 문의 주시면 컨설팅 및 기술지원 제공이 가능하다.