Компания, в которой я работаю, пока не осуществляет постоянную доставку. Мы по-прежнему разворачиваем проект вручную на сервере, файл за файлом. Что является наилучшей практикой: вручную развертывать один артефакт проекта для каждого развертывания или продолжать развертывание по файлам?
deployment
server
devops
Джейк Мюллер
источник
источник
Ответы:
Ни.
Лучшая практика - полностью и исключительно автоматизировать развертывание. Это означает, что никто не может ничего положить на сервер вручную.
«Подводя итог резюме:« Люди - это проблема ». (Дуглас Адамс)
Люди делают ошибки. Если один из файлов, который вы забыли скопировать, является общей «библиотекой», которая была сильно изменена, вы можете привести к краху всего сайта Production.
источник
Ручные шаги требуют больших усилий и рискованны: вы можете забыть необходимый файл. Возможно, не все в вашей команде знают, какие файлы нужно скопировать. Все эти проблемы делают развертывания большими, сложными и редкими - совершенно излишне. Автоматизация обращается к этим.
Даже самый простой шаг автоматизации может иметь большие преимущества, поскольку развертывание становится тривиальным. Сценарий, который копирует файлы или артефакты через (S) FTP или Rsync или другую технологию, является отличным первым шагом. Позже вы сможете расширить этот сценарий, чтобы автоматически выполнять этапы, выполняемые до и после развертывания на сервере, например перезапуск служб.
источник
Лучшей практикой будет внедрение какого-либо автоматизированного процесса.
Будьте внимательны, чтобы убедиться, что нет особой причины для подхода «файл за файлом», который вы должны принять во внимание.
источник
С непрерывной доставкой (или развертыванием, собственно) и перемещением каждого файла вручную, вы смотрите на две крайности. Совершенно понятно, что вы не можете / не хотите создавать полностью автоматизированный конвейер (пока). Тем не менее, вы должны рассмотреть возможность автоматизации частей процесса.
Перемещать каждый файл вручную довольно рискованно, и вы могли бы уменьшить этот риск, например, пометив свой репозиторий кода, проверив этот тег на своем компьютере, создав свои артефакты и загрузив их на свой сервер. Каждый из этих шагов можно автоматизировать, чтобы они выполнялись с помощью нескольких щелчков мыши, и это значительно снизит риск забывания файла или случайного нажатия, чтобы подтолкнуть некоторые дополнительные файлы.
Автоматизируйте то, что вы можете, шаг за шагом. Тот факт, что вы не можете позволить себе полностью автоматизированный конвейер CD, не должен отговаривать вас от автоматизации некоторых частей.
источник
Лучшей практикой будет проведение анализа затрат / выгод для вашего конкретного развертывания для вашей конкретной компании.
Общий ответ: «Не делай вещи вручную, автоматизируй». Это, как правило, правильный ответ для обычных компаний. Однородность ответов, которые вы получаете, должна указывать на то, насколько решительно сообщество считает, что это лучшие практики. Если ваша компания считает, что автоматизация не является подходящим инструментом, они должны понимать, что делает их уникальными. Эта уникальность должна быть учтена в вашем процессе принятия решений. Не существует «лучших практик», когда набор образцов равен 1.
Важные вопросы, на которые нужно ответить, такие как «сколько файлов» и «как часто обновляются вещи» и «каковы последствия поломки» и «как быстро вы можете откатить плохие изменения». Если вы автоматизируете, многие из этих вопросов станут неважными, но они необходимы для правильного распределения затрат и выгод для процесса обновления вручную.
источник
Между ручным копированием файлов и непрерывной доставкой существует множество оттенков серого.
Начните с уменьшения сложности процесса развертывания, например, используя zip-файл, упаковку в стиле rpm, Infrastruture в качестве инструмента управления кодом (например, puppet или chef) или даже просто скрипт, который копирует файлы для вас из промежуточная зона на FTP-сервере.
Процессы развертывания с большим количеством ручных шагов с большей вероятностью будут иметь ошибки (и, следовательно, сбои) - как уже говорили другие, убрать из этого человеческий фактор.
Вам не нужно реализовывать полную непрерывную доставку (которая обходится дорого и требует усилий / инвестиций / инноваций с течением времени) - начните с простого, заставьте ее работать, продемонстрируйте преимущества - и переходите оттуда.
источник
Это зависит от используемой вами технологии программного обеспечения (или стека) (интерпретируемый язык, скомпилированный язык, настольное приложение, мобильная версия и т. Д.), Программного обеспечения девиация Политики отдела, если у вас есть инструменты для его автоматизации, насколько важно ваше приложение, и одна важная вещь, которую следует учитывать, - это архитектура вашего программного обеспечения (как было разработано ваше приложение). Вот почему у вас здесь разные ответы. Как показывает практический опыт, лучший подход будет заключаться в том, чтобы максимально сократить вмешательство человека в задачи развертывания, чтобы избежать ошибок. Хорошей практикой будет тестирование всего на QA-сервере (рассмотрите возможность использования виртуального сервера, если бюджет является проблемой) перед развертыванием, и наличие обратных процедур для восстановления предыдущей версии в случае аварии ( ВСЕГДА есть резервная копия).
источник