-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Migrate objstore package to use new Go cloud #443
Comments
Thanks for willing to help! I would be very very careful about this. IMO:
For example:
...might be not true at the end. There is risk that we will end up writing even more LOC to satisfy our current interface. To sum up, I think we should definitely wait for this package to be proven in wild (and prod) by users that are willing to experiment more. What do you think? (: BTW there are lots of way more important issues we could use your help! (: Feel free to look on any issues with prefix label |
Agreed! They even say it's not 100% stable and shouldn't be used in production yet.
That would be disappointing. I think I'll give it a shot just to see what the current version of library would provide and what the code would look like. No intention of merging though.
Will do :) |
Awesome, thanks! Closing this for now. |
I think it's slowly time to reevaluate this (: |
👍 I can look into it, but not for a few days at least |
Thanks! that would be interesting experiment. CC @domgreen The main acceptance criteria are:
The reasons why we potentially would do it is basically this:
|
I think this is a great idea of getting a proposal document of what we would need to do to transition over. Overall it will enable us to quickly expand clouds and storage providers based on other implementations of bucket stores and will reduce maintenance on our side, allowing us to as Bartek mentions to focus on Thanos main goals over cross platform storage which is the goal of go cloud. Updating where the buckets are used should be relatively simple, the harder part will migrating the new providers (Azure, Tencent, Swift) over to the new bucket interface and should be done first to ensure we can support all in flight storage options. |
My initial evaluation of this over this past weekend is that if we can get all new providers to match the interface for blob storage we can then easily refactor the rest of the code. gocloud even have the refactoring of |
First we need to make sure Thanos is fine with the interface provided by The user facing interface for Thanos: https://godoc.org/github.com/google/go-cloud/blob#Bucket CC @jojohappy (Tencent) @vglafirov (Azure) @sudhi-vm (OpenStack Swift) |
Overall for now still not clear if worth. Mainly due to the extra dependencies it adds, plus we still need to implement our own ones for other storages than Azure, S3, GCS. For dependencies, every SDK has it (e.g Google and AWS), so maybe it's not that bad. What's really nice is this multi-part support without knowing file size up-front which we miss in 2 providers (S3 via minio-client). This we can implement on our own or just move to AWS SDK. |
The Go team announce the Go cloud packages today: https://blog.golang.org/go-cloud
To reduce the amount of internal code in objstore it could make use of the
go-cloud/blob
, or if we don't needobjstore/inmem
then objstore could be replaced entirely.Curious what you guys think @Bplotka @fabxc, if this would be useful I'd like to work on it.
The text was updated successfully, but these errors were encountered: