AWS AppSync для приложения для общения в чате

Я пытаюсь использовать AppSync для общения в чате. Я могу воспроизвести руководство по AWS (https://aws.amazon.com/blogs/mobile/building-a-serverless-real-time-chat-application-with-aws-appsync/)

Однако я все еще не уверен, сможет ли AppSync справиться с производственной средой для приложения чата. Будет ли это дорого из-за части DynamoDB?

Более того, если я подписываюсь на каждый разговор, будут ли проблемы с производительностью для пользователей во внешнем интерфейсе, если у меня будет около 1000 разговоров на пользователя?


person kkesley    schedule 04.10.2018    source источник


Ответы (1)


Использование AppSync и DynamoDB, без сомнения, подойдет для производственной среды, обрабатывающей 1000 разговоров, и может значительно расширяться. Однако стоимость может возрасти как для AppSync, так и для DynamoDB при масштабировании.

Говоря это, это компромисс при рассмотрении общей стоимости владения, поскольку усилия по разработке и управлению значительно меньше, поскольку это полностью управляемые услуги.

Это также субъективный взгляд на то, с какой технологией вы сравниваете. Поэтому я бы посоветовал провести приблизительное планирование емкости и дать оценку для сравнения с несколькими другими технологиями (даже в рамках AWS, например; вы также можете рассмотреть AWS IOT Websockets, AWS Message MQ для создания приложений чата в реальном времени) .

person Ashan    schedule 04.10.2018
comment
Под 1000 разговоров вы имеете в виду, что каждый пользователь имеет 1000 разговоров или все приложения имеют 1000 разговоров? Потому что я имел в виду по 1000 разговоров на каждого пользователя. Теперь они должны подписаться на эти 1000 разговоров во внешнем интерфейсе, верно? Повлияет ли это на производительность в интерфейсе? - person kkesley; 04.10.2018
comment
Да, из интерфейса возникнет проблема, если у вас 1000 подключений. Тем не менее, вы можете спроектировать приложение таким образом, чтобы 1000 разговоров происходили через один или несколько каналов (WebSockets). - person Ashan; 04.10.2018
comment
Ах, я понимаю ... Это то, о чем я думаю, просто подписывать пользователей на себя и отправлять запросы через сервер (может быть, лямбда?) Но тогда лямбда должна читать список пользователей для каждого отправленного сообщения. Жизнеспособна ли эта конструкция? - person kkesley; 04.10.2018
comment
Если это групповой обмен сообщениями, да, вам нужно будет транслировать сообщение на каждый пользовательский канал (где вам нужно будет найти участников группы и отправить). Если это отдельные сообщения, вы можете включить идентификатор получателя в сообщение, чтобы Lambda могла напрямую публиковать на соответствующем канале (все же вам нужно будет проверить, может ли отправитель отправить сообщение конкретному получателю). - person Ashan; 04.10.2018
comment
@Ashan Если вы настраиваете подписки, Appsync использует либо чистые WebSockets, либо MQTT поверх WebSockets в качестве сетевого протокола между клиентом и службой. Протокол зависит от версии клиента, который вы используете. - person user3376065; 17.12.2019