Skip to content

Latest commit

 

History

History
81 lines (43 loc) · 3.83 KB

DEVELOPING.md

File metadata and controls

81 lines (43 loc) · 3.83 KB

Edge Services Handbook

This guide is mostly useful for people (including Storj Labs employees) who want to develop and/or gain more in-depth knowledge about Storj's edge services.

Overview

Edge services bridge the gap between the native integration and existing applications written to talk with S3 object storage (Gateway-ST and Gateway-MT). Link Sharing Service allows to quickly share a file or an entire directory via URL.

Repositories

What is Auth Service (included in this repository) and why do we need it?

Auth Service maps existing access grants to S3-specific Access Key ID/Secret Access Key pairs on demand. The primary reason for using Auth Service is that it's hard to pass long access grants in Access Key ID/Secret Access Key. See this for a more in-depth explanation of how Gateway-MT works with Auth Service. Link Sharing Service can work with and without Auth Service (it's easier and more secure with Auth Service). Gateway-ST does not need Auth Service.

Roadmap

See Public Roadmap filtered for Edge Team.

See also the GitHub project including current items the team is working on.

Service-specific documentation

  1. Gateway-ST (also Gateway-MT's object layer) documentation
  2. Auth Service, Gateway-MT and Link Sharing Service
  3. Blueprints (see this for an explanation of what blueprints are)

Development

How to run everything locally?

TODO(artur): write about this. Present different approaches, including storj/up.

Testing

Correctness

A suite of integration tests for Gateway-MT can be run on the checked out code.

make integration-run will start a new integration environment using Docker and run all the integration tests.

At the end of the run, you can run make integration-env-purge to remove the integration environment.

This requires docker, git, and openssl to be installed on your local machine for this to work.

mint

We run mint tests based on MinIO's mint (gateway-mint) on every commit to Gateway-MT against Gateway-MT, as well as in the fork's repository itself.

To run the tests:

make integration-env-start integration-mint-tests

You can also run a specific test using the TEST environment variable:

TEST=aws-sdk-php make integration-mint-tests

ceph/splunk-s3-tests

We run S3 tests based on Splunk's fork (which is better suited for us) of Ceph's S3 tests (splunk-s3-tests) on every commit to Gateway-MT against Gateway-MT, as well as in the fork's repository itself.

To run the tests:

make integration-env-start integration-splunk-tests

Performance

We currently don't run performance tests. We are planning to performance-test Gateway-MT/Gateway-ST using COSBench and warp.

Infrastructure

Monitoring

Metrics

We collect metrics and telemetry metrics for Gateway-ST (if consent has been granted), similarly to what this blueprint proposes.