Облачные хранилища — сервисы виртуализированного долгосрочного хранения данных, размещаемых на ресурсах поставщика облаков. Доступ к таким ресурсам обычно осуществляется по сети с помощью программного интерфейса из любого приложения [1]. Масштабируемые облачные хранилища востребованы сегодня в различных отраслях, обеспечивая в том числе совместную работу, резервное копирование данных, хранение, анализ данных и пр.

Облачные провайдеры предоставляют набор инструментальных средств для разработки ПО доступа к облачным ресурсам из приложений для разных аппаратно-программных платформ, например, S3-совместимые SDK для Yandex Object Storage [2]. В большинстве случаев такие инструментарии предоставляют интерфейс командной строки для управления облачными ресурсами, например, Yandex Cloud CLI (Command Line Interface) [3]. Имеются также универсальные программные реализации для доступа к облачным хранилищам:

  • Cyberduck — поддержка множества облачных хранилищ (Amazon S3, Google Cloud, Yandex Object Storage, Azure и др.);
  • Rclone — консольная утилита для синхронизации и управления облачными хранилищами. Поддерживается почти 50 облачных сервисов;
  • Mountain Duck — коммерческое приложение от разработчиков Cyberduck, позволяющее монтировать облачные хранилища как локальные диски. Поддерживаются S3-совместимые хранилища;
  • FileZilla Pro — коммерческая версия FileZilla с поддержкой облачных хранилищ (Amazon S3, Google Cloud, Azure и др.) [4].

Облачная инфраструктура корпоративного хранилища может состоять не только из публичных облачных хранилищ, но и из частных, размещаемых в локальном ЦОД с доступом как по корпоративной, так и внешней сети. Часто гибридное облако требуется компании, имеющей свой локальный ЦОД, для масштабирования вычислительных мощностей за счет публичных облачных ресурсов. Однако перечисленные проприетарные приложения, как правило, предназначены для работы с конкретными облачными хранилищами. Как следствие, для доступа к облачным хранилищам конкретного типа требуется свой инструментарий, что для пользователя экономически затратно и требует одновременно владения несколькими инструментами. Все это зачастую затрудняет интеграцию и модернизацию кода существующих API для работы пользовательских приложений с конкретной облачной конфигурацией.

Для удобства управления данными в гибридных облачных хранилищах требуется библиотека поддержки универсального доступа к ресурсам популярных облаков, к удаленным файловым хранилищам через сетевые протоколы и к локальным хранилищам.

Такая библиотека должна предоставлять API получения системных данных о файлах и каталогах облачного хранилища, их загрузке в облачную систему из локальной по аналогии с копированием и перемещением файлов в локальной системе; о выгрузке файлов и каталогов из облачной системы в локальную, по аналогии с копированием и перемещением файлов в локальной системе. Кроме этого, поддержка универсальности подключения требует доступа к конфигурационным данным для подключения к облачным хранилищам, а также ключей доступа. Библиотека должна обеспечивать получение таких ключей, гарантируя тем самым централизованное предоставление пользователям данных конфигурации доступа к облачным хранилищам. В существующих реализациях доступа к облачным хранилищам ключи либо передаются самим пользователем, например, конфигурационный файл интерфейса командной строки заполняется пользователем вручную либо путем обращения к конкретному облачному сервису, когда ключи уже доступны напрямую через официальный веб-интерфейс облачного провайдера.

Таким образом, универсальность библиотеки — это:

  • единый универсальный интерфейс доступа и управления данными, не зависящий от типов облачных хранилищ;
  • возможность реализации графического приложения поддержки доступа и его интеграции в существующие приложения;
  • самостоятельность и независимость от сторонних коммерческих программных реализаций;
  • централизованное получение ключей доступа к конкретному облачному хранилищу.

Библиотека была реализована на языке C++, с применением библиотеки libcurl и SDK от провайдеров облаков. Библиотека содержит программный модуль управления данными в облаке, модуль описания уровня абстракции и уровня реализации. На рисунке представлена диаграмма UML [5] уровней абстракции и реализации.

UML-диаграмма уровней абстракции

На уровне абстракции реализуется интерфейс к функционалу — это базовый уровень для всех протоколов облачных провайдеров, а индивидуальные требования различных протоколов обрабатываются на уровне реализации. Для каждого отдельного протокола требуется своя реализация. Модуль управления данными спроектирован и разработан в виде компонента, который можно расширить для отдельных облачных инфраструктур.

Во врезке приведен интерфейс базового класса cloud на языке C++, соответствующий описанию на диаграмме 1, где cloud_file_info — класс, содержащий системную информацию удаленного файла или каталога; cloud_storage — класс хранения ключей доступа к облаку.

 

