раздел 05
DigitalOcean Spaces
Что это
Spaces - объектное хранилище DigitalOcean, S3-совместимое. По сути это аналог бакетов: вы кладёте файлы и получаете на них ссылки, работаете по протоколу S3. Опционально к Spaces подключается CDN для быстрой раздачи файлов по миру.
Зачем
Диск Droplet ограничен и исчезнет вместе с сервером. Растущие медиа, пользовательские загрузки и бэкапы держат в Spaces: практически безлимитно, надёжно, файлы отдаются напрямую, не нагружая Droplet. Идея S3 в целом разобрана в курсе Серверы, раздел про S3.
Как: создать Space и ключи
- В панели: Create - Spaces Object Storage.
- Выберите регион, задайте уникальное имя Space (это и есть «бакет»).
- Создайте ключи доступа: API - Spaces Keys - Generate New Key. Получите пару
access keyиsecret key. - Запишите endpoint вашего Space (адрес для обращения).
Endpoint, имя Space и ключи передаёте приложению через переменные окружения - и оно загружает/читает файлы по протоколу S3.
Когда нужно
- Пользователи грузят фото, документы, вложения.
- Раздаёте видео или много картинок (тут особенно полезен встроенный CDN).
- Регулярные бэкапы базы, которые надо хранить отдельно от сервера.
Когда не нужно: маленький проект без медиа и загрузок - хватит диска Droplet.
Пример
Веб-приложение на Droplet, пользователи грузят аватары. Создаёте Space app-uploads, генерируете ключи, передаёте их приложению через .env. Файлы летят в Space, в базе - ссылки. Бэкапы Postgres кладёте в отдельный Space.
Антипаттерны
- Хранить пользовательские файлы на диске Droplet. Заполнится, пересоздадите сервер - потеряете файлы.
- Светить ключи доступа. Утечка
secret key= чужой доступ ко всему хранилищу. - Делать Space полностью публичным. Публичным делайте только то, что и должно быть публичным.
Что дальше
Проект растёт - разберём масштабирование Droplet и когда переходить на managed-БД и несколько серверов. Про данные в целом - в курсе Хранение данных.