-
-
Notifications
You must be signed in to change notification settings - Fork 194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Store blobs on S3 #4088
Comments
Might be relevant https://www.youtube.com/watch?v=kYBBysLk80A, CC @davisagli |
We are very interested in this PLIP! |
Please add documentation to the Deliverables section. I would also be very interested in the significantly lower cost B2 storage service from Backblaze. Perhaps this PLIP could design an interface that allows a choice of cloud storage providers, instead of being designed for only one. If that's possible, then one cloud storage service could be a fallback to another. |
@stevepiercy B2 is compatible with S3 API. The idea is to be compatible with S3 API that many providers support. |
@bsuttor @mpeeters Thanks for starting this PLIP. I was also been thinking about it a bit over the holidays. I'll add my notes below in case you want to add some of my ideas to the PLIP, but I think you've already covered a lot of what I had in mind. Motivation:
Design goals:
I think there are 2 pretty different directions we could go for the implementation:
Prior art to investigate:
|
PLIP (Plone Improvement Proposal)
Responsible Persons
Proposer: Benoît Suttor
Seconder: Martin Peeters
Abstract
This PLIP proposes adding support for integrating Plone with S3 (Simple Storage Service) for storing content-related files, images, and other binary data. By leveraging S3 protocol as a backend storage solution, Plone would allow websites to offload storage to a scalable, highly available cloud solution, providing cost savings, redundancy, and improved performance for large deployments.
Motivation
Currently, Plone relies on local disk storage for managing files, which can limit scalability, especially for high-traffic sites or sites with significant file storage needs. Integrating S3 into Plone will offer the following benefits:
Moreover, many modern web applications and content management systems already leverage S3 for storage, and providing native support in Plone will make it easier for users to integrate Plone into cloud-centric architectures.
Assumptions
Proposal & Implementation
Technical Details
The integration would be implemented using the boto3 library (Python SDK for AWS), which allows interaction with S3.
This integration could be inspired by collective.s3blobs for downloading and uploading blobs to S3.
The following key features would be implemented:
I thought Relstorage is a good place to implement this because the goal, in my case, is to deploy Plone by separating data from applications. So “Data.fs” could be stored on Postgres (for example) and blobs on S3.
But after talking about it with Maurits, maybe it’s better to add an adapter on ZODB blob or on plone.namedfile and use it ?
This feature would be opt-in and would not break existing Plone setups. Plone installations without this integration would continue to function normally, using blobstorage as before. Admins would need to enable and configure the integration explicitly.
Deliverables
Risks
Potential Issues
Performance: for little file, we need to test if the connection to S3 is fast enough to be effective on production
Participants
To be defined, but I am interested
The text was updated successfully, but these errors were encountered: