Здесь немного предыстории - мы небольшая команда (из 5) разработчиков RAD, отвечающая за внутреннюю разработку программного обеспечения в большой компании, не занимающейся разработкой программного обеспечения. «Внутреннее программное обеспечение» варьируется от настольного .NET-приложения, использующего сервер MSSQL в качестве бэкэнда, до сценариев Python, работающих в фоновом режиме, до документов и шаблонов MS Word - зоопарка технологий.
Вся команда состоит из универсальных специалистов, способных получать требования от пользователей, кодировать их, тестировать и внедрять в производство. После того, как программное обеспечение находится в производстве, за ним присматривает другая команда, но нам обычно легко вмешаться, если что-то пойдет не так.
Пока все звучит хорошо, но есть проблема - будучи командой RAD, нам приходится часто выпускать, и не будет дня, когда мы выпустим новые версии одного или двух приложений (или это может быть скрипт, обновленный документ Word). Консольное приложение C ++ и т. Д.) В производство. Мы проводим тестирование разработки и также привлекаем конечных пользователей, позволяя им запускать программное обеспечение в среде UAT ...
... но ошибки все равно появляются в производстве. Пользователи понимают, что эти ошибки и случайная нестабильность - это цена, которую они платят за то, что они действительно быстро хотят получить то, что хотят, но в то же время это заставляет нас задуматься - возможно, мы могли бы улучшить нашу разработку или выпустить методы, чтобы улучшить стабильность Программное обеспечение и уменьшить количество ошибок, которые мы вводим при добавлении новой функциональности.
Хорошая вещь - во-первых, у нас на самом деле не так много процессов, поэтому начинать улучшение должно быть легко, а плохая вещь - будучи небольшой командой RAD, у нас не так много времени и ресурсов для реализации. что-то большое, но мы думаем о следующих инициативах и будем рады любым отзывам, советам, подсказкам и предложениям.
В настоящее время некоторые приложения выпускаются в производство сразу после тестирования разработчика, минуя приемочное тестирование пользователя. Эта практика должна быть прекращена, и даже небольшое изменение должно быть проверено конечным пользователем. Каждое приложение будет иметь выделенного бета-тестера, выбранного от конечных пользователей. Только после того, как бета-тестер одобрил новую версию, она продвигается из тестовой в производственную среду.
Мы не проводим проверки кода - но мы начнем проверять код до того, как один из нас вернется в набор изменений. Я также думал о «обзоре развертывания» - в основном один из разработчиков должен сидеть рядом с другим, наблюдать, как он / она выполняет развертывание программного обеспечения (копировать двоичные файлы, обновлять конфигурации, добавлять новую таблицу в базу данных и т. Д.) - обычно это только занимает 5-10 минут, так что это не займет много времени "обзор развертывания".
Как уменьшить время отката, когда новый релиз оказывается достаточно глючным, чтобы его можно было снять с производства и заменить хорошей предыдущей версией. Мы сохраняем историю всех выпусков (в виде двоичных файлов), чтобы упростить возврат на одну версию назад - и хотя это быстро «перезаписать недавно выпущенные двоичные файлы предыдущими версиями», это все же ручной процесс, который подвержен ошибкам и время от времени требуя «что произойдет, если откат завершится неудачей и сделает систему неработоспособной, а не глючной».
Именно здесь у нас закончились наши идеи, и мы хотели бы получить ваши отзывы о них, и если бы вы могли поделиться некоторыми простыми советами по улучшению процессов выпуска / разработки - это было бы здорово.