RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Summary of Project:
This RFC proposes the introduction of an Object Store on the Forge platform to support the storage of large objects, addressing current limitations and enhancing app capabilities.
- Publish: October 29, 2024
- Discuss: November 19, 2024
- Resolve: December 3, 2024
Problem
Forge storage currently supports both a Key-Value store and a Custom-Entity store. These features enable you to store structured data without the need to set up underlying databases, addressing concerns such as data residency and other requirements that the platform accommodates out of the box.
However, Forge storage does have certain limitations regarding object sizes and depth. These constraints can hinder some applications from fully utilizing the capabilities offered by the Forge platform.
Examples of use cases impacted by these limitations include:
- Applications that generate reports exceeding 240 KiB
- Applications that manage large object depths, necessitating developers to chunk their data
While some of these restrictions can be circumvented, doing so introduces additional complexity to your application design and requires time to develop patterns that address size limitations.
The Forge team recognizes this as a critical issue to resolve in order to promote the development of more Forge apps directly on the Forge platform. By addressing these limitations, we aim to eliminate the need to egress data and enhance trust, which is particularly important for our largest enterprise customers as they transition to the cloud.
Proposed Solution
The proposed Object Store will provide a scalable storage solution capable of handling large objects. Key features include:
- Enhanced Storage Capabilities: Support for larger object sizes, reducing the need for data egress and unlocking more complex use-cases.
- Security and Compliance: Secure access in compliance with data protection standards, ensuring safe and reliable data storage.
- Familiar to developers : The Forge platform plans to introduce a new storage solution that is familiar to developers who have used similar solutions, such as Amazon S3 and Google Filestore. Forge apps, using this solution, will have proposed capabilities like put, get etc
Limits for Object Store
We are currently evaluating the limits and quotas associated with object store access for each app installation.
We are considering the implementation of several measures and aim to gain insights from this RFC. By understanding your use cases more thoroughly, we can better define what the numbers (X/Y) should represent.
- Single Object Size Limitations
- Per Invocation Operation Limits
- A maximum of X number of (or size of) object downloads
- A maximum of Y number of (or size of) object uploads
- Data Transfer Quotas for each app installation
Asks
We appreciate your engagement and look for feedback on this RFC that will help shape the object store offering. Specifically, the Forge team would love to get some insights on:
- What specific scenarios or applications would benefit from an Object Store solution, such as handling large-scale data storage or media content management?
- What security measures do expect to be implement to ensure safe and controlled access to stored objects, considering encryption and access policies?
- Do you perform any administrative or maintenance tasks on stored objects, and would features like automatic expiration (TTL) be beneficial for managing data lifecycle?
- What is your projected data storage requirement per customer over the next 12 months? How often do you anticipate these objects will be read or written in your application?
- Are there scenarios in your application where multiple users or processes might attempt to update the same object simultaneously? If so, how do you currently handle such concurrent updates?
- Does your use case require versioned storage and retrieval of objects, and how would you utilise object versioning to manage data changes?
- What additional functionalities or operations would you expect from the Object Store solution to support your application needs, such as metadata management or data replication?
- How might the proposed storage limits and quotas implementation impact your application, and what strategies would you employ to optimise resource usage?
Your feedback is invaluable in shaping the Forge Object Store to better serve the developer community.
While this RFC is specifically around the Forge Object Store solution, we understand that this might be an important aspect of existing Connect apps.
If you are a developer of a Connect app, we would love for you to participate in the App Data Migrations Survey. This survey will help us design the app data migration experience from Connect/Remote to Forge, as well as understand your requirements for Object Store better by understanding areas like data size, shape, etc. The survey is thoughtfully designed to be short and focused.