Высоконагруженные джинсы

в 4:43, , рубрики: akamai, CDN, highload, web-разработка, Блог компании «Getwear», Веб-разработка, хостинг, метки: , , ,

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

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

Наши джинсы заказывают в самых разных странах: от сытой и благополучной Европы до босоногой Африки. Но ждать загрузки Flash-конфигуратора не хочет никто. Контент нашего сайта изначально быстро загружался из Штатов (сервер находится именно там), но при этом он очень медленно грузился из Германии или Израиля. Из-за непонятных сетевых флуктуаций мы теряли клиентов, и это нам совсем не нравилось.

Изначально мы выбрали дорогой канадский хостинг, который обещал чуть ли не отрицательное время загрузки. Но сайт все-равно медленно открывался из Европы. Затем мы перенесли сервис на американский сервер, который буквально сидел на трансатлантическом кабеле, другой конец которого упирался в Германию. Мы предполагали, что “толстый” канал поможет конфигуратору загружаться ощутимо быстрее. Это снова не помогло.

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

Так мы ушли в облака — решением проблемы доставки контента стала CDN-сеть.

Технология CDN (сеть доставки контента, content delivery network) буквально создана для проектов вроде Getwear, пользователи которого живут в разных странах мира и загружают с сайта «тяжелые» файлы вроде скриптов, Flash и графики. Увеличение скорости доступа осуществляется за счет того, что контент грузится не прямо с вашего основного сервера, пинг до которого может быть далек от идеального, а с одного из серверов CDN, выбираемого по различными принципам, в том числе географической близости к пользователю. Мы использовали решение от Akamai, но есть и другие варианты.

Наш сервер расположен в облаке Rackspace — этот хостинг не только предоставляет основные инструменты для работы с Akamai, но и позволяет значительно наращивать вычислительные мощности тогда, когда это становится необходимым. Функционал для работы с CDN называется Rackspace Cloudfiles. Отметим, что для использования Cloudfiles совершенно не обязательно иметь сервер в 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 — довольно простое решение, доступное каждому и легко внедряемое, может стать первым шагом на пути дальнейшего развития вашего проекта.

А у вас есть опыт работы с CDN-сервисами? Что можете посоветовать или порекомендовать?

Автор: lookso

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js