🐞 Вайбкодинг атакует или как мы потеряли 50к рублей в YeaHub
Вполне себе реальная история нашей ошибки в YeaHub.
Есть у нас senior Java developer, спец своего дела, опыт 8 лет, работает в Биг Тех. У нас он как один из руководителей по бекенду и занимается в основном инфраструктурой. Но есть одно «но» — проект у нас на Node.js. Учить Node, конечно, зачем? Если умеешь писать код, можно чисто вайбкодить. Но Java и JavaScript, кроме первых четырёх букв, сильно отличаются: асинхронность, подходы, методы, обработка ошибок.
И вот что произошло.
Мы улучшали систему оплаты и подписок, всё проверили вроде бы гуд. Но потом начали замечать, что люди не продлевают подписку. Сначала это было странно, но терпимо. Через месяц стало очень подозрительно, и мы начали разбираться.
Оказалось, что мы формировали заказ, но не тригерили списания денег у пользователя. Визуально выглядело так: «Заказ сформирован, но не оплачен».
В чём проблема? Мы каждый день кроном проходились по всем, у кого подписка кончилась, и формировали заказ. Вторым циклом должны были пройтись по каждому заказу и инициировать списание. И тут случилась ошибка.
Наш джавист не учёл особенности асинхронности и обработки ошибок в JavaScript: один заказ мог быть «битым», и тогда весь цикл списания останавливался. Использовался forEach с async/await и обработкой ошибок, но в Node.js такой подход не ждёт асинхронные операции корректно. В итоге каждый день мы формировали заказы, пытались списать деньги, но застревали на одном висяке, и остальные оплаты просто игнорировались. В Java такие сценарии работают иначе, и привычные подходы к потокам не переносились напрямую.
Этот код полностью писала нейронка, потому что бэкендер не знал нюансов Node.js и не привык к его асинхронности.
В итоге больше 100 пользователей пользовались сервисом месяц бесплатно, а мы потеряли 50к рублей.
Вывод: даже опытный Java-разработчик может наткнуться на особенности другого языка, особенно в асинхронных сценариях, а нейронка может генерировать код, который кажется рабочим, но ведёт себя иначе на практике.
А у вас были интересные кейсы? 🔍
Post #1573
4.08K
- 😁 29
- 👍 9
- 🔥 7
- ❤ 3
- 🤔 2
- 😢 1