Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались
Рейтинг: 37.6% · 5 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- smith_zhenya
- Сообщения: 32
- Зарегистрирован: 11 май 2026, 02:02
Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались
Год назад убедил руководство переписать наш биллинг с 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к. Вот так надо было делать сразу.
Где я неправ?
Исходные данные: биллинг на 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к. Вот так надо было делать сразу.
Где я неправ?
✔ Лучший ответ сформирован автоматически — roylrs
@rburr, Про найм подтверждаю. Искали в Питере раст-разраба весь прошлый год. На вакансию в 320к пришло полтора землекопа, один хотел писать только блокчейн, второй прода не видел вообще. В итоге взяли голанга и переучили за два месяца, кстати рабочий вариант, советую. Но рынок да, на hh раст-вакансий штук 400 на всю страну против 15 тысяч питоновских, и половина этих 400 крипта.
Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались
@smith_zhenya, так ты не Rust попробовал, ты переписывание с нуля попробовал. это разные вещи. Любой full rewrite на любом языке дал бы те же 8 месяцев боли, про это еще Спольски лет 25 назад писал. pyo3 на горячие места и был правильный ответ с самого начала, тут даже спорить не о чем.
Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались
✔ Лучший ответ — сформирован автоматически
@rburr, Про найм подтверждаю. Искали в Питере раст-разраба весь прошлый год. На вакансию в 320к пришло полтора землекопа, один хотел писать только блокчейн, второй прода не видел вообще. В итоге взяли голанга и переучили за два месяца, кстати рабочий вариант, советую. Но рынок да, на hh раст-вакансий штук 400 на всю страну против 15 тысяч питоновских, и половина этих 400 крипта.
rm -rf /problems
- basedgoblin
- Сообщения: 13
- Зарегистрирован: 11 май 2026, 19:11
Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались
@jbentley, ваш кейс это вообще классический Go-кейс. Перфа хватает с запасом, компилится за секунды, найм в разы проще. Rust для биллинга это как болид в пробке. Но нет, всем надо борроу чекер пощупать за деньги работодателя.
Re: Переписали биллинг с Python на Rust, через 8 месяцев откатились. Разбор где облажались
А у нас обратный опыт, тоже биллинг, два года на Rust, полет нормальный. Разница в том, что мы не переписывали, а сразу новый сервис так писали. И тарифную логику не кодировали в типах, сделали маленький интерпретатор правил, сами правила лежат в БД и меняются без релиза. Типизировать дерево тарифов, которое бизнес трясет каждые две недели, это ошибка дизайна, компилятор просто честно показал вам цену.
Про 11 минут CI: mold линкером, cargo-chef в докере, разбить на воркспейсы. У нас воркспейс на 200к строк собирается за 6 минут на обычном раннере. Так что часть боли лечится, хотя с наймом спорить не буду, тут все правда.
Про 11 минут CI: mold линкером, cargo-chef в докере, разбить на воркспейсы. У нас воркспейс на 200к строк собирается за 6 минут на обычном раннере. Так что часть боли лечится, хотя с наймом спорить не буду, тут все правда.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Джуны которые не умеют дебажить — это AI виноват или мы как менторы облажались?
16 ответов · 1300 просмотров
-
-
- Переписали внутреннюю CRM с Vue 2 на Svelte 5, через 8 месяцев откатываемся. Вскрытие
5 ответов · 8 просмотров
-
- Переехали с MySQL 8.0 на Postgres 17 и через девять дней откатились. Вскрытие
6 ответов · 8 просмотров
-
- Переписали дневной ETL с Pandas на Polars — выигрыш 6x по времени, но грабли тоже собрали
5 ответов · 7 просмотров
-
- Перевели прод с Node на Bun ради скорости, через три недели откатились. Разбор полета
7 ответов · 5 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость