Задача: поверх существующего C++-сервиса из разрозненных файлов навернуть проксю, которая будет прокидывать в старый сервис + реализует ещё одну ручку.
Очевидное решение: собираем из мастера всё вместе в один пакет, а затем из пакета запускаем и сервис и проксю. Заодно и подновим сервис, а то он на базе убунты ксениал работает.
Итерация №1: сначала просто соберём старый сервис в пакет, обложим вотчдогами и в конфиге заодно пропишем, что логи писать надо в файлик, а не в stderr
Результат: через несколько секунд после старта инстанс сервиса падает
Спустя час копаний: если собрать с опциями сборки чуть отличающимися от старой версии, то через несколько секунд за сервисом приходит oom_killer. Хуй его знает, как можно с такой скоростью сожрать десять гигов памяти.
Итерация №2: повторяем в точности старые опции сборки
Результат: через пару минут после запуска сервис начинает фейлить ≈20% запросов. Хуй его знает, почему перестало падать по памяти.
Спустя четыре часа варьирования множества параметров, начиная от отката к старому конфигу до реверта образа убунты с фокала на ксениал: а попробуем просто скопировать и запустить бинарь от прошлого релиза? Ну да, всё работает, как я сразу не додумался это сделать.
Итерация №3: а может попробуем методом бинарного поиска найти проблемный коммит?
Результат: бинарь не обновлялся три года. За это время в монорепозитории его и его зависимости потрогало множество людей и в том числе поменялись API общих библиотек и при попытке что-то откатить, он перестаёт собираться.
Решение: используем старый пакет, притаскиваем на инстансы его вместе с пакетом новой прокси, конфигами и скриптами. Старый бинарь работает, новая прокся тоже будет работать, все счастливы, любому кто предложит обновить бинарь, объясним, что не стоит вскрывать эту тему.
Окружающие меня люди думают, что я люблю свою работу. На самом деле я ебашу как проклятый лишь потому что это хорошо оплачивается. И чем раньше я накоплю достаточно капитала, чтобы иметь возможность не работать, тем раньше я смогу бросить этот мир ночных кошмаров.