최상의 답변
S3에 대한 두 가지 오픈 소스 대안을 제안하고 싶지만, 가기 전에 S3가 훨씬 발전했으며 다른 모든 대안을 기억하십시오. 호환되는 API로 S3를 따라 잡으려고 노력하고 있지만 S3를 능가 할 때 아무도 가까이 있지 않습니다.
- Openstack Swift : Swift는 가용성이 높고 분산 된 최종적으로 일관된 개체 / Blob 저장소입니다. 조직은 Swift를 사용하여 많은 데이터를 효율적이고 안전하며 저렴하게 저장할 수 있습니다. 개체와 파일은 데이터 센터의 서버 전체에 분산 된 여러 디스크 드라이브에 기록되며 OpenStack 소프트웨어는 클러스터 전체에서 데이터 복제 및 무결성을 보장합니다. 스토리지 클러스터는 새 서버를 추가하기 만하면 수평 적으로 확장됩니다. 서버 또는 하드 드라이브에 장애가 발생하면 OpenStack은 다른 활성 노드의 콘텐츠를 클러스터의 새 위치로 복제합니다. OpenStack은 소프트웨어 로직을 사용하여 서로 다른 장치에 데이터 복제 및 배포를 보장하기 때문에 저렴한 일반 하드 드라이브 및 서버를 사용할 수 있습니다.
- Ceph : It 단일 분산 컴퓨터 클러스터에 데이터를 저장하고 개체, 블록 및 파일 수준 저장소를위한 인터페이스를 제공하는 개체 저장소 기반의 오픈 소스 저장소 플랫폼입니다. Ceph는 주로 SPOF없이 완전히 배포되고 엑사 바이트 수준으로 확장 할 수있는 것을 목표로합니다. 그리고 무료로 사용 가능
둘 다 오픈 소스이므로 Amazon의 데이터 도난에 대해 걱정하지 않고 사내에 배포 할 수 있습니다.
단점 :
Swift와 Ceph를 모두 설정하는 것은 고통스럽고 전담 엔지니어가 필요합니다. . 그것들을 유지하는 것도 엄청난 일이며 장기적으로 좋은 경험을 얻지 못하면 어려움을 겪게 될 것입니다. 중복 서버가 많거나 50 ~ 500 페타 바이트까지 확장 할 수있는 대규모 스토리지를 사내에 설치하지 않는 한 두 가지 모두 사용하지 않는 것이 좋습니다.
PS : 저는 Openstack입니다. 개발자로서 Swift와 Ceph에서 광범위하게 작업했으며, 일상적인 업무에는 버그 수정, Openstack 클러스터 및 Ceph 유지 관리가 포함됩니다.
Answer
나는 ” S3에 대한 최고의 “대안입니다.
필요한 것이 객체 스토리지뿐이라면 물론 많은 대안이 있습니다. 그러나 S3는 현재 어떤 대안과도 흔하지 않은 기능 (예 : 알림, put / get / overwrite 및 기타 이벤트에서 Lambda 함수를 실행하는 기능)을 제공합니다.
예 : 최근 프로젝트에서는 S3에 저장된 파일을 수신하면 파일 메타 데이터를 추출하여 DynamoDB에 저장하는 Lambda 함수를 실행하는 메커니즘을 구현했습니다. 한편 DynamoDB 스트림은 다른 Lambda 함수를 실행합니다. 이 후자의 함수는 DynamoDB에서 메타 데이터를 읽고 S3에있는 원본 파일의 파일 유형에 따라 다른 작업을 수행합니다. 예를 들어, 원본 파일이 비디오 파일이면 Elastic Transcoder가 호출되어 파일을 트랜스 코딩합니다. 원본 파일이 이미지 인 경우 gm (GraphicsMagick for Node.js) 스크립트가 호출되어 EXIF 데이터를 추출하고 썸네일을 생성하고 DynamoDB 메타 데이터를 업데이트합니다. 이를 통해 단순한 콘텐츠 관리를위한 서버리스 인프라가 가능했습니다.