Общие советы по работе сетевых приложений на EC2

Общие советы по работе сетевых приложений на EC2

Я написал сетевое приложение и развернул его на одном экземпляре EC2 (M1-large).

Приложение представляет собой своего рода чат-комнату (только оно позволяет делать и другие вещи, помимо отправки сообщений), что позволяет владельцам смартфонов общаться на близком (физическом) расстоянии, скажем, до 5 метров.

Это мое первое сетевое приложение, и у меня есть некоторые сомнения и вопросы по нему:

  1. Поскольку это очень избирательный чат (вы увидите только тех, кто находится очень близко), я понятия не имею, как я могу сделать балансировку нагрузки: если я возьму, например, 2 экземпляра, один в Европе и один в США, я хотел бы перенаправить людей из Европы на первый, а людей из США на последний. Если я не могу гарантировать это перенаправление, все приложение бесполезно. Есть ли способ сделать это с помощью Route 53? Есть ли смысл делать это? Разве одного огромного экземпляра недостаточно?

  2. Я попытался протестировать производительность экземпляра при высокой нагрузке. Поэтому я написал собственное приложение, которое имитировало 200 тыс. запросов в час, и запустил его на других экземплярах EC2. Казалось, что проблем не было (кроме увеличенной задержки для некоторых запросов, что кажется нормальным для высокой загрузки ЦП при одновременном приеме большого количества подключений). Мой вопрос в том, кажется ли это хорошим нагрузочным тестом, если я ожидаю 500 тыс. пользователей. Я знаю, что это довольно расплывчатый вопрос, но довольно расплывчатого ответа тоже будет достаточно.

  3. С точки зрения безопасности. Какие общие меры предосторожности мне следует предпринять для снижения риска нарушения безопасности? Является ли отключение всех портов (кроме порта прослушивания моего приложения) в брандмауэре хорошей идеей? Или это излишне. Опять же, довольно расплывчатый вопрос. Буду признателен за любые общие ответы.

Спасибо

решение1

  1. Поскольку ваше приложение основано на близости, вы можете настроить серверы в разных регионах с минимальной или нулевой потребностью в перекрестных помехах. Воспользуйтесь функцией Route53 «Маршрутизация на основе задержки». В большинстве случаев это должно привести к тому, что люди будут добираться до ближайшего сервера. Однако, поскольку это не «гео-маршрутизация», это не гарантировано. Преимущество нескольких серверов по всему миру по сравнению с одним массивным экземпляром заключается в том, что вы уменьшите задержку между клиентом и сервером.

  2. Если ваша симуляция правильно отражает использование ваших пользователей, то ваши результаты должны многое вам сказать. Если 200 тыс. запросов в час правильно отражает активность для 500 тыс. пользователей, то все должно быть в порядке. Если нет, то скорректируйте свои тесты. Главное — убедиться, что ваш тест правильно отражает 500 тыс. пользователей, тогда ваши результаты тоже будут.

  3. Закройте порты в группе безопасности для всего, что не является существенным для вашего приложения. Не оставляйте открытыми порты RDP, SSH или базы данных. Оставьте открытым только порт вашего приложения.

Связанный контент