С момента основания Stream в 2014 году Stream является постоянным и восторженным клиентом AWS. Тьерри Шелленбах, соучредитель и генеральный директор Stream, объявил о новом предприятии на саммите AWS в Амстердаме вместе с соучредителем и техническим директором Томмазо Барбугли.

Stream прошел долгий путь с тех пор, как впервые начал работать с AWS, и теперь поддерживает каналы и чат для более чем 500 миллионов конечных пользователей. В этой записи блога мы расскажем о некоторых передовых методах работы и сервисах AWS, которые позволили им поддерживать такой быстрый рост.

Фокус

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

Прекрасным примером этого является журнал Stream API. Для обеспечения высокой доступности и отказоустойчивости компания хранит все вызовы API и может воспроизвести их, если что-то пойдет не так. Журнал запросов API полностью построен на основе архитектуры AWS с использованием Amazon Kinesis (Kinesis Firehose) и AWS Lambda, что обеспечивает высокую доступность и время безотказной работы, а также гибкость и экономичность.

То же самое касается такой архитектуры, как балансировщики нагрузки, база данных PostgreSQL для конфигураций и хранилище ресурсов. Разумеется, все основные функции выполняются AWS, поэтому Stream может сосредоточиться на создании полностью управляемой инфраструктуры чата и подписки для своей клиентской базы.

Низкий уровень

Передавая на аутсорсинг инфраструктуру, которая не обеспечивает функциональность, которая является основной для вашего продукта, вы можете сосредоточиться на том, что делает ваше приложение или API уникальным. Когда основатели запустили Stream, они активно использовали Кассандру для своей рабочей нагрузки. Кассандра подошла хорошо; однако со временем производительность и связанные с этим затраты оказались не идеальными для высокого спроса, который платформа Stream видит изо дня в день.

Последние два года Stream использует специально созданную базу данных под названием Keevo, которая работает поверх EC2. Технология основана в основном на Go, RocksDB, Raft и полагается на невероятно быстрый механизм хранения NVMe.

В дополнение к основным продуктам для каналов и чата Stream предлагает модерацию на основе искусственного интеллекта в рамках своего предложения чата. Для выполнения масштабной модерации стек модерации обеспечивается набором рабочих, использующих API Python (Flask), размещенный непосредственно на экземплярах EC2 T4. Для распределения трафика между отдельными работниками, работающими на экземплярах T4, используется балансировка нагрузки на уровне приложений (HTTP). Amazon RDS под управлением PostgreSQL используется для хранения исходного текста, а также результатов, полученных после модерации на основе искусственного интеллекта.

В будущем Stream хотела бы перенести большую часть своей среды, чтобы использовать AWS MSK (Apache Kafka) для настройки, масштабирования и оптимизации процесса управления кластерами модерации в производственной среде.

Графические процессоры NVIDIA T4

По сути, Stream использует нейронную сеть в стиле BERT для классификации текста. Эта конкретная модель имеет более 110 миллионов параметров, что может затруднить выполнение логического вывода с ограниченным временем отклика.

Для обучения у Stream есть специально созданные настольные компьютеры, оснащенные GTX 1080, использующие новые возможности JIT-трассировки PyTorch. Скорость вывода составляла около 7 мс при пакетной обработке предложений и 760 мсек при пакетировании до 256 предложений одновременно.

Поскольку Stream был в некоторой степени доволен такой скоростью, они попытались развернуть свои модели на экземплярах AWS P2, что оказалось немного разочаровывающим. Когда все настроено одинаково, Stream показал скорость вывода 60 мс для пакета из 1 и более 7 секунд для пакета из 256. К сожалению, это не подходило для производственной среды Stream, поэтому они перешли на тип экземпляра P3. Однако инстанс P3 стоит ~ 3,06 доллара в час. (для ценообразования по требованию) и того, что Stream пытался выполнить, они столкнулись с проблемой, когда дело дошло до предоставления экономически эффективного решения для их клиентской базы.

Если требуется что-то более быстрое, чем K80 на инстансе P2, и более экономичное, чем инстанс типа P3, новые инстансы AWS G4 EC2 с графическими процессорами NVIDIA T4 стали идеальным решением. Хотя Stream и не был таким быстрым, как графический процессор специально созданного компьютера, он показал поразительную скорость вывода. Потребовалось 8 мс для пакета из 1 и чуть более 1 секунды для пакета из 256 - этого было достаточно быстро для их потребностей в модерации в режиме реального времени и пакетной обработки.

Обнаружив графические процессоры NVIDIA T4, Stream быстро обратился к нашей команде здесь, в AWS. Графический процессор NVIDIA T4, предлагаемый AWS, обеспечивает совершенно новый ландшафт для таких компаний, как Stream, которым требуется высокая производительность, высокая доступность и высокоскоростная обработка графическим процессором для рабочих нагрузок, таких как модерация AI в реальном времени. Stream с гордостью сообщает, что они более чем счастливы получить в свои руки новый графический процессор NVIDIA T4, поскольку он экономичен и эффективен.

Опыт разработчика

Stream считает, что сделать процесс адаптации вашей основной целью является ключом к завоеванию рынка. Для Stream этим ключом является опыт разработчика - они делают все возможное, чтобы разработчики понимали и чувствовали себя комфортно с их предложениями продуктов. Stream создал прекрасные учебные пособия для разработчиков, такие как интерактивное Учебное пособие по React Chat, Учебное пособие по React Native Chat, Учебное пособие по iOS / Swift и Учебное пособие по Java / Kotlin Chat для Android.

Все это, конечно, приличный объем работы; однако упорный труд окупился. Корпоративные клиенты Stream начинают переходить с собственных и устаревших сторонних платформ на продукты для каналов и чатов, которые предоставляет их компания.

Последние мысли

Один из самых больших споров для стартапов и даже более зрелых компаний - это то, сколько нужно построить собственными силами, а сколько добиться за счет использования сторонних сервисов. Stream всегда считал, что для функций, которые не являются основной частью вашей инфраструктуры, лучше всего использовать сторонние сервисы, чтобы вы могли сосредоточить свои усилия на разработке на том, что наиболее важно для вас и вашей организации.

Stream надеется на продолжение сотрудничества с AWS, используя больше текущих функций, а также новых предложений по мере их появления. Это позволит группе инженеров сосредоточиться на создании наиболее ценных функций, которые предоставляет Stream.