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

    Этой статьей мы открываем целый цикл постов, посвященный новинкам, реализованным в новой, 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С-Битрикс» платформой не только для создания сайтов, но и для разработки облачных веб-сервисов, крупных масштабируемых веб-проектов, размещаемых в «облаке».
    1С-Битрикс 66,16
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 30
      +15
      Опять это облако =)
        +4
        Но, заметьте, не маркетинговые «бла-бла-бла облако бла-бла-бла...», а вполне живые кейсы для настоящих живых пользователей! :)
          +3
          Имелось ввиду вот это облако — http://habrahabr.ru/blogs/iconoskaz/130592/.
            0
            Спасибо. Не видел этот пост и недоумевал, откуда схожие комментарии ниже. ;)

            Что касается картинки у меня в посте — вряд ли с ней могут возникнуть какие-либо проблемы с копирайтами. Картинка честно куплена в этой коллекции клипартов: www.123rf.com.
          +2
          Опять ЭТО облако =)
          +8
          Опять такая же иконка с облаком ))))
          +1
          Думаю, за облачными файловыми хранилищами и связанными с ними CDN — будущее. Положил файл, допустим в s3 и спи спокойно: надежно (репликация минимум в 2 датацентра на 2 устройства), быстро можно отдавать файлы через встроенный CDN с примерно 20 точками отдачи контента по всему миру.
            0
            Александр, а как вы закачиваете файл в S3, через API?
            Не монтируете его через s3fuse?
              0
              Так ведь как раз в статье это все и расписано. ;)

              Вы работаете с теми или иными модулями системы (фото-галерея, блоги, интернет-магазин) и везде, где вы закачиваете файлы с локального компьютера — они сразу попадают в облако. В тот же S3, например.
                0
                Нет это-то понятно, я не про интерфейс Юзер-Битрикс, а про интерфейс Битрикс-S3.
                  +3
                  Через API S3.

                  В этом и суть интеграции. Пользователю/администратору не надо ничего дополнительно настраивать.
                    +1
                    Уже не терпится заглянуть в код CFile.
                +1
                Вообще я fuse (s3fs) пробовал использовать для других частных задач — не понравилось, т.к. тормозит (из-за fuse технологии видимо), зависает периодически. Гораздо проще использовать либо бесплатный клиент типа CloudBerry для закачки контента в облако напрямую, либо, если работаете на Битрикс — использовать возможности платформы, работающей с s3 и другими провайдерами напрямую через REST АПИ.
                  0
                  софт: CloudBerry Explorer for Amazon S3,
                  скорость 1 Мб туда и обратно.

                  Загружал запись вебинара ~250Мб до 5 минут. Тестировал отдачу — средняя скорость 1,1 Мб. Меньше 5 минут.

                  Делали короткие ссылки(в 11 версии появилось) на запись вебинара и раздавали — работает.
                0
                Лейтмотив сегодня на хабре — иконка этого облака.
                –12
                >>Мы стремимся сделать «1С-Битрикс» платформой не только для создания сайтов, но и для разработки облачных веб-сервисов, крупных масштабируемых веб-проектов, размещаемых в «облаке».

                А оно уже все-таки стало платформой для создания сайтов?
                  +3
                  Конечно. Вы не знали?

                  Возьмите рейтинг iTrack (самый адекватный — они обходят все домены .ru и.рф и определяют сигнатуры самых известных CMS).

                  Уверенное 4-ое место в общем зачете и безусловное лидерство среди платных CMS.
                    –6
                    Уже год-два пытаюсь не знать и вообще забыть этот кромешный ужас, начиная с оценки производительности системы и релиза web application firewall — самого масштабного костыля в истории мира CMS, сделанного вместо того, чтобы организовать адекватную проверку входных данных :)
                      +2
                      «Монитор производительности» — мега-полезнейшая вещь (если просто чуть-чуть разобраться, как именно он работает и какие цифры показывает).

                      Ну, а WAF спас огромное количество нервов многим и многим владельцам и разработчикам проектов. ;)
                        –8
                        Издеваетесь?) 2011-й год уже, скоро 2012-й, а Вы «монитор производительности» продвигаете.

                        Эти штуки давно автоматически должны отрабатывать, определять наличие кеширующих механизмов, анализировать, рассчитывать и оптимизировать работу страниц сайта без вмешательства и без того намучившегося администратора :) Логика анализа простейшая, а кнопок в админ-панели на десяток поубавится.

                        Ценность WAF все еще не ясна. htmlspecialchars, strip_tags и mysql_real_escape_string уже не в моде? Я очень извиняюсь, это мое дикое оценочное суждение, как скромного разработчика, но даже htmlspecialchars намного гуманнее и профессиональнее замены script на sc ript.

                        Поймите правильно, но, имхо, только правильно выстроенная стратегия реформы Вашей системы с точки зрения адекватности кода, процесс-логики и управления, соответствующая сложившимся за 5 поколений CMS понятиям юзабилити, будет настоящим переворотом, заслуживающим похвалы и должного внимания. А мелочи, подобные подключению CDN и облачных хранилищ уже год как должны восприниматься обыденной функцией, а не brand new фичей)
                          +3
                          1. В какой популярной CMS есть аналог монитора производительности?

                          2. WAF и htmlspecialchars — при чем здесь это? Вы правильно понимаете функции WAF?

                          3. «CDN и облака — обыденные функции». Повторюсь, пожалуй. В какой CMS?
                            0
                            В umi.cms недавно появилась возможность «Оценить производительность системы» :)
                              +1
                              Да-да. А в последнем апдейте стали не просто абстрактную цифру рисовать, но и писать слова типа «хорошо», «плохо». ;))

                              До полноценного инструмента — расти и расти.
                                0
                                Главное начать :)

                                У меня вот на одном из сайтов сейчас пишет «результат ниже нормы», хотя сайтик достаточно быстро работает… подробностей не хватает.
                  –8
                  а чего человека заминусовали? Вы пользовались этим гамном (битрикс)? и как нравиться?
                    +5
                    Пользуемся и вполне довольны :)
                      +2
                      Одна из лучших CMS.

                      p.s. не хвастовства ради — за плечами больше 30 проектов именно на битриксе.
                      0
                      Здравствуйте, наше облачное хранилище расположено в России поддерживает хостинг видео. Видео из облака показываются в потоковом, в том числе — мультибитрейтном режиме. Есть ли у вас видеоплееры (Flash/HTML5) и поддерживают ли они потоковое вещание видео (RTMP, HTTP Dynamic Streaming, HLS)?

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое