Amazon S3 스타일 API를 로컬로 제공하는 서버가 있습니까?
a) 데이터베이스 또는 b) Amazon S3에 일부 데이터 (첨부 파일)를 저장하는 배포 소프트웨어를 만듭니다. 다른 구성이 필요하지 않기 때문에 데이터베이스가 사용됩니다. Amazon S3가 더 나은 옵션입니다.
지금 우리가 원하는 것은 Amazon S3를 사용하고 싶지 않은 고객을위한 솔루션입니다. 분명히 파일 시스템을 사용할 수 있지만 여러 웹 서버가 있고 파일을 복제해야하는 경우 문제가 될 수 있습니다. 또한 발생할 수있는 다양한 문제를 처리하기 위해 추가 코드를 작성해야합니다.
우리가 선호하는 것은 본질적으로 Amazon S3의 API를 복제하는 서버 소프트웨어가있는 경우입니다. 이렇게하면 클라이언트가 상자에 서버를 설치할 수 있습니다. 코드를 변경할 필요가 없습니다. 그래서 ... 거기에 그런 소프트웨어가 있습니까?
이는 표준화 된 서버의 클러스터 , 특히 최근 추가 된 (선택 사항) S3 API 계층을 사용하여 중복되고 확장 가능한 객체 스토리지를 생성하기위한 오픈 소스 소프트웨어 인 OpenStack Object Storage (코드 명 Swift) 를 통해 가능합니다 . 오브젝트 스토리지의 맨 위로 .
공식 문서 는 S3 API 를 사용하여 Object Storage 구성을 참조하십시오 . 전체 설정에 대한 더 통찰력 있고 그림이있는 작은 자습서는 OpenStack Swift의 S3 API에서 사용할 수 있습니다 ( 하지만 EC2에 OpenStack Swift 클러스터를 더 복잡한 설치 를 기반으로 빌드 됨 ).
최신 정보
주목할만한 대안은 우수한 성능, 안정성 및 확장 성을 위해 설계된 통합 분산 스토리지 시스템 인 Ceph 입니다. 흥미롭게도 세 가지 공통 스토리지 모델, 즉 Object Storage , Block Storage 및 파일 시스템 을 모두 제공 하고 RADOS 게이트웨이 는 Amazon S3 및 RADOS 객체 저장소에 대한 OpenStack Swift 호환 인터페이스 [강조] , 현재 지원되는 S3 API 기능에 대한 자세한 내용 은 RADOS S3 API 를 참조하십시오.
Minio가이 를 위해 유용 할 것입니다. Go로 작성되었으며 배포가 간단합니다.
바이너리 다운로드 : https://min.io/download
S3 서버로 실행하려면 :
minio server path/to/disk/storage
액세스 키와 비밀이 콘솔에 출력됩니다.
우리는 S3 기반 코드를 로컬에서 테스트하는 문제에 부딪 쳤고 실제로 S3 객체 API를 에뮬레이트하는 작은 Java 서버를 구현했습니다. 다른 사람들에게 유용 할 수 있기 때문에 작은 웹 사이트 http://s3ninja.net 과 함께 github 저장소를 설정했습니다. 모든 OpenSource는 MIT 라이선스에 따릅니다.
매우 간단하고 최소한의이 도구는 테스트 및 개발 목적에 적합합니다. 그러나 프로덕션에서 사용하려면 일부 보안을 추가해야 할 수 있습니다 (AWS 해시는 API에서 이미 확인되었지만 GUI 만 완전히 보호되지 않음). 또한 복제 또는 확장을 수행하지 않습니다. 따라서 이것은 대규모 설정에 적합한 선택이 아닙니다.
Cloudian을 보셨습니까 ? 우리는 S3 앱을 개발하기 위해 회사 내부에서 사용합니다. 최대 10TB까지 무료로 제공되는 Community Edition을 사용하고 있습니다. 그것은 꽤 좋은 S3 커버리지를 가지고 있거나 적어도 내 앱이 사용하는 대부분의 것들을 다룹니다 (저는 버전 관리와 멀티 파트 업로드를 사용하므로 제 앱이 고급이라고 생각합니다). 생성하는 버전 ID 및 멀티 파트 ID 등은 AWS에서 얻은 것과 다르지만 boto는 지금까지 불만 사항이 없습니다. 또한 s3fs 및 내가 시도한 다른 s3 버킷 브라우저에서도 작동합니다.
제 생각에는 AWS S3 API에 대한 개발을위한 좋은 도구이며 요구 사항을 충족해야합니다. 로컬 Cloudian 서버에서 앱을 가리키고 프로덕션 준비가되면 Amazon을 다시 가리킬 수 있습니다. 마일리지는 다를 수 있습니다. 행운을 빕니다.
최근에 S3 요구 사항에 Skylable을 사용하기 시작했습니다. 무료입니다 (GPL). 그들의 객체 스토리지는 복제, HA 및 중복 제거를 지원하며 S3와 완전히 호환됩니다. 중복성이 필요하지 않은 경우 단일 서버 (철, 가상 머신 또는 컨테이너)에서 소프트웨어를 실행하거나 HA가 필요한 경우 더 많은 노드를 사용할 수 있습니다.
Swift와 마찬가지로 버킷 당 복제본 수를 선택할 수 있습니다. 복제본 2에서 2 개의 노드로 시작하여 사용자 기반이 증가하기 시작함에 따라 추가 네트워크 트래픽 및 공간 요구 사항에 대처하기 위해 노드를 추가했습니다.
더 많은 노드를 추가하는 것은 정말 쉽고 라이브 클러스터에서 수행 할 수 있습니다.
내 경험상 Skylable은 Swift보다 더 빠르고 안정적이었습니다. C와 OCaml로 작성되었지만 해석되지 않았습니다. 메모리 사용량이 매우 적기 때문에 저렴한 VPS에서도 노드를 실행할 수 있습니다.
최근에 그들은 Swift API에 대한 작업을 발표했으며, 그들의 목표는 Swift를 대체하는 것입니다.
이미 언급했듯이 Amazon S3 대안으로 Swift 를 사용해 볼 수 있습니다 . SwiftFS 파일 시스템 을 살펴보면 Swift에 저장된 OpenStack 컨테이너를 로컬 파일 시스템으로 마운트 할 수 있습니다.
원래의 질문은 (보이는 것처럼 보이는) 프로덕션 사용을위한 S3 호환 소프트웨어에 관한 것이지만 많은 사람들이 동일한 소프트웨어에 관심이 있지만 로컬 개발 및 테스트에 관심이 있습니다.
생산 준비가 완료된 솔루션과 관련하여 Riak CS 라는 훌륭한 S3 호환 스토리지 소프트웨어가 있습니다.이 소프트웨어는 견고하고 수년간 생산이 입증되었습니다. 한 가지 단점은 설정이 간단하지 않습니다. 몇 가지 제한 사항이 있지만 중요한 것은 없습니다 . api / 호환성 문서를 참조하십시오 .
이미 개발 및 테스트에 대한 몇 가지 훌륭한 답변이 있습니다. 이는 Docker 사용자에게 유용 할 것 입니다. Riak CS 인스턴스를 빠르게 시작할 수있는 docker-riak-cs 이미지가 있습니다. 저는 거의 2 년 동안 로컬 개발 및 통합 테스트에 큰 성공을 거두었습니다.
S3와 유사한 API를 원하지만 데이터를 직접 호스팅하려면 minio에 대한 언급이 있습니다.
S3와 상호 작용하는 서비스를 작성하고 싶지만 로컬에서 속도를 테스트하려면 여기서 언급하지 않은 Localstack을 사용할 수 있습니다. S3뿐만 아니라 다른 많은 AWS 서비스도 에뮬레이션합니다. 테스트 전용 인 메모리 데이터 저장소이므로 실제 고객 파일에는 사용하지 않는 것이 좋습니다.
https://github.com/localstack/localstack
https://bluesock.org/~willkg/blog/dev/using_localstack_for_s3.html
'IT TIP' 카테고리의 다른 글
생성자에서 추가 매개 변수와 함께 Ninject를 사용하여 인스턴스 만들기 (0) | 2020.11.24 |
---|---|
PHP에서 '허용 된 메모리 크기 소진'오류를 안전하게 포착 (0) | 2020.11.24 |
기본 멤버 값 모범 사례 (0) | 2020.11.24 |
git log를 에뮬레이트하는 방법 --decorate의 분기 유형별로 다른 색상 (0) | 2020.11.24 |
통계 데이터를 저장할 때 DECIMAL, FLOAT 또는 DOUBLE이 필요합니까? (0) | 2020.11.24 |