Я знаю, что CDN предназначен только для статического содержимого. Но тогда мне все равно придется рассылать серверы Apache по всему миру, верно? Итак, когда я это сделал, почему бы мне просто не настроить несколько выделенных серверов apache на месте, обслуживающих только статический контент, как CDN?
есть ли реальные преимущества от использования CDN по сравнению с этим сценарием?
CDN используется для любого контента, который будет доступен множество раз в самых разных местах. Например, YouTube использует CDN.
Основное преимущество CDN в том, что у вас есть локальная точка присутствия для большинства ваших интернет-пользователей. Если вы заметили, что вы получаете много трафика из Северной Америки, Англии и Бразилии, у всех из них нет возможности получить оптимальный опыт, потому что если ваши серверы расположены в Новой Зеландии, то все они будут доступ с разной скоростью.
Размещая свои серверы в странах, из которых вы получаете большую часть трафика, а затем направляя пользователя на ближайший к ним сервер, вы устраняете множество потенциальных узких мест.
Простое наличие «некоторых выделенных серверов, обслуживающих только статический контент» не решает эту проблему, поскольку все ваши серверы будут находиться в одном месте. Если вы собираетесь распространить свои серверы по всему миру, тогда ваши два сценария будут одинаковыми.
С учетом всего сказанного, я бы никогда не стал создавать свой собственный CDN, если бы я не был кем-то размером с YouTube или Facebook. Есть несколько провайдеров, у которых уже есть массивная, надежная сеть, которую вы можете использовать. Для получения дополнительной информации см. Следующие вопросы ServerFault:
Машина, которую вы используете для питания своего приложения, будет настроена для удовлетворения потребностей вашего приложения. Эта конфигурация может быть неоптимальной для статических ресурсов. Вы можете запустить nginx / lighttpd на том же компьютере, чтобы работать со статическим контентом и создать собственный CDN, сохраняя при этом серверы приложений, настроенные для оптимального запуска вашего приложения. Самостоятельное выполнение этой задачи сопряжено с определенными затратами по сравнению с передачей ее части на субподряд тому, кто занимается только этим.
Имеет ли смысл делать это внутри компании по сравнению с заключением контракта с CDN - это финансовый вопрос / вопрос, на который вам нужно будет ответить, но, в зависимости от вашего приложения, серверов, которые вы развертываете, конфигурации, которую вы можете придумать, вы можно было бы избежать использования поставщика CDN. Вы можете сосредоточиться на приложении и позволить кому-нибудь заняться им, или вы должны хорошо разбираться в работе с полным пакетом.