Не развертывайте в пятницу дни!
Это выражение принимается как программист мудрость, но я ненавижу это. Я собираюсь попробовать убить его со словами и опытом.
Мотивация позади это звучит. Я не хочу тратить свои пятничные ночи отладки проблемы производства.
Для меня выражения попадают в непрофессионализм. Разработка программного обеспечения как отрасль имеет плохую репутацию и фразы, подобные этим, не помогают.
Если вы пошли в эр в пятницу днем и были отвернуты, потому что врачи не доверяют свои собственные инструменты и ноу-хау, как бы вы чувствовали?
Если мы хотим, чтобы люди серьезно относились к нашему ремеслу, нам нужно его владеть, и не создавать впечатления, что мы не понимаем, что системы, которые мы сделаем достаточно, чтобы внести изменения в конце недели.
Почему многие люди не хотят развертывать по пятницам
- Вы не понимаете вашу систему . Вы делаете изменения, но вы не на 100% уверены, что все будет хорошо. Спросите себя, почему это. Почему вы боитесь изменить ваше программное обеспечение?
- Плохой мониторинг. Если пользователи первыми, кто скажет вам, если что-то неверно, что обратная связь цикла проливает во времени в пабе, а не при развертывании.
- Чрезмерно сложный откат/ветвление. Как ваше выздоравливающее выздоровление? Насколько легко нажимайте исправление, как только вы решите ошибку?
Непрерывная доставка (CD)
Я работал над командами, которые развернули новые версии различных услуг в распределенной системе несколько раз в 16:30, а не сломали пот.
Почему? Поскольку развертывание полностью автоматизировано и является неэффективным. Вот новаторский процесс.
- Напишите какой-нибудь код
Git Compity -am "сделал кнопку POP"
Git Pull -r && ./build && git push
- Делать чашку чая
- Сейчас сейчас живут.
Не так давно это считалось нормальным, чтобы быть выпуски каждые 6 месяцев или даже один в конце проекта.
Прямые мыслители в этом возрасте увидели проблемы с этим
- Плохие петли обратной связи
- Подчеркнутые команды развития
- Катастрофические неудачи.
Таким образом, индустрия в целом работала над множеством инструментов, методик и лучших практик, чтобы позволить нам выпустить программное обеспечение гораздо быстрее.
Признавая, что выпуск часто снижает риск, обычно принимается в настоящее время, но команды по-прежнему часто посещаются на еженедельных или двухнедельных релизах; часто соответствует каденции их спринтов.
Каковы проблемы с еженедельными/ночью релизы?
- Курсы обратной связи все еще не велики. Если вы сделаете свой релиза, там может быть довольно много комбинтов, и, если что-то не так, может быть сложно выяснить, что именно сломалось. Особенно, если вы написали его 2 недели назад.
- Все еще чрезмерно зависит от ручных процессов. Я видел команды на самом деле пропустить релиз, потому что QA был в отпуске. Это, безусловно, недопустимо в 2018 году. Ручное тестирование не масштабируется в будущем. Люди уходят, вещи забыты и т. Д.
- Давайте вы попадаете в ловушку написания историй, которые зависят от других историй, заканчиваемых в «спринте». Когда они не могут стать очень сложными.
С CD мы признаем, что мы можем пойти дальше, развертывание нового программного обеспечения жить Каждый раз, когда сборка зеленая. Это имеет несколько удивительных преимуществ,
- Чрезвычайно быстрые петли обратной связи. Больше не нужно думать о коде, который вы написали 2 недели назад, когда в жизни есть проблема.
- Заставляет лучшие практики. Чтобы иметь возможность развернуть, чтобы жить на зеленых, вам нужен отличный мониторинг и тесты. Это все хорошие вещи сами по себе Отказ
- Уменьшает стресс. «Выпуск» больше не вещь больше. Вы можете снова уверены в написании вашего программного обеспечения!
- Значительно улучшает ловкость. Нашел ошибку? Просто исправьте это! Это поощряет более постный способ работы против многих планирования прибыли. Нет даже вариант для пропутанного процесса выпуска, Вы должны держать это просто .
- Заставляет вас работать над историями, которые на самом деле освобождаются. Не зависит от истории x y и z. Заставляет лучшие практики на историях пользователей, которые каждый признает, но часто люди игнорируют.
Но что, если вы сломаете вещи?
Часто люди говорят с CD
Да, это хорошо, но что если это сломается? У нас должно быть проверить QA
Вот вещь, Ни один процесс в мире не предотвращает ошибки . Вы Будет ли судно сломанный код. Что действительно важно, это как быстро вы можете обнаружить и оправиться от него. Надежное ручное тестирование поймает все желаемое мышление.
Как CD на новом проекте
Намного проще сделать CD в новом проекте, поскольку вы можете начать небольшие и развиваться.
Вообще ваша работа должна быть сосредоточена на доставке самых ценных поездок пользователей, так что это отличный шанс практиковаться, как гарантировать, что функция работает без каких-либо людей, которые ничего не проверяют.
- Напишите конец для окончания теста. Это дорого писать и бегать и должны быть зарезервированы только для ваших самых важных путешествий
- Иметь мониторинг с пороговым оповещением, когда дела идут не так
- Настройте свой трубопровод, чтобы, когда ваш код нажимается, все автоматизированные тесты работают, если они проходят перейти к производству.
- Иметь какой-то зеленый/синий механизм высвобождения. Запустите свои автоматизированные тесты на развернутом кандидате освобождения, и если они не пройдут, не отправляйте его.
Для каждой последующей истории спроси себя
- Как мы узнаем, что это работает? (Мониторинг)
- Какие тесты мне нужно иметь достаточно уверенности, это будет работать без проверки людей. Не каждый историй нуждается в полном окончательном тесте на огромную распределенную систему, но, очевидно, вам понадобятся некоторые тесты.
- Эта история как маленькая, как это может быть? Если ваши истории пользователей массовые они, скорее всего, пошли не так. Если история занимает неделя, то это вернутся к медленному обратной связи.
- Если вы не можете ответить на эти вопросы, вам нужно переосмыслить историю. Обратите внимание, что все это просто основные проворные принципы для пользовательских историй. Непрерывная доставка заставляет вас придерживаться принципов что так часто игнорируют
Как CD на существующий проект
Очистить в ручном процессе
- У вас может быть какая-то «запущенная книга», которая используется при доставке программного обеспечения. Посмотрите, что вы могли бы сделать, чтобы автоматизировать его.
- Узнайте все ручные процессы происходит. Спросите, почему они нужны и что можно сделать, чтобы автоматизировать их.
CD до постановки.
У некоторых компаний много сред в их доставке. Хорошее сначала начало — автоматически отправить до конца до проживания среды. Лучший шаг удаляет как можно больше из них. Это нормально, чтобы иметь какую-то «Dev» среду, возможно, поэкспериментировать, но спросите себя, почему нельзя просто проверить эти вещи на месте на первом месте.
Определите подсистему, с которой вы можете работать как отправная точка
Если вы работаете с распределенной системой, вы сможете определить систему, которая легче для CD, чем остальные. Начните с этого, потому что оно даст вашей команде некоторые идеи на новый способ работы и могут помочь вам начать нарушать культурные барьеры.
CD — культурная проблема столько же, сколько техническая
Роли и ответственность
Часто владелец продукта или менеджер проекта хочет быть тем, кто отвечает за выпуск.
Есть обстоятельства, где Выполнение функций пользователям следует контролировать нетехническим членом вашей команды, но это может управляться с функцией переключения.
Но копирование кода из одного компьютера на другой — ответственность за разработчиков в команде. Ведь мы являемся тем, кто несете ответственность за то, что система работает. Это техническая проблема, а не бизнес.
Что сейчас делает QAS?
CD на самом деле освобождает для QAS
- Вместо того, чтобы тратить время вручную тестирование плохо проверенных систем, они теперь могут сосредоточиться на более целостном представлении о системе, пытаясь содействовать окружающей среде для CD, чтобы вся команда была уверена, что работает
- QAS проводит больше усилий, помогающих разработчикам определить, что нужно проверить и контролировать для написания истории.
- Больше времени для исследовательского тестирования
Переоценить вашу толерантность к дефектам
Много компаний думаю Они не могут иметь никаких дефектов и будут проводить много времени и усилий на сложные, много времени (и, следовательно, дорогие ) процессы, чтобы попытаться их остановить.
Но подумайте о стоимости всего этого? Если вы толкаете изменение в производстве, которое не охватывается тестами, возможно, изменение CSS; Подумайте, если это Действительно катастрофический, если есть небольшая визуальная вина для некоторых браузеров
Может быть, это, в каком случае есть методы для того, чтобы тестировать конкретно для этого.
Восстановление
Каждый выпуск, который вы делаете с CD, будут иметь следующие качества
- Много тестов
- Хороший мониторинг
- Небольшая область
- Все еще «свежий» в разуме разработчика
Так что в моем опыте исправляю все, что падает через трещины, легко. Это намного менее сложно, чем пытаться посмотреть через 2-недельную историю Git.
Я бы порекомендовал в большинстве случаев, не откатывающихся назад (если это не очень плохо), а просто исправить проблему и выпустить его. Откат иногда не является опцией (например, миграция базы данных E.G) Таким образом, тот факт, что ваша система ориентирована на выпуск быстро, на самом деле является реальной прочностью CD.
Другие быстрые советы
- Быстрые петли обратной связи — ключ. Измерьте свой
Git push
жить время и держать его низким. - Если вещи получают медленные переоценки ваших сквозных испытаний. Если вы удалили тест или изменить его, чтобы быть единичным тестом, вы бы меньше уверены в себе? Если нет, то рефакторист
- Возможно, вам придется инвестировать некоторое время в том, чтобы ваши компоненты были более тестируемыми, чтобы избежать написания много медленных концевых испытаний. Это хорошая вещь Отказ
- Функция переключается полезный инструмент, но может стать грязным, следить за сложностью
- Отпразднуйте это. Переход от одного выпуска каждые 2 недели до 50 в день чувствует себя здорово.
Упаковка
Это было небольшое введение в CD, это огромная тема с большим количеством ресурсов для расследования.
Непрерывная доставка — это большие усилия как технически, так и культурно, но окупается массово.
Я работал над распределенными системами с более чем 30 развертываемыми компонентами в отдельности с CD, и он был менее стрессовым, чем другой проект, который я работал над тем, что имел просто несколько систем, но и тонну процесса и церемонии.
Возможность выпуска программного обеспечения, когда написано, ставит более высокий упор на качество и снижает риск для команды. Это также заставляет вас использовать провильные лучшие практики, такие как тестируемые, маленькие, независимо отменители пользователей.
Может быть, самое главное, это требует, чтобы вы понимаете вашу систему и что вы не развертываете до производства и пересекаете пальцы. Это чувствует себя более профессиональным для меня.
Оригинал: «https://dev.to/quii/why-you-should-deploy-on-friday-afternoon-285h»