May 18th, 2021

404

Systemic approach

У меня на работе на на почти все задачи обычно делаю шаг назад или на два и говорю "не, вместо вот этого "тут и сейчас" мы будем делать что-то общее". Иногда даже на ровном месте говорю "всё, задолбало, давайте общий код делать". И к этому общему коду требуется ещё общий код, и вообще, всё по https://xkcd.com/1629/. И иногда есть ощущение, что я бегаю от задач и придумываю себе удобные задачи.

Однако, сейчас я получил порцию допамина доказательство того, что подход работает. Надо было поднять сервера для нового проекта. Всё с нуля. Пользователи, пакеты, sudo, мониторинг, всякая ерунда в районе mlfa и т.д. Главное - с нуля.

У меня ушло на это меньше часа. Через час (включая опечатки и линтиг и забытый ansible.cfg для CI'я) у меня был сервер с полным комплектом всего - дашборды, пачка нужных экспортёров, алерты, правильно учитывающие "есть там рейд или нет", "есть бонды на сетевых интерфейсах или нет", готовность включить эскалации (как только станет продакшеном), целевой софт, пользователи и их права, и т.д. Причём у сервера был готовый CI, который его настраивает по мержам в мастер. Это реально кратный рост личной производительности.

2000ый. Настройка сервера - это его установка, и поехали. Неделя или две работы на настройку тяжёлого сервера (субд/почтовый сервер и т.д.) - норма.
2010ый. День на сервер - успех.
2021ый. Час на сервер (плюс ещё минут пять на каждый следующий в группе). Стейджинг в этом конкретном проекте не нужен (т.к. своего кода там пока что нет), но если потребуется - ещё пол-часа возни.

Причём это нифига не "чпок и сервер из шаблона/образа". Это куча двигающихся деталей, нюансов и вариантов.

На самом деле, вовсе не факт, что в другой ситуации у меня будет такая же производительность. Это, так сказать, "здесь и сейчас круто получилось".

Но вот к такому code reuse я интуитивно и стремлюсь.

Причём, ключевым тут является не то, что у меня все кусочки были готовыми под руками, а что все всё инструментировано. Начиная с того, что весь код ансибла был прикрыт (уже протестирован) интеграционными тестами, и заканчивая git vendor, которым это всё собралось.