Файлы — картинки, документы, бэкапы, статику сайта — в облаке не держат на диске виртуальной машины. Для этого есть объектное хранилище: отдельный сервис, который хранит сколько угодно файлов, доступен по сети и не требует своего сервера. В GCP это Cloud Storage. Разберём основы; более общий разбор модели, применимый к любому объектному хранилищу, — в разделе Object storage (S3).
Бакет, объект, ключ
В объектном хранилище нет привычных папок и файлов. Модель другая:
- Бакет (bucket) — контейнер верхнего уровня, куда складывают объекты. Имя бакета глобально уникально.
- Объект — сам файл вместе с метаданными.
- Ключ (имя объекта) — строка-идентификатор, например
images/2026/logo.png. Слэши выглядят как папки, но это просто часть имени: настоящей иерархии нет, пространство плоское.
Доступ — только через HTTP API, не как к диску: объект читается и пишется целиком. Именно поэтому объектное хранилище масштабируется до огромных объёмов.
Классы хранения
Одни данные читают постоянно, другие лежат годами «на всякий случай». Держать всё одинаково — переплачивать. Поэтому у объектов есть класс хранения:
- Standard — для частого доступа: дороже за хранение, дёшево читать;
- Nearline — для доступа примерно раз в месяц;
- Coldline — примерно раз в квартал;
- Archive — для архива, к которому почти не обращаются: копейки за хранение, доступ дороже.
Важная деталь GCP: во всех классах данные доступны сразу (без «разморозки»), отличается только цена хранения и чтения. Логика простая: горячие данные — в Standard, холодные (старые логи, бэкапы) — в дешёвых классах. Вручную это делать необязательно: lifecycle-правила сами переносят объекты в холодные классы по возрасту и удаляют совсем старые.
Signed URL и доступ
Бакет по умолчанию приватный (доступ по Cloud IAM). Чтобы дать временную ссылку на приватный объект — «скачать отчёт в течение часа» — используют signed URL: подписанную ссылку с ограниченным сроком, без раздачи постоянного доступа. Это аналог presigned URL в S3. Публичный доступ (объекты по прямой ссылке) включают осознанно — так раздают статику сайта. Управлять доступом рекомендуется единообразно на уровне бакета (uniform bucket-level access), а не по каждому объекту.
Типы размещения
Важное решение — где хранить данные и сколько копий:
- региональный бакет — данные в одном регионе, копии по его зонам; дёшево, переживает падение зоны;
- двухрегиональный (dual-region) и мультирегиональный (multi-region) — копии в нескольких регионах; выше доступность и защита от аварии региона, но дороже.
Выбор — баланс цены, задержки и того, какой сбой вы хотите пережить.
Из чего складывается стоимость
Счёт складывается из трёх частей: хранение (за гигабайты в месяц, зависит от класса — архив в разы дешевле Standard), операции (за количество чтений/записей) и исходящий трафик (за данные наружу). Самая коварная статья — трафик: на раздаче популярной статики растёт незаметно. Помогает Cloud CDN перед бакетом — кэширует ближе к пользователю и снижает и задержку, и трафик.
Где это применяется
Cloud Storage — стандартное место для файлового: пользовательские загрузки, картинки и видео, статика фронтенда, резервные копии, экспорты и логи. Приложение обычно не отдаёт файлы через себя, а кладёт их в бакет и раздаёт ссылками — это разгружает сервис.
Типичные ошибки новичков:
- держат файлы на диске машины — теряют их при пересоздании и не масштабируются;
- раздают всё через приложение вместо ссылок или CDN — грузят сервис и переплачивают за трафик;
- делают бакет публичным по ошибке — открывают приватные данные;
- не настраивают lifecycle — платят за Standard даже за архив.
Что учить дальше: общая модель объектных хранилищ глубже — в разделе Object storage (S3); как читать и писать объекты из кода — в интеграции со Spring Boot; дешёвые классы и трафик — часть оптимизации затрат.