Говно, палки и синяя изолента

Обожаю хаки и костыли! В мейнстриме принято пренебрежительно относиться к этим вещам, но я вижу в них проявление настоящего мастерства. У меня вызывает восхищение, когда человек, имея под рукой только говно, палки, синюю изоленту и пять минут времени, может решить насущную проблему. Важное замечание: если у человека были все ресурсы и куча времени, а он всё равно применил говно, палки и синюю изоленту, то это уже не мастер, а его творчество — не хак, достойный восхищения.

Я как-то участвовал в разработке стриминговой платформы — аналог Твича, но для российского рынка. Когда к нам на трансляцию впервые подключилось больше ста человек, то всей платформе изрядно так поплохело. Минут через десять стало понятно, что микросервис, который хранил данные о пользователях, не успевает переваривать входящие запросы. Его ДДОСил другой наш микросервис. Не помню уже точно название этого другого микросервиса, для простоты буду называть его chat_service. Короче говоря, chat_service долбился в user_service, а все остальные микросервисы, если им нужна была информация о пользователе, просто падали по таймауту.

Конечно, можно было собрать архитектурный комитет, выработать масштабируемое решение и месяца через три выкатить его на прод, но нам нужно было исправить ситуацию вот прямо сейчас. Через пять минут коллективного обсуждения мы решили внутри chat_service кэшировать информацию о пользователях. Кэшировать не в базе, не в редисе, а просто в памяти, в обычной хэшмапе. Пользователей было меньше тысячи, они легко помещались в память.

На реализацию такого кэша ушло ещё пять минут. Мы задеплоили фикс, и платформа задышала в полную силу. За двадцать минут у нас получилось спасти прод, используя самую простую структуру данных. Мы не пытались сделать "хорошо", "правильно" или "масштабируемо". Вместо этого мы использовали прямое как палка решение, которое сработало. В офисе был маленький праздник.

Этот хак — один из самых эмоциональных моментов за все девять лет в айти. Никакой даже самый красивый код не сравнится по своим воодушевляющим свойствам с этим кэшом из хэшмапы.

Лет шесть назад на собеседовании в Хантфлоу меня спросили про решение, которым я горжусь. Я рассказал эту историю. У собеседующего поменялся тон, и он долго объяснял мне, насколько это решение плохое, неправильное, непрофессиональное и не масштабируемое. В Хантфлоу меня не взяли. Наверно, позавидовали, с каким огнём в глазах я рассказывал про этот хак.