Pull to refresh
91.65

Поддержка облачных файловых хранилищ в «1С-Битрикс: Управление сайтом» 11

Reading time7 min
Views22K
Этой статьей мы открываем целый цикл постов, посвященный новинкам, реализованным в новой, 11-ой версии «1С-Битрикс: Управление сайтом».

Одна из самых интересных возможностей, появившаяся в новом релизе, — поддержка облачных хранилищ.



В этом посте мы расскажем, что же это такое, какие бывают хранилища, как они работают, и как их можно с большой пользой применять на своем сайте.

Для начала давайте посмотрим на любой новый или уже работающий веб-проект?

К чему стремится его владелец? За исключением узкоспециализированных ресурсов — к росту сайта, расширению его аудитории, увеличению той прибыли (денежной — в явном виде, или же «прибыли вниманием»), которую приносит проект. Хорошая и понятная цель для любого интернет-магазина, информационного ресурса, социальной сети и т.п.

Такая цель сама собой подразумевает несколько более мелких задач, которые нужно научится наиболее эффективно решать:
  • Минимизация расходов на эксплуатацию и снижение финансовых рисков на старте проекта
  • Масштабирование при росте нагрузки и обратное масштабирование
  • Надежность – обеспечение SLA, при чем, возможно, разный уровень SLA для разных категорий клиентов
  • Быстрая отдача динамического и статического контента

Можно изобрести несколько велосипедов для решения всех этих задач: поставить несколько серверов, вместо одного, чтобы обеспечить надежность; постоянно апгрейдить железо по мере роста; вынести статику на отдельный файловый сервер…

Решение, как нам кажется, получается не очень гибким.

Гораздо удобнее, а главное — эффективнее (на наш взгляд) — научиться работать в облачной инфраструктуре, использовать ее сервисы, масштабироваться и быть готовыми к разработке не просто сайта, а настоящего облачного сервиса. (О преимуществах «облака» по сравнению с традиционным хостингом мы уже писали на Хабре, всех неравнодушных к теме — приглашаем к дискуссии).

Именно поэтому в 11-ой версии «1С-Битрикс: Управление сайтом» появился модуль поддержки наиболее распространенных облачных хранилищ.

Что же это такое — облачное хранилище?

Если попробовать описать буквально в двух словах: для пользователя — это большой-большой сервер для хранения статического контента, который можно очень быстро раздавать по HTTP. :) Изнутри (с точки зрения провайдера) — все «немножко» сложнее: все данные в хранилище реплицируются в несколько точек, что обеспечивает его надежность; есть API для работы с файлами в хранилище и т.д. (О некоторых особенностях напишем далее более подробно.)

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

Какие задачи мы решаем переносом файлов в «облако»?

1. Снижаем стоимость эксплуатации

В общем случае стоимость размещения файлов в облаке будет ниже, чем использование аналогичного по объему файлового сервера. Если будете проводить самостоятельные расчеты, не забудьте посчитать стоимость сервера («голый» диск использовать не получится ;)), организацию бэкапов, траффик и т.п.

2. Можем использовать совместно с CDN для ускорения отдачи контента

Почти все провайдеры облачных хранилищ предлагают клиентам CDN (Content Delivery Network или Content Distribution Network — географически распределённая сетевая инфраструктура, позволяющая оптимизировать доставку и дистрибуцию контента конечным пользователям в сети Интернет, Wikipedia).

3. Снижаем нагрузку на web-узлы

Ваши серверы приложений могут заниматься только выполнением скриптов и отдачей динамического контента пользователям. Процессы веб-сервера не заняты отдачей статики (особенно актуально для видео и дистрибутивов). Плюс снижается нагрузка на диск.

4. Используя централизованное хранилище, решаем задачу синхронизации контента между множественными web-узлами

Если вы используете балансировщик нагрузки и несколько веб-серверов, вам нужно решить задачу синхронизации контента между ними. Варианты — либо периодически запускать синхронизацию на локальных хранилищах (rsync, csync2), что достаточно проблематично при работе с большими объемами данных; либо использовать то или иное централизованное хранилище. Например, облачное.