Описание интерфейса класса cloud на языке C++

std::vector get_list_directory (const std::string &remote_path);

tnav_error_t upload (const std::string &local_path, const std::string &remote_path);

tnav_error_t download (const std::string &remote_path, const std::string &local_path);

tnav_error_t create_dir (const std::string &remote_dir_path);

tnav_error_t delete_path (const std::string &remote_path);

tnav_error_t rename (const std::string &old_remote_path);

tnav_error_t update_keys (cloud_storage &storage);

 

Интерфейс также включает счетчик прогресса загруженных данных. При передаче файл делится на части, которые последовательно передаются по сети. Счетчик отображает суммарный объем переданных данных в рамках одного файла или каталога.

Неотъемлемой частью функционала является возможность через API диспетчера запрашивать ключи доступа к облаку в методах производных классов. Диспетчер — программный компонент, реализующий взаимодействие между клиентом и облачной системой. Запускается внутри облачной системы. В функционал диспетчера входят аутентификация и авторизация пользователей, а также выдача ключей доступа к соответствующему облаку. Запрос обновления ключей реализован через интерфейс cloud_key_iface. Диспетчер входит в программный комплекс тНавигатор [6].

Разработанный API позволяет реализовать файловый менеджер (Cloud File Manager, CFM) — унифицированное средство доступа и управления данными в облачных хранилищах, включающее расширенный функционал стандартного файлового менеджера.

Файловый менеджер отображает объекты облачного хранилища в виде обычных файлов и папок, с которыми можно работать как с локальной иерархической файловой системой. Разработанная реализация интегрирована в промышленный программный комплекс тНавигатор.

Результаты замеров времени и скорости передачи локального файла в облачное хранилище гибридного типа при помощи CFM показали, что целостность передаваемых файлов не нарушается, а результирующее время передачи файла при помощи CFM сопоставимо со временем передачи стандартной утилитой протокола (cURL, Client for URLs) и утилитой облачного провайдера aws-cli (AWS Command Line Interface).

***

Облачные хранилища, различающиеся как по типу доступа (частные, публичные, общественные и гибридные), так и по типу хранения данных (файловые, объектные и блочные), обычно не имеют универсального API, а их управление, как правило, обеспечивается с помощью инструментов конкретного облачного провайдера. Существующие стандартные программные средства не предоставляют универсальных средств доступа к облачным хранилищам разных типов, средств централизованного получения ключей доступа к конкретному хранилищу, а также доступа к исходному коду и возможности интегрирования его в уже существующее приложение с дальнейшей модернизацией под требуемые задачи.

Для удобства управления данными в гибридных облачных хранилищах реализованы библиотека универсального доступа и файловый менеджер CFM, расширяющие функционал стандартных инструментов. Реализованные программные средства можно расширить для подключения к любой облачной инфраструктуре и управления данными в облачных хранилищах.

Литература

1. ГОСТ ISO/IEC 17788-2016: Информационные технологии. Облачные вычисления. Общие положения и терминология. М.: Стандартинформ, 2019. 19 с. [Электронный ресурс]. — URL: https://meganorm.ru/Data2/1/4293749/4293749959.pdf (Дата обращения: 20.03.2026).

2. Хранение и обработка данных/S3 [Электронный ресурс]. — URL: https://yandex.cloud/ru/docs/glossary/s3 (Дата обращения: 05.03.2026).

3. Интерфейс командной строки/CLI Yandex Cloud [Электронный ресурс]. — URL: https://yandex.cloud/ru/docs/cli/ (Дата обращения: 05.03.2026).

4. FileZilla Pro: FTP and Cloud Storage tool for Windows, Mac and Linux. [Электронный ресурс]. — URL: https://filezillapro.com/#pricing. (Дата обращения: 05.03.2026).

5. К. Ларман. Применение UML и шаблонов проектирования. Введение в объектно-ориентированнй анализ, проектирвоание и унифицированный процесс UP. — 3-е изд. — М.: Вильямс, 2006. — 727 с. ISBN 978-5-8459-1185-8.

6. ИРМ: тНавигатор. [Электронный ресурс]. — М.: ИРМ, 2025. — URL: https://irmodel.ru/. (Дата обращения: 05.03.2026).

Людмила Львова (lvovalm13@gmail.com) — аспирант, Кирилл Богачев, профессор, мех.-мат. ф-т, МГУ им. М. В. Ломоносова (Москва).

DOI: 10.51793/OS.2026.16.15.003