Skip to content
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

Various ADR regarding JMAP and blobStore performance enhancements #170

Closed
wants to merge 15 commits into from

Conversation

chibenwa
Copy link
Contributor

The goal of these architecture decisions is to ensure a GetMessageList call does not end up calling the blob store.

src/adr/0014-blobstore-storage-policies.md Outdated Show resolved Hide resolved
src/adr/0014-blobstore-storage-policies.md Outdated Show resolved Hide resolved
src/adr/0015-objectstorage-blobid-list.md Outdated Show resolved Hide resolved
src/adr/0015-objectstorage-blobid-list.md Outdated Show resolved Hide resolved
src/adr/0015-objectstorage-blobid-list.md Show resolved Hide resolved
src/adr/0012-jmap-partial-reads.md Outdated Show resolved Hide resolved
src/adr/0012-jmap-partial-reads.md Outdated Show resolved Hide resolved
src/adr/0012-jmap-partial-reads.md Show resolved Hide resolved
src/adr/0013-precompute-jmap-preview.md Outdated Show resolved Hide resolved
src/adr/0013-precompute-jmap-preview.md Outdated Show resolved Hide resolved
src/adr/0012-jmap-partial-reads.md Outdated Show resolved Hide resolved
src/adr/0014-blobstore-storage-policies.md Outdated Show resolved Hide resolved
src/adr/0014-blobstore-storage-policies.md Outdated Show resolved Hide resolved
src/adr/0014-blobstore-storage-policies.md Outdated Show resolved Hide resolved

An HybridBlobStore will be created to choose between Cassandra and ObjectStorage implementations depending on the policies.

DeletedMessageVault, BlobExport & MailRepository will rely on LowCostStoragePolicy. Other BlobStore users will rely on SizeBasedStoragePolicy.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we really need to use the policy based blob store for all our blob store uses? I'm not sure LowCostStoragePolicy and PerformantStoragePolicy are really worth it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LowCostStoragePolicy -> For DeletedMessageVault (mail headers)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PerformantStoragePolicy might not be worth it though...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean why configuring DeletedMessageVault with a particular blob store policy while we probably ever want to store its data in swift?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

because having to declare what we expect in term of storage policy is better than knowing that store X has this specific behavior

src/adr/0015-objectstorage-blobid-list.md Outdated Show resolved Hide resolved
src/adr/0015-objectstorage-blobid-list.md Outdated Show resolved Hide resolved
src/adr/0015-objectstorage-blobid-list.md Outdated Show resolved Hide resolved
src/adr/0012-jmap-partial-reads.md Outdated Show resolved Hide resolved
src/adr/0012-jmap-partial-reads.md Outdated Show resolved Hide resolved
src/adr/0012-jmap-partial-reads.md Outdated Show resolved Hide resolved
src/adr/0012-jmap-partial-reads.md Outdated Show resolved Hide resolved
src/adr/0013-precompute-jmap-preview.md Outdated Show resolved Hide resolved
src/adr/0014-blobstore-storage-policies.md Show resolved Hide resolved
src/adr/0015-objectstorage-blobid-list.md Outdated Show resolved Hide resolved
src/adr/0015-objectstorage-blobid-list.md Outdated Show resolved Hide resolved
src/adr/0015-objectstorage-blobid-list.md Outdated Show resolved Hide resolved

Some performance tests will be run in order to evaluate the improvements.

## Consequences
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder how it will interact with the blob garbage collection we plan to implement

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question!

And I have an answer for it: as you plan to add a generation component in the blob id, blobs will be different, and this idList will thus be specific for a generation. We can thus safely remove entries from it as we know there will be no new blobs generated with the old generation.

However ADR for blob deletion are not presented yet, thus detailing interactions is hard.

Another argument I have: blob deletion acts at the BlobStore level, while this proposed implementation will be implemented at the ObjectStorageBlobDAO level, which should limit conflicts.

src/adr/0013-precompute-jmap-preview.md Outdated Show resolved Hide resolved
src/adr/0014-blobstore-storage-policies.md Outdated Show resolved Hide resolved
src/adr/0014-blobstore-storage-policies.md Show resolved Hide resolved

In case of a less than 5% improvement, the code will not be added to the codebase and the proposal will get the status 'rejected'.

We expect more data to be stored in Cassandra.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it would be nice to tell how much when we'll get the results

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That depends on the data, and proportion of small mails. Here only "production" like data would be relevant IMO

src/adr/0014-blobstore-storage-policies.md Outdated Show resolved Hide resolved
@chibenwa
Copy link
Contributor Author

Merged

@chibenwa chibenwa closed this Nov 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
6 participants