Blobstore
Binary large object storage service
Open it
Routes
| Protocol | Address | JAR | Provider |
|---|---|---|---|
| https | api.blobstore.wasmserver.com | blobstore-server.jar | cloudrunjar |
| other | blobstore/ | blobstore-service-server.jar | danger_jarfile |
Repositories
| Repository | Layer | Description |
|---|---|---|
| blobstore | other | Blobstore service source code |
Depends on
None documented
Depended on by
Services that require binary object storage
Documentation Edit this page
Blobstore
Binary large object storage service. Provides a centralized API for storing and retrieving binary data blobs used by other services in the platform.
Architecture
+---------------------------+
| Clients |
+---------------------------+
| |
HTTPS | | url://
v v
+------------------+ +------------------------+
| blobstore-server | | blobstore-service- |
| .jar | | server.jar |
| (Cloud Run) | | (ContainerNursery) |
+------------------+ +------------------------+
| |
v v
+---------------------------+
| Blobstore Backend |
+---------------------------+
|
v
+---------------------------+
| Blob Storage Layer |
+---------------------------+
Deployment
- Cloud Run:
blobstore-server.jardeployed to Google Cloud Run, serving HTTPS traffic atapi.blobstore.wasmserver.com. - ContainerNursery:
blobstore-service-server.jardeployed to ContainerNursery, accessible via theurl://blobstore/protocol.
Health Checks
- HTTPS endpoint:
https://api.blobstore.wasmserver.com/ - ContainerNursery: monitored via standard ContainerNursery health checks
- ProductionHealth check — BlobstoreHealthCheck (
community.kotlin.healthchecks.blobstore:blobstore-health-check), registered with the ProductionHealthService, runs a full end-to-end verification overurl://blobstore/: health endpoint, upload,blobExists, download-with-content-verification, listing, and cleanup. It additionally exercises multi-chunk reassembly (a blob spanning several 4 MB chunks) and reads a permanently-pinned canary blob (plus an optional known production blob) back on every run, verifying it still hashes to its content address — so any regression that would make already-stored blobs unreadable (a chunk-reassembly, integrity, or read-path break) surfaces as a red check rather than silent data loss.
Data Durability
- This service holds critically important production data. Blobs are content-addressed and write-once, so everything already stored must remain byte-for-byte readable indefinitely; preserving read/write access to existing blobs is the top operational priority, and avoiding data loss overrides other changes.
- The on-storage format is a frozen backward-compatibility contract — the SHA-256 uppercase-hex content address, the
blobs/{HASH}S3 key derivation, thepins(owner, file)ownership metadata, and the chunk-reassembly path. See Data durability and backward compatibility for the full contract. - The deployed
blobstore-service-server.jarpins its storage-affecting dependencies (the AWS S3 client, hashing, and metadata-schema access) so the on-storage format cannot drift underneath already-stored blobs. Any change to those pins is a deliberate data-migration decision, verified against the health check's canary read-back before deployment.
Notes
- Standard layered architecture with public HTTPS API and internal ContainerNursery service endpoint.
- See the Blobstore project overview for the full component breakdown and design decisions.
Read at commit 45ba0b30ed3b