5. Ускоряем рендеринг страниц в браузере

Если все картинки сайта отдаются с основного домена (например, www.site.ru), то практически все браузеры по умолчанию открывают лимитированное количество соединений к одному домену (чаще всего — 5).

Поэтому, даже если скорость вашего интернет-канала позволяет получать контент с сайта очень быстро, вы будете ограничены количеством соединений. Визуально страница в браузере будет отрисовываться не слишком быстро.

Если картинки вынесены на отдельный домен относительно самого сайта — это ускоряет загрузку всего необходимого контента.

Провайдеры облачных хранилищ

Мы поддерживаем облачные хранилища Amazon S3, Google Storage, Windows Azure Storage от Microsoft, RackSpace, OpenStack.

Почти все они предлагают примерно похожий функционал (с точки зрения пользователя):
  • Любое количество объектов (чаще всего — до нескольких Тб каждый)
  • Возможность размещения в разных датацентрах (регионах)
  • Группировка объектов
  • Механизмы авторизации и ACL
  • REST и SOAP интерфейсы для работы с объектами
  • Прямая отдача файлов по HTTP
  • Высокая доступность
  • Низкая цена
  • Доступ через внешние инструменты (FUSE, клиенты)

Однако, конечно же, обладают и своими особенностями.

Amazon Simple Storage Service (Amazon S3)

Сервис, реализованный в рамках целого комплекса облачных услуг от компании Амазон — Amazon Web Services (AWS).

Можно использовать совместно с другим сервисом Amazon — CloudFront — собственный CDN Амазона

Файлы из S3 можно раздавать не только по HTTP, но и по протоколу BitTorrent.

Интересная особенность — можно использовать специальный тип хранилища — Reduced Redundancy Storage (RRS). В этом случае гарантируется меньшая надежность сохранности данных (по сравнению со стандартным хранилищем), однако при этом пользователям предлагается меньшая цена хранения данных. Можно использовать для возобновляемого контента.

Цены (для стандартного хранилища; варьируются в зависимости от региона):
  • Хранилище — 1 Гб (до 1 Тб) $0.14/мес.
  • $0.01 за 1000 запросов PUT, COPY, POST или LIST
  • $0.01 за 10000 запросов GET
  • Траффик – 1 Гб (до 10 Тб) $0.12 (первый 1 Гб – бесплатно)


Google Cloud Storage

Хранилище, реализованное компанией Google, в основном, для хранения данных при работе с Google App Engine (однако, конечно же, может использоваться и в других приложениях).

Отдача контента может осуществляться через CDN Google.

До конца 2011 года есть возможность воспользоваться бесплатным триальным предложением (размер хранилища — до 5 Гб, есть лимиты на траффик и количество запросов). Хорошее предложение для желающих просто попробовать и оценить сервис.

Цены (варьируются в зависимости от региона):
  • Хранилище — 1 Гб (до 1 Тб) $0.13/мес.
  • $0.01 за 1000 запросов PUT, COPY, POST или LIST
  • $0.01 за 10000 запросов GET
  • Траффик – 1 Гб (до 1 Тб) $0.12


Windows Azure Storage

Хранилище, созданное компаний Microsoft в рамках развития облачной платформы Windows Azure.

Есть собственный CDN. Интересны дополнительные сервисы (например, Table Service, Queue Service).

Пользователи могут воспользоваться бесплатным триалом для всей платформы Windows Azure в целом, в том числе — получив доступ к хранилищу (ограничения триала — 20 Гб хранилища, 50 000 транзакций).

Цены (варьируются в зависимости от региона):
  • Хранилище — 1 Гб $0.15/мес.
  • $0.01 за 10000 запросов
  • Траффик – 1 Гб $0.15


Rackspace Cloud Files

Rackspace — один из крупнейших мировых облачных провайдеров. Который среди прочих своих услуг предлагает своим клиентам и облачное хранилище.

