This document provides a brief overview of some of the key technologies we use in the storage service.
S3 – petabyte-scale object storage. We use it for permanent storage of assets, temporary/working storage, and to hold storage "manifests" (our JSON representation of a bag). | |
DynamoDB – a NoSQL database that we use as a key-value store. We use it to track ingests, store information about versions, and lock around certain processes. | |
SNS/SQS – inter-app message queues. Our apps form a pipeline: an app receives a message, does some work, then sends another message to the next app in line. This inter-app messaging uses SNS and SQS, for more see inter-app messaging. | |
ECS/Fargate – a serverless container runtime. We package our services in Docker images, and then Fargate actually runs the containers, without us having to provision VMs/servers to run them on. Fargate is a subservice of Elastic Container Service, or ECS. |