project-proposal-2024

OpenStore

OpenStore: The S3 we have at home

Abstract

It is well known that while the cost of high-speed storage has been decreasing rapidly, the costs of cloud services such as AWS’s S3 and Azure’s Blob storage have stagnated. OpenStore is a scalable and reliable self-hosted object storage service designed for organisations that are tired of sky-high S3 bills. Offering S3-compatible APIs with a focus on deployability, extensibility, and reliability, OpenStore aims to provide an alternative to the commercial cloud storage options currently available by allowing organisations to host their own S3-like object store.

Author

Name: Thomas Day

Student number: 46986791

Functionality

Generally speaking, OpenStore will implement the same functionality as AWS S3 with the added benefit of being self-hostable and open source. This key functionality includes:

Scope

The Minimum Viable Product (MVP) will include the following functionalities:

Quality Attributes

Evaluation

Availability

Testing Strategies:

  1. Repeated fault injection: Spin up a new cluster and write numerous files to it. Then, abruptly remove/kill one of the nodes before attempting to read back all the written files.
  2. Simulated network failure: In an active cluster performing data operations, simulate a network disconnection between nodes. Verify that all files can still be read back in the event of network partitioning.

Reliability

Testing Strategies:

  1. File corruption: Write a file to the cluster, corrupt one of the instances of the file on disk, and then attempt to read the file through OpenStore. Through error detection and data replication, the correct uncorrupted file should be returned to the user.
  2. Failure mode: Write a file to the cluster, then corrupt all copies of the file on the node’s disks, and attempt to read the file back. Ensure that an error is returned rather than a corrupted file.

Scalability

Testing Strategies:

  1. Load test: Using a tool like k6, apply increasing loads to the cluster to ensure it handles high traffic well.
  2. Inducting a new node: In a high-traffic situation, administrators may wish to expand the cluster. Ensure that a new node can join the OpenStore cluster within 5 minutes of provisioning.