Файлы могут раздаваться через CDN, который организован в партнерстве с Akamai.

Цены:
  • Хранилище — 1 Гб $0.15/мес.
  • Запросы по файлам меньше 250 Кб, а также HEAD, GET, DELETE — бесплатно
  • Траффик – 1 Гб $0.18


Уже упомянутый ранее Rackspace совместно с NASA разрабатывали облачную платформу Nebula.

В середине 2010 года было принято решение об открытии этой платформы и создании на ее базе нового проекта — OpenStack.

В настоящее время OpenStack — этой целый комплекс программного обеспечения, которое любой желающий может использовать для создания собственного облака. Одна из составных частей OpenStack — OpenStack Swift — комплекс для организации файлового хранилища.

Проект поддерживается очень многими компаниями (Citrix, Dell, AMD, Intel и т.д.)

Универсальная поддержка OpenStack Swift API на уровне платформы «1С-Битрикс» дает возможность любому хостеру реализовать собственное файловое хранилище на базе OpenStack — и им сразу же сможет воспользоваться любой владелец сайта, созданного на Битриксе (без дополнительных затрат на интеграцию и изучение нового специфичного API).

Первыми (и, насколько мы знаем, пока единственными) в России собственное облачное файловое хранилище на базе OpenStack реализовали Clodo.ru.

Некоторые технические особенности реализации хранилища описаны в блоге Clodo.ru на Хабре.

В итоге у Clodo можно купить хостинг (виртуальную машину) под «1С-Битрикс», сразу же с ним — лицензию на продукт, и затем подключить к проекту облачное хранилище. Отличное пакетное предложение для клиентов!

Мы призываем российских хостинг-провайдеров развивать собственные облачные решения!

Мы надеемся, что появление таких решений даст толчок к развитию облачной инфраструктуры и CDN-сетей в России.

Как это все работает в платформе «1С-Битрикс»?

К любому сайту, работающему на «1С-Битрикс», можно подключить одно или несколько хранилищ. Делается это в административном интерфейсе — делается это просто, достаточно указать несколько параметров:



В простейшем варианте можно просто перенести все файлы проекта в облака, выбрав нужный пункт в контекстном меню:



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

Если же хочется большей гибкости в управлении файлами, можно воспользоваться системой «правил-фильтров», реализованных в платформе.

Правила настраиваются:
  • по модулям системы
  • по расширениям файлов
  • по размерам файлов



Например, можно подключить два разных хранилища и для каждого из них настроить свои правила-фильтры. Допустим, все файлы более 100 Мб перемещать в облако Google Storage, а все видео — в Amazon S3. В зависимости от выгодности предложений провайдеров можно менять свои правила, «переливая» данные в другие «облачные» папки. Или совсем отключать хранилища, которые стали дорогими или чем-либо неудобными.

Немножко «внутренностей» для разработчиков

Самое главное — мы считаем возможность «прозрачной» работы с «облаком» очень важной для клиентов. Именно поэтому модуль поддержки облачных хранилищ включен во все редакции продукта, начиная со «Старта».

На первый взгляд реализация поддержки «облаков» в платформе может показаться достаточно простой. Однако нашим разработчикам пришлось доработать около 30 модулей в системе! Все они так или иначе работают с файлами. И для пользователя, который решит «переехать в облако», все должно быть прозрачно.

Таким же прозрачным остался API для разработчиков по работе с файлами (подробно можно прочитать в блоге Максима Смирнова).

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

* * *

Платформа «1С-Битрикс» стала еще более гибкой как для конечных пользователей, так и для разработчиков. Появились новые инструменты для масштабирования сайтов и эффективного решения других задач.

Мы стремимся сделать «1С-Битрикс» платформой не только для создания сайтов, но и для разработки облачных веб-сервисов, крупных масштабируемых веб-проектов, размещаемых в «облаке».
Tags:
Hubs:
+46
Comments30

Articles

Information

Website
www.bitrix24.ru
Registered
Founded
2012
Employees
201–500 employees
Location
Россия