Оптимизация затрат на CDN с помощью Amazon Route 53
Обычно CDN используют в случае, когда у сайта или приложения аудитория распределена по большой территории. Однако, в какой-то момент времени CDN начнет стоить дорого (ведь вы всегда оплачиваете трафик). В таком случае необязательно строить свой CDN или жертвовать опытом пользователей ради экономии.
Вспомним, что CDN – это просто сеть компьютеров, которые отдают контент посетителям сайта:
Сколько что стоит
Сейчас сервер средней конфигурации, [https://selectel.ru/services/dedicated/ например в Селектеле] стоит около $250 в месяц. Обычно такие сервера имеют полосу пропускания в 100Мб и довольно большой предел по месячному трафику (иногда даже без него).
Это значит, что за $250 вы сможете обслужить отдачу приблизительно 5…10 млн фотографий в сутки (около 1 Тб, при среднем размере фотки в 250 Кб).
При этом, если использовать [https://aws.amazon.com/ru/cloudfront/pricing/ Cloudfront] для такой же задачи, обслуживание 30 Тб в месяц обойдется в 10 раз дороже.
Использование частичной раздачи
CDN будет очень невыгоден, если ваша аудитория распределена, но имеет точки концентрации. Например:
- Германия: 50%
- Нью Йорк: 40%
- Остальные локации: 10%
В этом случае будет разумно:
- Поставить сервера, отдающие контент в Германии и Нью Йорке.
- Для запросов из других географий использовать CDN.
Т.е. иметь структуру, в которой часть запросов обслуживает CDN, а часть – наши сервера:
Стоит обязательно учесть, что CDN провайдеры обладают повышенными показателями доступности. Иногда, может быть выгоднее переплатить и остаться с настроенной системой качества. В других случаях можно обеспечить простое и надежное решение самостоятельно используя, например, несколько датацентров в каждой локации.
Пример реализации на основе Amazon Route 53
Для реализации схемы нам понадобится провайдер Geo DNS, например [https://aws.amazon.com/route53/ Amazon Route 53]. Схема решения будет следующая:
- Необходимо создать новый поддомен на основном домене. У нас это будет testi.onthe.io.
- Для него необходимо создать CNAME запись типа Geolocation на все локации по умолчанию (Default). Она должна указывать на сабдомен вашего CDN провайдера:
- Теперь для локаций, в которых стоят наши сервера, необходимо создать отдельные CNAME записи. В примере запись для Северной Америки:
## Вместо “CDN Provider” должен быть (саб)домен CDN провайдера, увеличить
Теперь домен testi.onthe.io будет отдавать контент следующим образом:
- Если посетитель запрашивает контент с Северной Америки, он будет раздаваться сразу с домена i.onthe.io (наши сервера).
- Если контент запрашивается из другой страны, запрос будет обслужен провайдером CDN.
А это значит, что мы не будем платить CDN провайдеру за трафик, который можем сами обслужить и сделать это эффективнее.
<h2>TL;DR
Затраты на CDN можно существенно сократить, если ваша аудитория имеет точки концентрации. Тогда для части аудитории можно будет отдавать контент со своих серверов, а для другой части – с помощью CDN. Для этого потребуется арендовать несколько серверов и использовать Geo DNS.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: