Должен ли я создавать новые экземпляры (EC2, RDS, VPC, S3) в новых регионах?
Если вы берете бюджетные соображения из картинки, то создание экземпляров в каждом регионе АЗ по всему миру и распространение географического трафика на них было бы большим удовольствием.
Или есть другой способ, как это сделать?
Возможно, самый простой способ, как от внедрения и сопровождения, а также бюджетных соображений было бы реализовать географическую кэш края, как Akamai, CloudFlare и т.д.
Akamai чудовищно дорого, но CloudFlare has some free and very cheap plans.
Использование кеша края означает, что статический кешированный контент может быть передан вашим клиентам с ближайших к нему глобальных пограничных точек, не требуя оптимизации инфраструктуры AWS для регионов.
Например, если вы запрашиваете домашнюю страницу из Ирландии, она может быть отправлена из ирландского края кэш-памяти, тогда как если я попрошу ее из Новой Зеландии, она может быть отправлена из ловушки Australasian edge cache - это doesn ' t добавьте любую сложность в настройку AWS.
В случае, когда кешированная версия вашей страницы не существует в CloudFlare (например), она попадет на ваш исходный сервер AWS для получения результата. Это приведет к изменению географической производительности, но вы торгуете этим против затрат на внедрение экземпляров EC2 в каждом регионе и уменьшенное количество обращений, которые фактически достигают вашей инфраструктуры с помощью кеша.
Если у меня будет больше экземпляров EC2, как следует развертывать обновления для каждого экземпляра?
Это во многом зависит от сложности вашего веб-приложения.
Для более простых приложений вы можете использовать Elastic Beanstalk, чтобы легко развертывать обновления для всех ваших экземпляров EC2 и управлять автоматическим масштабированием.
Для более сложных мероприятий вы можете использовать комбинацию CodeCommit, CodePipeline и CodeDeploy для достижения той же цели.
В-третьих, всегда существует возможность создать собственное средство развертывания с использованием комбинации пользовательских сценариев и вызовов API AWS. Или используйте a tool that has already been created for this purpose.
Каков наилучший способ сделать сайт AWS легким и доступным с небольшой задержкой со всех уголков мира?
Это довольно широкий и сложный вопрос.
Мои предложения состоят в том, чтобы использовать ленивую загрузку, где это возможно, кэшировать все, где угодно, настраивать конфигурацию вашего веб-сервера в пределах одного дюйма своей жизни (и использовать такие вещи, как Varnish, если вы на nginx), оптимизировать все ваши медиа-активы как можно больше и т. д.
Для медиа-активов вы можете использовать CDN (например, S3 или CloudFront) для обслуживания запросов вместо их хранения в экземплярах EC2.
Безусловно, самое важное, что вы могли бы сделать для этого, это было бы поместить в кэш-память (обсуждалось ранее). Если вы сделаете это, ваша производительность AWS будет гораздо меньше беспокоиться.
«Некоторые службы AWS являются глобальными - параметры VPC не будут специфичными для региона, а S3 также является глобальной услугой». 1) Настройки VPC являются региональными. 2) S3 может быть глобальной услугой, но ведра являются региональными. В зависимости от приложения и того, как используются ведра, наличие ведомых областей может повысить производительность. –
Добавление CloudFront для кэширования статических ресурсов может помочь совсем немного. –
@MattHouser спасибо, хорошая точка. [Эта статья полезна] (https://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/), чтобы узнать о репликации поперечной области для S3 –