refactor appview to use envvars. move distribution configurations to code

This commit is contained in:
Evan Jarrett
2025-10-08 23:29:51 -05:00
parent fb040a72d3
commit b1e6857381
9 changed files with 1042 additions and 116 deletions
+22 -4
View File
@@ -471,12 +471,30 @@ A company wants shared storage for their team:
3. **In-memory cache** - Hold endpoint cache is in-memory (for production, use Redis)
4. **Manual profile updates** - No UI for updating sailor profile (must use ATProto client)
## Performance Optimization: S3 Presigned URLs
**Status:** Planned implementation (see [PRESIGNED_URLS.md](./PRESIGNED_URLS.md))
Currently, hold services act as proxies for blob data. With presigned URLs:
- **Downloads:** Docker → S3 direct (via 307 redirect)
- **Uploads:** Docker → AppView → S3 (via presigned URL)
- **Hold service bandwidth:** Reduced by 99.98% (only orchestration)
**Benefits:**
- Hold services can run on minimal infrastructure ($5/month instances)
- Direct S3 transfers at maximum speed
- Scales to arbitrarily large images
- Works with Storj, MinIO, Backblaze B2, Cloudflare R2
See [PRESIGNED_URLS.md](./PRESIGNED_URLS.md) for complete technical details and implementation guide.
## Future Improvements
1. **Automatic failover** - Multiple storage endpoints, fallback to default
2. **Storage analytics** - Track usage per DID
3. **Quota integration** - Optional quota tracking in storage service
4. **Direct presigned URL support** - S3 native presigned URLs (bypass proxy)
1. **S3 Presigned URLs** - Implement direct S3 URLs (see [PRESIGNED_URLS.md](./PRESIGNED_URLS.md))
2. **Automatic failover** - Multiple storage endpoints, fallback to default
3. **Storage analytics** - Track usage per DID
4. **Quota integration** - Optional quota tracking in storage service
5. **Profile management UI** - Web interface for users to manage their sailor profile
6. **Distributed cache** - Redis/Memcached for hold endpoint cache in multi-instance deployments