Облачные хранилища для сайтов от компании Инфо-Проект
Брянск, 10 Января 2012
Компания Инфо-Проект начинает использование одной из самых интересных возможностей хранения данных корпоративных сайтов — в облачных хранилищах.
Рассмотрим, какую практическую пользу может принести их использование для владельцев сайтов.
К чему стремится его владелец? За исключением узкоспециализированных ресурсов — к росту сайта, расширению его аудитории, увеличению той прибыли (денежной — в явном виде, или же «прибыли вниманием»), которую приносит проект. Хорошая и понятная цель для любого интернет-магазина, информационного ресурса, социальной сети и т.п.
Такая цель сама собой подразумевает несколько более мелких задач, которые нужно научится наиболее эффективно решать:
Можно изобрести несколько велосипедов для решения всех этих задач: поставить несколько серверов, вместо одного, чтобы обеспечить надежность; постоянно апгрейдить железо по мере роста; вынести статику на отдельный файловый сервер…
Гораздо удобнее, а главное — эффективнее — научиться работать в облачной инфраструктуре, использовать ее сервисы, масштабироваться и быть готовыми к разработке не просто сайта, а настоящего облачного сервиса.
Что же это такое — облачное хранилище?
Если попробовать описать буквально в двух словах: для пользователя — это большой-большой сервер для хранения статического контента, который можно очень быстро раздавать по 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.
Почти все они предлагают примерно похожий функционал (с точки зрения пользователя):
Рассмотрим, какую практическую пользу может принести их использование для владельцев сайтов.
К чему стремится его владелец? За исключением узкоспециализированных ресурсов — к росту сайта, расширению его аудитории, увеличению той прибыли (денежной — в явном виде, или же «прибыли вниманием»), которую приносит проект. Хорошая и понятная цель для любого интернет-магазина, информационного ресурса, социальной сети и т.п.
Такая цель сама собой подразумевает несколько более мелких задач, которые нужно научится наиболее эффективно решать:
- Минимизация расходов на эксплуатацию и снижение финансовых рисков на старте проекта
- Масштабирование при росте нагрузки и обратное масштабирование
- Надежность – обеспечение SLA, при чем, возможно, разный уровень SLA для разных категорий клиентов
- Быстрая отдача динамического и статического контента
Можно изобрести несколько велосипедов для решения всех этих задач: поставить несколько серверов, вместо одного, чтобы обеспечить надежность; постоянно апгрейдить железо по мере роста; вынести статику на отдельный файловый сервер…
Гораздо удобнее, а главное — эффективнее — научиться работать в облачной инфраструктуре, использовать ее сервисы, масштабироваться и быть готовыми к разработке не просто сайта, а настоящего облачного сервиса.
Что же это такое — облачное хранилище?
Если попробовать описать буквально в двух словах: для пользователя — это большой-большой сервер для хранения статического контента, который можно очень быстро раздавать по 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, клиенты)
Заказатьаудит сайта