16

Кажется, что компания, в которой я работаю, всегда , борясь с серверными средами наших клиентов.Сохранение чистых, синхронных и производственных серверов сервера

В частности, мы почти всегда сталкиваемся с проблемами с серверами тестирования и производственными серверами, а также тем фактом, что они всегда настроены по-разному. Когда мы тестируем разрабатываемые приложения, серверы тестирования ведут себя в одном ключе, и поэтому мы настраиваем и настраиваем наши приложения в соответствии с этим конкретным поведением. Но когда мы устанавливаем одно и то же приложение на производственных серверах, мы наблюдаем другое поведение, которое не согласуется с серверами тестирования, что делает наши настройки и конфигурации бесполезными. Самой расстраивающей частью является то, что это происходит все время и что никто, похоже, не знает, что с этим делать.

Конечно, у нас есть общее представление о том, почему это происходит. Каждая клонированная среда начинается одинаково и работает одинаково в первые пару дней, но рано или поздно кто-то перенастраивает что-то только в одной из серверных сред (будь то обновление базы данных, обновление библиотеки компонентов, обновление веб-файла, или других конфигураций), что приводит к несоответствию. И с течением времени все больше и больше расхождений нарастает. Но вопрос в том, что мы можем с этим поделать?

Я пробовал искать в Интернете, но не могу найти никаких хороших ответов о том, что делать. Я также попытался найти некоторые решения самостоятельно, но большинство моих идей, похоже, в какой-то степени проблематичны. Новые процедуры, независимо от того, насколько строго, можно обойти. Регулярное клонирование производственных серверов для создания серверов тестирования - утомительный и часто очень медленный процесс. Автоматическая репликация не всегда надежна или даже возможна. Так что же нам делать с этой проблемой на Земле? Как мы можем гарантировать, что опыт, когда тестирование будет соответствовать опыту, когда вы живете?

Я полагаю, что у других тоже есть эта проблема. Или они? Может быть, это просто моя компания, которая некомпетентна? Кто-нибудь из вас столкнулся с проблемой? Если да, то что вы с этим поделали?

С уважением,

Линус, шведские системы разработчик

+0

Linus, это относится * конкретно * к транспортному коду в среду ваших клиентов, не так ли? Какой контроль вы можете реально реализовать в этих средах. –

+0

Также вы можете указать, какие среды вы поддерживаете для своих клиентов? Окна? Linux? Mac? Какие требования у вас есть сейчас? –

ответ

0

Вы должны убедиться, что любые изменения в окружающей среде выполняются в согласованном порядке.

Я бы подумал, что начинаю со свежих изображений и применяя политику строгих правил регистрации изменений, или используя что-то вроде Capistrano для выполнения удаленных команд и развертывания кода для всех компьютеров одновременно.

В идеале все требования должны быть проверены в вашей системе контроля версий (в соответствии с тем, как Rails позволяет хранить драгоценные камни в каталоге/vendor и предпочтительно загружать их во время выполнения), а также файл readme, который точно описывает, как настроить среду (требуемые библиотеки и т. д.). Файл readme должен быть строго обновлен любым, кто внесет изменения в среду.

6

Вам необходимо начать отслеживать каждое изменение, которое вы делаете в тестовой среде, и предоставить способ распространения этого в производственную среду.

Для кода это означает системы управления версиями, такие как CVS, Subversion или GIT.

Для базы данных это инструмент сравнения структур или развертывание сценариев, которые обновляют производственную базу данных.

Для конфигурации две системы должны быть точно такими же, и любые «настройки» или изменения должны сначала применяться к серверу тестирования, а затем применяться к производственному серверу во время развертывания.

Пока у вас не будет процесса, который будет работать, у вас будут проблемы.

+0

для управления конфигурацией, если вы чувствуете себя очень амбициозным, вы можете посмотреть на cfengine или puppet, чтобы определить конфигурацию вашей системы (установленные пакеты, содержимое файла конфигурации и т. Д.) С декларативным языком. –

0

Ваши проблемы вполне нормальные. Есть, по крайней мере, две хорошо известные стратегии:

Если вы распространяете Linux, вы можете создать rpms/debs из своего процесса разработки и использовать функцию управления пакетами. Я знаю, что многие проекты делают это с большим успехом для внутренних проектов.

Другой альтернативой является упаковка всей среды как своего рода сценарий оболочки. Этот сценарий оболочки может/должен настраивать всю среду со всеми настройками. Обычно этот скрипт поддерживается девелопментом, и этот скрипт перезаписывает любые модификаций, которые были сделаны вручную. Подобный сценарий обычно поддерживается разработкой, хранится под контролем версий и отправляется в развертывание как полный дистрибутив. Для этого мы используем cygwin. Обычно сценарий считывает некоторую конфигурацию, которая может управляться операциями. У меня были сценарии, которые фактически установили систему всей системы с нуля, как если бы она была установлена ​​на совершенно пустой, только что установленный компьютер.

Обе эти стратегии должны предпочтительно включать автоматическое производство этих артефактов полностью из вашей системы сборки/сборки сборки. Чем более гладким будет этот процесс, тем лучше для всех вовлеченных сторон.

0

Конечно, у нас есть общее представление о том, почему это происходит. Каждый клонировали среда начинается то же самое и работает так же, первые пару дней, но рано или поздно кто-то перенастроить что-то только один из серверных сред

Я думаю, вы быть щедрыми, или вы были очень везучий. Так часто, как не магазины, которые должны заключать контракты на разработку, действительно не понимают процесс разработки. Если они предоставляют вам тестовую среду, то все, что вы получите, это их производственная система до последнего обновления сервера.

0

Для сохранения баз данных MySQL в синхронизации, я просто побежал в этот инструмент:

http://schemasync.org/

Я не использовал его еще, так что я не могу говорить, является ли это какие-либо блага, но нам нужно каким-то образом контролировать дрейф схемы между тестом и prod, поэтому мы собираемся дать ему шанс.

Смежные вопросы