Beste svaret
Jeg vil foreslå to Opensource-alternativer til S3, men før jeg går, husk at S3 er langt fremme, og alle andre alternativer prøver å ta igjen S3 med kompatible API-er, og hva ikke, når det gjelder å slå S3, er ingen noen gang i nærheten.
- Openstack Swift: Swift er en svært tilgjengelig, distribuert, til slutt konsistent objekt / blob-butikk. Organisasjoner kan bruke Swift til å lagre mye data effektivt, trygt og billig. Objekter og filer skrives til flere diskstasjoner spredt over servere i datasenteret, med OpenStack-programvaren som er ansvarlig for å sikre datareplikering og integritet over hele klyngen. Lagringsklynger skaleres horisontalt ved å legge til nye servere. Hvis en server eller harddisk mislykkes, replikerer OpenStack innholdet fra andre aktive noder til nye steder i klyngen. Fordi OpenStack bruker programvarelogikk for å sikre datareplikering og distribusjon på forskjellige enheter, kan billige harddisker og servere brukes.
- Ceph : It er en objektlagringsbasert, åpen kildekodelagringsplattform som lagrer data på en enkelt distribuert dataklynge, og gir grensesnitt for objekt-, blokk- og filnivålagring. Ceph har som mål å primært distribueres helt uten SPOF, skalerbar til exabyte-nivå, og fritt tilgjengelig
Siden begge er åpen kildekode, kan du distribuere den internt, uten å bekymre deg for datatyveri fra Amazon (som det aldri gjør).
Ulemper:
Det er vondt å sette opp både Swift og Ceph, og du krever dedikerte ingeniører å gjøre det . Å opprettholde dem er også et enormt rot, og i det lange løp, med mindre du får god erfaring, vil du oppleve at du sliter. Det er ikke tilrådelig å gå for noen av det, med mindre du har mange overflødige servere som ligger, eller du setter opp et stort lager i huset som skalerer til rundt 50-500 petabyte.
PS: Jeg er Openstack utvikler, jobbet mye med både Swift og Ceph mye, og den daglige jobben min innebærer å fikse feil og vedlikeholde Openstack-klyngen og Ceph.
Svar
Jeg vil hevde at det ikke er noen » beste «alternativene til S3.
Hvis alt du trenger er objektlagring, så er det mange alternativer. Men S3 tilbyr funksjonalitet (som varsler og muligheten til å kjøre Lambda-funksjoner på put / get / overwriting og andre hendelser) som på dette punktet ikke er vanlig med noen av alternativene.
For eksempel i et nylig prosjekt implementerte vi en mekanisme som, etter mottak av en fil lagret i S3, ville avfyre en Lambda-funksjon som ville trekke ut filmetadataene og lagre den i DynamoDB. I mellomtiden vil en DynamoDB-strøm så skyte ut en annen Lambda-funksjon. Sistnevnte funksjon vil lese metadataene fra DynamoDB og utføre forskjellige oppgaver, avhengig av filtypen til den originale filen i S3. For eksempel, hvis opprinnelsesfilen var en videofil, ville Elastic Transcoder bli påkalt for å omkode filen; Hvis opprinnelsesfilen var et bilde, ville et GM-skript (GraphicsMagick for Node.js) bli påkalt for å trekke ut EXIF-dataene, opprette miniatyrbilder og oppdatere DynamoDB-metadataene. Dette tillot en serverfri infrastruktur for enkel innholdsadministrasjon.