Представь: я запустил своего первого торгового бота. И в первый же день он заработал мне 11 с половиной долларов. Две сделки, две победы!
Ого, 100% винрейт! Пусть и на двух сделках, но это повод для шампанского. Или, по крайней мере, для довольной улыбки.
Именно! Я почувствовал себя гениальным разработчиком, чьё творение покоряет мир.
На этой волне я решил внести крошечное косметическое исправление в код. Просто поправить один эндпоинт. Закончил, перезапустил сервис и пошёл пить чай.
Звучит как завязка для фильма ужасов для программистов. «Он просто хотел поправить одну строчку...»
Вернувшись, я открыл дашборд, чтобы полюбоваться на свои $11. А там... нули. Абсолютно чистая статистика, будто ничего и не было.
Куда делись деньги, Лебовски? Сердце, наверное, ёкнуло?
Ещё как! Первая мысль — паника. Я кликал везде, обновлял страницу, но нули смотрели на меня с холодным безразличием.
Когда паника прошла, я полез в самое сердце системы — в базу данных. И что ты думаешь? Все сделки на месте, прибыль $11.53, всё записано.
Так, подожди. Данные есть, но бот их не видит? Он что, сам записал и сам же забыл?
Именно! Бот в буквальном смысле забыл, что выиграл.
И тут до меня дошло. Проблема была в разнице между хранилищем и памятью. База данных — это постоянное хранилище, а история сделок хранилась во временной, оперативной памяти.
А, то есть каждый раз при перезапуске эта временная память просто обнулялась, и бот начинал жизнь с чистого листа?
Совершенно верно. Он помнил, как восстанавливать открытые сделки, но я забыл дописать код для загрузки уже закрытых.
К счастью, исправление заняло 15 минут. Я просто добавил функцию, которая при старте загружает историю из базы данных обратно в память.
Такая маленькая деталь, а какая разница! В коммерческом продукте это была бы катастрофа. Инвестор бы увидел нули и ушёл навсегда.
Именно. Доверие, однажды потерянное, вернуть почти невозможно.
Эта история научила меня нескольким правилам, которые стоит высечь в граните. Во-первых, всё важное — сразу в базу данных.
Во-вторых, всегда пиши функцию восстановления состояния при запуске. И в-третьих, специально ломай и перезапускай свой сервис, чтобы проверить, что всё работает.
Точно. Это как учения по пожарной тревоге — лучше провести их самому, чем ждать реального пожара.
Забавно, в этом и есть разница между нами и ИИ. Мы, люди, можем забыть что-то важное, просто отвлёкшись на птичку за окном.
А искусственный интеллект забывает только тогда, когда ты отключаешь ему питание. Или когда его создатель забывает написать 30 строчек кода.