В этой статье пойдет речь о том, как мы, Getwear, решили проблему доступности нашего сервиса из любой точки планеты, в которой есть интернет. Описанный (и легко доступный для внедрения) инструментарий может быть полезен для владельцев сайтов любой тематики, рассчитанных на аудиторию из разных стран.
После того, как мы запустили проект (о проблемах с созданием нашего сайта мы уже писали в нашей первой статье), мы столкнулись с новыми неприятностями — с доступностью сайта в различных странах мира.
Наши джинсы заказывают в самых разных странах: от сытой и благополучной Европы до босоногой Африки. Но ждать загрузки Flash-конфигуратора не хочет никто. Контент нашего сайта изначально быстро загружался из Штатов (сервер находится именно там), но при этом он очень медленно грузился из Германии или Израиля. Из-за непонятных сетевых флуктуаций мы теряли клиентов, и это нам совсем не нравилось.
Изначально мы выбрали дорогой канадский
Стало ясно, что если мы быстро не решим проблему с доступностью, то красивый сайт и удобный конфигуратор никого не впечатлят — наши потенциальные покупатели просто не станут дожидаться их загрузки.
Так мы ушли в облака — решением проблемы доставки контента стала CDN-сеть.
Технология CDN (сеть доставки контента, content delivery network) буквально создана для проектов вроде Getwear, пользователи которого живут в разных странах мира и загружают с сайта «тяжелые» файлы вроде скриптов, Flash и графики. Увеличение скорости доступа осуществляется за счет того, что контент грузится не прямо с вашего основного сервера, пинг до которого может быть далек от идеального, а с одного из серверов CDN, выбираемого по различными принципам, в том числе географической близости к пользователю. Мы использовали решение от Akamai, но есть и другие варианты.
Наш сервер расположен в облаке Rackspace — этот
В общем случае подключение сервиса выглядит так:
1. Для начала мы создаем “контейнер” Akamai. В нем отсутствуют каталоги — все файлы лежат прямо в корне контейнера.
2. Для удобства использования создаем alias контейнера, так как изначально контейнер имеет тяжелый и неудобный URL вроде a0c3b42c5dfd0490222c-b6a09a90aa4d4b9ccff1b80f6958ce71.r25.cf2.rackcdn.com. Alias (в нашем случае static.getwear.com ) создаем, прописывая ссылку на него в DNS-параметрах сервера.
3. Заливаем в контейнер наш контент — либо через не слишком удобный веб-интерфейс самого Rackspace, либо используя специальный клиент типа Cyberduck. Для работы клиента потребуется ввести логин от Rackspace и Rackspace API ID (его можно найти в меню Your Account → API Access).
4. Проставляем на сайте ссылки на контент из контейнера (например, static.getwear.com/1.swf).
5. …
6. PROFIT!
Теперь облако само определяет местонахождение пользователя и подгружает тяжелый контент с наиболее близкого к нему сервера Akamai.
У данного решения есть один минус и несколько плюсов.
Минус:
Как и все в этом мире, CDN-решения стоят денег — у Rackspace стоимость дискового пространства начинается с 10 центов за гигабайт в месяц, а трафик — с 18 центов за гигабайт. Цены значительно снижаются в зависимости от объема потребляемых ресурсов.
Плюсы:
1. Для большинства стандартных платформ (WordPress, Drupal и т.д) есть готовые модули взаимодействия с Akamai.
2. Для прочих сайтов существуют различные API, интеграция которых не займет много времени. В этом мы убедились на собственном опыте.
3. Система легко выдерживает высокую нагрузку. Там, где обычный выделенный
4. Экономия на оплате трафика. Несмотря на то, что использование сервиса стоит денег, взимаемая плата обычно ниже стоимости трафика на обычном выделенном
5. Для большинства проектов CDN является одним из самых удобных способов организации доставки тяжелого контента до «распределенных» пользователей.
Безусловно, приведенный пример не решает абсолютно всех проблем с доступностью сайта. Ведь, как известно, “пути роутинга неисповедимы”. Да и кроме проблем доставки собственно контента узким местом может являться как качество кода самого сайта, так и качество самого
А у вас есть опыт работы с CDN-сервисами? Что можете посоветовать или порекомендовать?
Автор: lookso