Непрерывная поставка чистой посуды
Жена с ребенком уехали к бабушке в деревню, поэтому я живу полноценной холостяцкой жизнью. И я решил заполнить время, пока варятся пельмени, написанием очередного поста. Предвидя неминуемый вопрос, сразу отвечу — яичница была на обед. Ведь именно так работают хорошие продажи — отвечают на вопрос, который обязательно зададут, не дожидаясь самого вопроса.
Наша компания “Экспресс 42” позиционирует себя как Центр экспертизы по DevOps. Ключевой практикой DevOps является “Непрерывная поставка ПО”, она же Continuous Integration/Continuous Delivery, она же CI/CD. И, учитывая мое холостяцкое положение, я расскажу про то, что же такое CI/CD на примере CDLC — Clean Dishes Life Cycle.
Представьте, раннее утро, яркие солнечные лучи прорвались сквозь сомкнутые веки, я вытаскиваю свое бренное еще не до конца проснувшееся тело из кровати, вяло умываюсь и нехотя чищу зубы. Потом шлепаю на кухню за первой порцией ароматного и насыщенного эспрессо из капсульного кофе-автомобиля, но тут, ну что за гавно, нет ни одной чистой маленькой чашечки. Ладно, хотя посудомоечная машина и расслабляет современного человека и подавляет его волю к домашнему труду, но одну маленькую чашечку я точно смогу помыть, вон там в раковине даже виднеется одна со следами вчерашнего кофе. Все бы хорошо, но грязной посуды в раковине так много, что маленькая кофейная чашечка просто не влазит под кран. Мысленно выругавшись, я принимаю решение переложить грязную посуду в посудомойку, но не тут-то было, в ней стоит помытая вчера чистая посуда. Ррррррр! Заветный глоток кофе отодвигается еще минут на 5, а то и десять. Утро окончательно испорчено, а вслед за ним, скорее всего день и даже, возможно, вечер. (Сразу хочется мысленно обвинить в этом жену, но опасаясь, что она, возможно, прочитает этот текст, укоряю себя: “Ну кто же тебе, козлина, мешал с вечера чистую посуда на полку переставить?”)
Обратите внимание, что все необходимые инфраструктурные компоненты (раковина, посудомоечная машина, посудный шкаф) установлены, но любая практика, даже такая простая, как CDLC, не работает без дисциплины.
А SDLC (Software Development Life Cycle) гораздо сложнее, чем история с посудой. Во-первых, участвует гораздо больше людей. А как известно, чем больше людей, тем сильнее они друг другу мешают, если не договорились вовремя, как друг другу помогать. Во-вторых, гораздо больше инфраструктурных компонент: тут тебе и система хранения кода, и таск-трекер, и система CI/CD, и билд-агенты, и хранилище артефактов, и оркестратор с мониторингом и системой логирования, алертинга и трейсинга, а еще обязательно где-то сбоку что-нибудь про тестирование, безопасность и нагрузку.
И вот хочет кто-то выпить утром чашечку ароматного эспрессо, в смысле, подвинуть кнопочку на пару пикселей вправо, а ему и говорят — приходите попозже, у нас релиз через полгода.
Короче, все, как с любой другой практикой. А что такое практика? Дисциплина плюс технология. И если технологию можно развернуть достаточно быстро, то дисциплина (в двух ее смыслах — учебная дисциплина и неукоснительный порядок действий) загружается в нас, людей, достаточно долго.
Есть ли у этой истории мораль? Да нет никакой морали, пойду запущу посудомойку.