TGViewer
Test Engineering Notes Test Engineering Notes @testengineering · 4.01K subscribers
Post #780 1.33K
📡 Як веб сокети на бекенді можуть привести до мільйонних рахунків на AWS

#engineering #case

Сьогодні я приніс хардкорну цікаву статтю про те, як базова імплементація продукту на веб сокетах може призвести до величезних рахунків від AWS.

Код був правильний, тести - зелені. Просто ... не вистачало оптимізації.

🧪 В чому проблема?

А проблеми - не було. (На перший погляд)

Продукт recall.ai використовує CPU замість GPU для процессінгу відео. Для низько-рівневої взаємодії вони використовують веб сокети.

Виявилось, що найбільше CPU займають функції memcpy та memmove. Причому ці функції викликаються як на стороні кастомного Python клієнту (при обробці даних), та і на стороні Chromium (при відправці даних). Для масштабу - вони обробляли відео дані в середньому десь зі швидкістю 150 MB/s.

Здається, ну то й що? Якщо копнути глибше, то стандарт Web Socket, якого дотримується Chromium, вимагає, щоб дані були фрагментованими та замаскованими. Тобто треба витрачати додаткові ресурси на те, щоб розбити дані на частини розміром 131 Kb, а потім ще й закодувати кожен байт перед відправкою по мережі.

Як бачимо, купа додаткової обробки та складнощів.

⭐️ Що ж зробили розробники?

Спочатку вони думали пересилати дані у вигляді простих TCP/IP пакетів по мережі. Але знову ж таки - ці пакети дуже обмежені за розміром. Плюс - треба буде компіювати ці пакети з user-space в kernel-space (згідно з тим, як працює мережевий стек Linux). Так само, доречі, потрібно було б робити у випадку використання нативних доменних сокетів Unix.

Врешті-решт розробники знайшли вихід - використати Shared Memory - тобто памʼять, яка може використовуватись декількома процесами одночасно. Chromium записує туди блоки даних. а відео сервіс зчитає ці дані для подальшої обробки.

В Rust є імплементації для цього: circular-queue, ringbuf, ringbuffer, ring_queue, dasp_ring_buffer.

Але розробники recall.ai зробили свою кастомну версію алгоритму ring-buffer. Чому - бо їм треба було мінімізувати копіювання даних. Деталі - можна почитати в самій статті.

Таким чином, вони змогли зекономити близько мільйона доларів витрат на AWS на рік.
www.recall.ai How WebSockets cost us $1M on our AWS bill Learn how WebSockets caused a $1M spike on Recall.ai's AWS bill and what architectural changes the team made to solve the cost problem.
  • ❤ 19
More from @testengineering
  1. Oct 6, 2026Вже жовтень - саме час готуватися до ISTQB CT-GenAI "До Нового Року є ще цілий квартал щоб…
  2. Oct 5, 2026Ministry of Testing - англомовні івенти на всі смаки #testing #ai Всім привіт. Хочу розпов…
  3. Sep 30, 2026Скіл, щоб прибрати зайве #ai Цікавий скіл, щоб не продиратись через купу згенерованого тек…
  4. Sep 29, 2026Що таке агент? #ai Зрозумій, на небесах в тестуванні тільки й говорять, що про море агенті…
  5. Sep 28, 2026Navigating the AI Shift #testing@testengineering #ai@testengineering Трохи старе, але не м…
  6. Sep 25, 2026Сувора QA Конференція - AI в тестуванні Вже наступного тижня пройде найцікавіша онлайн-кон…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →