Рубріки: ДосвідНовини

Розробники TikTok зекономили компанії $300 000 на рік: просто переписали код Go API на Rust

Дмитро Сімагін

Розробники TikTok переписали критично важливі Go API на Rust, що призвело до подвійного збільшення продуктивності та економії для компанії $300 тисяч на рік. Про це в своєму LinkedIn пише Tech Lead Amazon Анімеш Гайтонде. Автор коментує пост стажера TikTok Xiaoyun Wu, який той виклав у своєму блозі.

Довгий час платежі TikTok базувались на мові Go через її простоту, паралельність та продуктивність. Однак врешті трафік API, який стосується отримання балансу користувача та статистики, досяг 100 тисяч запитів на секунду. Завантаження процесора різко зросло, і це стало критичним вузьким місцем, яке могло б уповільнити продуктивність.

Центральний процесор став вузьким місцем через:

  • Інтенсивну серіалізацію/десериалізацію.
  • Паузи при зборі сміття в GoLang.
  • Надмірних витрат під час виконання GoLang через неефективний розподіл пам’яті.

Команда TikTok вирішила поекспериментувати з Rust, оскільки подальша оптимізація коду Go дала б мінімальні переваги. Вони переписали лише критично важливі API, пов’язані з процесором, на Rust, залишивши інші API, написані на Go, недоторканими.

Міграція на Rust призвела до таких покращень:

  • Зниження навантаження процесора на 33%.
  • На 72% менше використання пам’яті.
  • На 76% менше затримки при відповіді системи.

Ось як Rust вирішив проблеми, які були присутні в Go:

  • Нульове збирання сміття — Rust забезпечує детерміноване володіння та терміни життя для об’єктів.
  • Структури даних Copy-on-Write дозволяють уникнути непотрібних копій, зменшуючи обсяг пам’яті.
  • Абстракції з нульовою вартістю — на відміну від Golang, немає додаткових накладних витрат під час виконання остаточного скомпільованого коду, що економить 10 циклів процесора.

Команда також виконала структуровану міграцію з Go на Rust, яка включала запуск нового сервісу в тіньовому режимі та гарантію 100% коректності.

Одним із вражаючих аспектів цього експерименту є переписування лише критичних частин системи на Rust, а не міграція всього сервісу. Це забезпечує правильний баланс між продуктивністю та додатковими накладними витратами на обслуговування. 

Останні статті

Microsoft оприлюднила системні вимоги до ігрових ПК на Windows 11

Microsoft вперше опублікувала детальні системні вимоги до ігрових ПК під Windows 11, розділивши їх на…

15.12.2025

За три місяці в Україні вдвічі зросла кількість miltech-вакансій. Але без віддаленої роботи

За останній квартал в Україні вдвічі збільшилась кількість miltech-вакансій. Зараз на Djinni розміщено 360 вакансій…

15.12.2025

В Android 17 з’явиться функція блокування окремих програм

Google готується додати в Android 17 нову функцію блокування окремих застосунків, ймовірно, за допомогою пароля…

15.12.2025

Українська освіта не встигає реагувати на дефіцит інженерів у DefenceTech — дослідження ITExpert

Навіть приріст у +82% заяв на окремі технічні спеціальності не покриває потреби ринку. На окремі…

15.12.2025

У Чернівцях судять студента-програміста КПІ, який зламав Netflix з метою продажу чужих акаунтів

Шевченківський районний суд міста Чернівці почав розгляд справи студента 2-го курсу факультету інформатики та обчислювальної…

15.12.2025

«Великий стрибок у програмуванні»: експерти поділились враженнями від GPT-5.2

Реакція експертів на нову LLM-модель GPT-5.2 від OpenAI, малює двояку картину: реліз названо великим кроком…

15.12.2025