Файлы — картинки, документы, бэкапы, статику сайта — в облаке не держат на диске виртуальной машины. Для этого есть объектное хранилище: отдельный сервис, который хранит сколько угодно файлов, доступен по сети и не требует своего сервера. В 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; дешёвые классы и трафик — часть оптимизации затрат.