Хорошо выполненный релиз - это все о планировании и коммуникации. Поэтому перед выпуском рассмотрим следующие вопросы:
Сколько времени может занять релиз, и есть ли какие-либо риски, позволяющие людям продолжать взаимодействовать с моим продуктом, пока релиз находится в стадии разработки? Если существует риск для системы, рассмотрите возможность перевода системы в автономный режим и размещения вместо нее сообщения «Система в настоящее время проходит техническое обслуживание».
Есть ли какие-либо клиенты, которых вам может потребоваться уведомить о выпуске раньше времени? Нужно ли им сообщать о возможном прерывании обслуживания или снижении производительности во время выпуска? Лично я всегда ошибаюсь на стороне чрезмерного общения и рассказываю всем клиентам о предстоящем выпуске или окне обслуживания в публичном блоге или подобном месте.
Каковы мои планы на случай непредвиденных обстоятельств, если релиз будет неудачным? Например, если релиз работает плохо, мы должны откатиться и восстановить систему так, как это было до минимума, когда мы находимся в автономном режиме? И если да, хорошо ли задокументированы шаги по откату релиза? Или я должен иметь подходящих людей по вызову или под рукой, чтобы помочь с устранением проблем в случае их возникновения. Лично я думаю, что лучший способ приблизиться к планированию любого релиза - предположить, что с релизом что-то пойдет не так. Таким образом я заставил себя заранее обдумать некоторые из этих вопросов.
Затем, когда дело доходит до выполнения релиза, один из лучших способов обеспечить его бесперебойную работу - это практиковаться, практиковаться, практиковаться и документировать все, с чем вы сталкиваетесь на этом пути., Поэтому, заблаговременно до развертывания нового кода в рабочей среде, попробуйте сначала развернуть код в безопасной, правильно изолированной промежуточной среде. Попросите человека, который будет отвечать за развертывание в рабочей среде, выполнить тестовое развертывание для подготовки. Считайте, что это ваша генеральная репетиция, и ведите себя так, как если бы это была настоящая вещь. Документируйте все, что вы делаете на каждом этапе пути; документируйте каждую команду, которую вы выполняете, любой код SQL, который вы запускаете, любые файлы, которые вы изменяете и как вы их изменили, и для каждого шага на этом пути документируйте то, что вы ожидаете увидеть, если процедура выполняется правильно. Если и когда вы столкнетесь с какой-либо проблемой, запишите, что вы сделали для ее решения.
Затем практическое развертывание завершено, просмотрите свои заметки и посмотрите, сможете ли вы усовершенствовать процесс, чтобы устранить ошибки. Тогда сделай это снова и снова . Продолжайте практиковаться до тех пор, пока выполнение релиза не станет таким же рутинным, как следование простому листу инструкций, например «войти в систему на этом компьютере, выполнить эту команду; затем войти в базу данных и выполнить эту команду SQL; затем ...»
Выше перечислено, что может сделать команда управления операциями или выпусками, чтобы помочь выпуску работать гладко. Но что могут сделать инженеры, чтобы помочь минимизировать риски в выпуске?
Держите релизы маленькими. Проще говоря, чем сложнее набор изменений кода, содержащихся в выпуске, тем более рискованным будет выпуск. Сделайте одолжение своей операционной команде, планируя иметь большее количество небольших выпусков, а не меньшее количество больших выпусков за тот же период времени.
Тест, тест, тест. Не просто проверяйте свой код в своей среде QA, используйте также промежуточную среду для тестирования своего программного обеспечения. Часто встречаются ошибки, которые имеют мало общего или не имеют никакого отношения к самому коду, а скорее имеют коренную причину, которая заключается в конфигурации самой среды (или некоторого сочетания двух). Чтобы найти эти проблемы, вам нужно протестировать свой код в среде, которая тесно связана с производством, то есть с промежуточным этапом.
Как последнее слово, иногда самое важное не то, что мы делаем, чтобы предотвратить что-то не так, а то, как мы ведем себя, когда они идут не так. Поэтому я думаю, что важно построить культуру в вашей компании вокруг прозрачности работы. Не пытайтесь скрыть проблемы от клиентов, будьте готовыми. Активно пользуйтесь Твиттером, чтобы информировать клиентов о том, есть ли проблемы, о которых ваша оперативная команда знает в данный момент и работает над их решением ( Lighthouse великолепен в этом!). Подумайте о том, чтобы опубликовать «статусную» страницу для вашего сервиса, на которую клиенты могут сослаться, чтобы увидеть, если что-то не так ( TypePad предлагает отличный пример этого). Итог, всегда ошибаться на стороне чрезмерного общения. Ваши клиенты будут вам благодарны за это.