Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Рейтинг: 37.6% · 5 голосов
Python, Rust, Go, C++, C#, Java, Kotlin: синтаксис, паттерны проектирования, производительность, многопоточность и сравнение языков.
Ответить
Аватара пользователя
smith_zhenya
Сообщения: 32
Зарегистрирован: 11 май 2026, 02:02

Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Сообщение smith_zhenya »

Год назад убедил руководство переписать наш биллинг с Python на Rust. Восемь месяцев пилили, три месяца жили на нем в проде, на прошлой неделе докатили откат обратно. Хочу разобрать по горячим следам, где свернули не туда, может кому сэкономит полгода жизни.

Исходные данные: биллинг на Django + Celery, около 120к строк, p99 на расчете тарифа доходил до 900мс, жрало все это 14 подов. Я принес красивую презу: перепишем на Rust, будет 50мс и 3 пода. Спойлер: стало 40мс и 2 пода, тут все честно. Проблемы вылезли не там.

Первое. Найм. На hh по Москве живых Rust-резюме кот наплакал, мидла искали 4 месяца, в итоге взяли сеньора за 480к, который через полгода ушел в крипту. Питонистов на эти деньги было бы двое.

Второе. Скорость фич. Бизнес меняет тарифную логику примерно раз в две недели. На питоне такая правка занимала день, на Rust с типизацией всего дерева тарифов выходило 3-4 дня, и каждый раз компилятор заставлял перетряхивать половину модулей. Для биллинга, где правила скачут постоянно, это оказалось фатально.

Третье. CI. cargo build на наших селфхостед раннерах шел 11 минут даже с sccache, инкрементальный кэш между MR постоянно инвалидировался. Питоновский пайплайн с тестами шел 4 минуты.

Итог: вернулись на Python 3.13, самое горячее место (расчет тарифной сетки) вынесли в расширение на pyo3, оно дало те же 40мс на критичном пути. То есть Rust остался, но в виде 8к строк, а не 90к. Вот так надо было делать сразу.

Где я неправ?
👍1 ❤️ 🔥 😄2 🤔1
✔ Лучший ответ сформирован автоматически — roylrs
@rburr, Про найм подтверждаю. Искали в Питере раст-разраба весь прошлый год. На вакансию в 320к пришло полтора землекопа, один хотел писать только блокчейн, второй прода не видел вообще. В итоге взяли голанга и переучили за два месяца, кстати рабочий вариант, советую. Но рынок да, на hh раст-вакансий штук 400 на всю страну против 15 тысяч питоновских, и половина этих 400 крипта.
Перейти к ответу →
Аватара пользователя
tor91
Сообщения: 33
Зарегистрирован: 13 май 2026, 08:27

Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Сообщение tor91 »

@smith_zhenya, так ты не Rust попробовал, ты переписывание с нуля попробовал. это разные вещи. Любой full rewrite на любом языке дал бы те же 8 месяцев боли, про это еще Спольски лет 25 назад писал. pyo3 на горячие места и был правильный ответ с самого начала, тут даже спорить не о чем.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
rburr
Сообщения: 77
Зарегистрирован: 12 май 2026, 17:53

Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Сообщение rburr »

@tor91, скилл ишью. 3-4 дня на правку тарифа это вы что-то страшное с архитектурой сделали, борроу чекер тут не виноват.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
roylrs
Сообщения: 14
Зарегистрирован: 26 май 2026, 01:29
Репутация: 491

Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Сообщение roylrs »

✔ Лучший ответ — сформирован автоматически
@rburr, Про найм подтверждаю. Искали в Питере раст-разраба весь прошлый год. На вакансию в 320к пришло полтора землекопа, один хотел писать только блокчейн, второй прода не видел вообще. В итоге взяли голанга и переучили за два месяца, кстати рабочий вариант, советую. Но рынок да, на hh раст-вакансий штук 400 на всю страну против 15 тысяч питоновских, и половина этих 400 крипта.
👍2 ❤️1 🔥1 😄 🤔
rm -rf /problems
Аватара пользователя
jbentley
Сообщения: 20
Зарегистрирован: 24 май 2026, 17:24

Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Сообщение jbentley »

а БД чем держали, sqlx? у него compile-time проверки запросов на большой схеме сами по себе CI убивают, каждое изменение миграции и пересобирай мир. diesel в этом плане честнее, хоть и страшнее.
👍 ❤️1 🔥 😄 🤔1
Аватара пользователя
sainty
Сообщения: 94
Зарегистрирован: 11 май 2026, 02:57

Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Сообщение sainty »

@tor91, не понял, так быстрее в итоге стало или нет? какой p99 получился?
👍1 ❤️ 🔥 😄2 🤔
Аватара пользователя
basedgoblin
Сообщения: 13
Зарегистрирован: 11 май 2026, 19:11

Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Сообщение basedgoblin »

@jbentley, ваш кейс это вообще классический Go-кейс. Перфа хватает с запасом, компилится за секунды, найм в разы проще. Rust для биллинга это как болид в пробке. Но нет, всем надо борроу чекер пощупать за деньги работодателя.
👍 ❤️ 🔥2 😄 🤔
Аватара пользователя
go9
Сообщения: 21
Зарегистрирован: 11 май 2026, 23:07

Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались

Сообщение go9 »

А у нас обратный опыт, тоже биллинг, два года на Rust, полет нормальный. Разница в том, что мы не переписывали, а сразу новый сервис так писали. И тарифную логику не кодировали в типах, сделали маленький интерпретатор правил, сами правила лежат в БД и меняются без релиза. Типизировать дерево тарифов, которое бизнес трясет каждые две недели, это ошибка дизайна, компилятор просто честно показал вам цену.

Про 11 минут CI: mold линкером, cargo-chef в докере, разбить на воркспейсы. У нас воркспейс на 200к строк собирается за 6 минут на обычном раннере. Так что часть боли лечится, хотя с наймом спорить не буду, тут все правда.
👍 ❤️1 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Языки программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость