tgoop.com/gdb_dbg/243
Last Update:
После превого моего поста про кранчи мнения комментаторов разделились: половина посчитала, что я описываю провал менеджмента, вторая – что именно так закаляется сталь, так что все хорошо: классический пример пути через тернии к звездам. Я же в свою очередь продолжаю считать, что это был единственный путь вообще, который при этом да, помог мне отлично прокачать навыки (почти не надорвавшись).
Но, как я уже говорил в конце того поста, не все кранчи одинаково хорошие. В этот раз расскажу про кранч второй, корпоративный.
Сразу оговорюсь, что тут я попадаю на территорию действующих NDA, поэтому технические вещи будут лишь бегло описаны в начале, а дальше исключительно эмоции и эпитеты.
—
Итак, 2019 год, зима. Прошло три года с событий предыдущего поста, я уже довольно матерый инженер, который многое повидал и отладил. Мы всего несколько месяцев, как присоединились к огромной корпорации и всячески пытаемся доказать, что мы очень классные и полезные. И вот поиски места, где можно было бы продемонстрировать свою крутость, завели нас в кодовую базу некоторого рантайма... в котором (какая ирония!) GC оказался довольно консервативен и не весь возможный мусор собирал. Как я уже много раз писал, консервативность GC – это в целом то нормальная ситуация, спека не обещает вам вообще ничего в этом плане, так что мертвые объекты имеют полное право в памяти задерживаться. Но вот так уж вышло, что клиентам именно этот консерватизм не подходил, вот кровь из носа нужно было его победить, иначе OOM.
Задача то хорошая, грамотно вплести необходимую фичу в остальной сборщик мусора – это было приятное с архитектурной точки зрения дело, ну и определенный challenge, т.е. это круто. Но была маааленькая такая проблемка. Когда нам сообщили, что сделать с нуля новую подсистему в GC – это обязательный пункт программы, на дворе было 15 декабря. По факту это означало, что у нас было две недели на все про все. Через две недели нужно было шипнуть.
Экстренно была сформирована "рабочая группа" из самых боевых инженеров, которым нужно было сделать невозможное. Да, я до сих пор считаю, что сделать, протестировать и шипнуть хоть сколько-нибудь нетривиальную фичу в GC за 2 недели невозможно, а тут целый новый подвид GC, который должен работать на проде. У этой рабочей группы каждый день были собрания, где вместе с начальством (в смысле со старшими и опытными инженерами, их вклад был очень существенен) брейнштормили архитектуру, обсуждали проблемы и смотрели, что идет не так.
Архитектуру то мы придумали довольно быстро, первую версию тоже сделали оперативно. В сумме на это ушло где-то около недели. Но дальше началось что? Правильно, долгая и изнурительная отладка. То часть мусора продолжала застревать в памяти (и приложение, спустя сколько-то десятков минут работы, падало по OOM), то мы наблюдали страшные спорадичные развалы, которые крэшали весь рантайм. А вокруг – канун нового года, елки, гирлянды, счастливые люди и вот это все.
Мозгу свойственно выкидывать детали из темных периодов жизни, чтобы не травмировать себя воспоминаниями, но парочка ярких образов у меня все-таки сохранилась ↓
#дух_машины
BY Алло, это отладочная?
Share with your friend now:
tgoop.com/gdb_dbg/243