Чи найкраще розгортати проект до серверного файлу за файлом вручну?


26

Компанія, над якою працюю зараз, поки не здійснює постійні поставки. Ми все ще розгортаємо проект вручну на сервері, файл за файлом. Яка найкраща практика: вручну розгорнути один артефакт проекту для кожного розгортання або продовжувати виконувати розгортання файлів за файлом?


12
Для цього завдання навіть віддалено не існує "однієї практики для всіх ситуацій".
whatsisname

26
Як правило, я б посилався на те, Чому питання про "кращу практику" є поганим? Я думаю, що ми можемо погодитися, що це найгірша практика. Він займає трохи вище "підпалення сервера".


9
Я підозрюю, що ОП задає це питання, тому що він уже знає відповідь, і його робоче місце - це робити неправильно (тм), і ОП намагається отримати докази, щоб зробити справу про зміну способу їхнього виконання.
користувач1936

2
Ми зробили це так у другому тисячолітті. Має бути добре! ;)
Дон Бренсон

Відповіді:


103

Яка найкраща практика? щоб вручну розгорнути один артефакт проекту кожного розгортання або продовжувати робити файл за допомогою розгортання файлів?

Ні.

Найкраща практика - автоматизація розгортання повністю та виключно. Це означає, що ніхто не може нічого ставити на сервер вручну.

"Узагальнити підсумок резюме: Люди - це проблема." (Дуглас Адамс)

Люди роблять помилки. Якщо один з файлів, який ви забудете скопіювати, - це спільна "бібліотека", яка була істотно змінена, ви можете привести до краху весь виробничий сайт.


17
@JohnHamilton Якщо автоматизація компіляції є складним завданням, то саме по собі щось вирішити в перспективі. У вас не повинно бути середовищ розробки, тестування, попереднього виготовлення з повністю автоматизованим розгортанням, але створення стандартного пакету розгортання має бути стандартною практикою.
Ніл

20
Е, розмір компанії насправді не є проблемою (до певної міри). Витрати пов'язані з тим, наскільки розгортання є автоматизованим, а також пов'язане зі складністю виробничого середовища. Але є градієнт автоматизації та градієнт "собівартості" (час / гроші), починаючи з простих речей, як сценарій для копіювання нарощування виробництва на виробництво (невеликі інвестиції з негайною економічною економією), а також звідти, і це більше залежить на викуп управління, ніж розмір компанії.
BurnsBA

39
@JohnHamilton: Менша компанія, яка керує погано, може обманути себе на думку про це, звичайно. Автоматизація копіювання файлів не є дуже складним завданням, а витрати на те, щоб будь-яка працевлаштована особа це робила регулярно, значно перевищують витрати на написання навіть найтривіальнішого сценарію, щоб зробити це замість цього.
GManNickG

8
@JohnHamilton: Витрати на автоматизацію слід зважувати на ризик помилок, допущених під час ручного розгортання.
Роберт Харві

7
Вам навіть не обов’язково потрібен Дженкінс. Просто поліпшений скрипт із купою команд scp (або все, що ви використовуєте під час завантаження вручну) було б вдосконаленням.
користувач253751

14

Крок вручну вимагає великих зусиль і ризикований: ви можете забути потрібний файл. Можливо, не всі у вашій команді знають, які файли потрібно скопіювати. Усі ці проблеми роблять розгортання великими, грізними та рідкісними - зовсім зайвими. Автоматизація їх вирішує.

Навіть найпростіший крок автоматизації може мати великі переваги, оскільки розгортання стають тривіальними. Сценарій, який копіює файли або артефакти за допомогою (S) FTP або Rsync або іншої технології, - це перший перший крок. Пізніше ви можете розширити цей скрипт, щоб автоматично виконувати кроки попереднього розгортання та після розгортання на сервері, як-от перезапуск послуг.


Якщо загальна кількість серверів становить 2 або менше, посібник є менш ризикованим, ніж автоматичний. Автоматична вимагає широкої перевірки помилок. Я ніколи не бачив тривіального автоматичного рішення, яке залишалося б тривіальним.
Джошуа

3
@Joshua Я не впевнений, що кількість серверів має бути фактором тут. Автоматизація також має значення при декількох розгортаннях на одному сервері. Питання в тому, кому ви більше довіряєте: комп’ютер сумлінно виконує сценарій, який працював один раз, або ваша здатність запам'ятовувати всі необхідні кроки кожен раз? Як людина, що помиляється, і забуває, я переконана, що не робити речі вручну. Іноді я навіть сценарій разових завдань просто так, щоб я міг переглянути команди, перш ніж запускати їх. Це набагато менш ризиковано, ніж робити випадкові речі вручну, поки це не працює!
амон

Я маю великий досвід обох способів. Те, що я роблю для ручного розгортання, - це встановити xcopy, так що дійсно немає кроків, щоб забути деякі з них.
Джошуа

9

Найкращою практикою було б запровадити якийсь автоматизований процес.

Будьте уважні, щоб перевірити, чи немає особливих причин підходу "файл за файлом", який вам доведеться враховувати.


1
Я задаю це питання тому, що просто хочу переконатися, що це абсолютно не найкраща практика у світі. Цікаво, чи все ще є компанія / розробники, які все ще вручну розгортають свої програми / проект, і що ще гірше - це розгортання файлів за кожною ітерацією розробки.
Джейк Мюллер

4
Найкраще запитання - "чому ми робимо це так?" Я не можу думати про причини, але я знаю , що деякі компанії люблять тримати ручну руку на спусковому гачку , як це було
Ewan

8
@JakeMuller Що слід прочитати між рядками цієї відповіді, це те, що рішення слід приймати, міркуючи про ситуацію, а не рабське дотримання того, що хтось, хто не знає про неї, заявив, що завжди правильну відповідь.
Blrfl

Причиною файлу за підходом до файлу може бути те, що залежність між файлами, і тому оновлення файлів розгортаються перед змінами в інші файли, які залежать від цих файлів. Оновлення файлів у неправильному порядку може ненадовго гальмувати систему.
bdsl

6

Завдяки постійній доставці (або власне розгортанню) та переміщенню кожного файлу вручну ви дивитесь на дві крайності. Цілком зрозуміло, що ви не можете / не хочете створити повністю автоматизований трубопровід (поки що). Однак слід розглянути питання про автоматизацію частин процесу.

Переміщення кожного файлу вручну є досить ризикованим, і ви можете зменшити цей ризик, наприклад, позначивши сховище коду, перевіривши цей тег на своєму комп’ютері, створивши артефакти та завантаживши їх на свій сервер. Кожен з цих кроків може бути автоматизований так, що вони виконуються за допомогою декількох клацань миші, і це значно знизить ризик забути файл або випадково підштовхнути до створення додаткових файлів.

Автоматизуйте те, що можете, раз покроково. Той факт, що ви не можете дозволити собі повністю автоматизований конвеєр компакт-дисків, не повинен відштовхувати вас від автоматизації деяких частин.


1

Найкращою практикою буде аналіз витрат / вигод для конкретного розгортання для вашої конкретної компанії.

Загальна відповідь - "не робіть справи вручну, не автоматизуйте". Це, як правило, правильна відповідь для загальних компаній. Рівномірність відповідей, які ви отримуєте, повинна бути деякою ознакою того, наскільки сильно громада вважає це найкращими методами. Якщо ваша компанія вважає, що автоматизація не є правильним інструментом, вони повинні зрозуміти, що робить їх унікальними. Цю унікальність слід враховувати у процесі прийняття рішень. Немає «найкращих практик», коли набір вибірки дорівнює 1.

Питання, такі як "скільки файлів" та "як часто речі оновлюються" та "які наслідки розбиття речей" та "як швидко можна повернути погану зміну", є важливими питаннями для відповіді. Якщо ви автоматизуєте, багато з цих питань стають неважливими, але вони мають важливе значення для правильного призначення витрат та переваг для процесу ручного оновлення.


1

Відтінків сірого між ручним копіюванням за файлом та постійною доставкою є безліч відтінків сірого.

Почніть із зменшення складності процесу розгортання, наприклад, використовуючи поштовий файл, упаковку в стилі rpm, інфраструктуру як інструмент управління кодом (наприклад, ляльковий або шеф-кухар) або навіть просто простий скрипт, який копіює файли для вас із Постановочна область на ftp-сервері.

Процеси розгортання з більш ручними кроками мають більше шансів на помилки (і тим самим невдачі) - як сказали інші, вийміть з нього людський елемент.

Вам не потрібно впроваджувати повну безперервну доставку (що дорого і вимагає зусиль / інвестицій / інновацій у часі) - почніть просто, змусьте працювати, продемонструйте переваги - і вирушайте звідти.


0

Це залежить від програмної технології (або стека), яку ви використовуєте (інтерпретована мова, мова компіляції, настільний додаток, мобільний тощо), програмний. дев. політику відділу, якщо у вас є інструменти для автоматизації, наскільки важливим є ваш додаток, і важливо враховувати вашу архітектуру програмного забезпечення (як було створено ваш додаток). Ось чому у вас тут різні відповіді. Як правило, найкращим підходом буде зменшення можливого втручання людини у завдання розгортання, щоб уникнути помилок. Доброю практикою буде тестування всього на сервері якості QA (розгляньте використання віртуального сервера, якщо бюджет є проблемою) перед розгортанням, і встановлення зворотних процедур для відновлення до попередньої версії у випадку катастрофи ( ВЖЕ завжди є резервна копія).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.