Почему разработчики не должны иметь возможность развертывать непосредственно на производстве?

Я всегда работал в средах, где разработчикам приходилось проходить процесс работы с сетевыми операциями (ребятами сервера), чтобы развернуть материал от разработки/теста до производства.

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

Что я до сих пор:

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

  • Существует некоторая подотчетность, если что-то пойдет не так, и более одного человека знает, что происходит. Босс: "Сайт только что спустился!", "Все остальные в офисе:" Абэ просто разворачивал, это его вина! "

  • Когда кто-то является единственной ответственностью, является производственный сервер, менее вероятно, что они сделают что-то глупое.

  • Там будет (надеюсь) больше информации о возможностях развертывания и отката. Журналы, резервные копии, которые могут быть возвращены, автоматизированные функции...

Есть ли другие веские причины? Я просто являюсь контрольным уродцем?

Ответ 1

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

  • Управление изменениями
  • Отчетность
  • ОК
  • Создание/развертывание одной кнопки
  • Модульные тесты
  • стабильность кода - предположим, что вы нажимаете, прямо, когда кто-то еще проверял код?

Теперь количество накладных расходов/трудностей для изменения должно быть напрямую связано с вашими требованиями времени. Пересчитано: чем дороже время простоя, тем больше вы должны инвестировать в предотвращение простоев.

Ответ 2

Немногие, которые приходят на ум (возможно, они накладываются на вас):

  • Разработчик может настроить что-то, пока оно не будет работать. Это не должно быть сделано в Production. Если на следующий день этот разработчик попадет в автобус, никто не узнает систему. Процесс документирования и повторного использования по-другому помогает обеспечить захват таких бизнес-знаний.
  • Как разработчик, я не хочу такого доступа. Если что-то терпит неудачу, гораздо менее вероятно, что это моя вина. Я приду и помогу, все мы все в одной команде, но мне нравится знать, что кто-то еще должен был пересмотреть мою работу и согласиться с ней. (То же самое относится к моим дельта-сценариям в БД. Я хочу, чтобы более квалифицированный администратор баз данных, который несет полную ответственность за базу данных, просматривал мою работу. Если все, что они делают, запускается, что я говорю им, когда я им говорю, тогда это существенно не отличается от давая мне прямой доступ, он просто медленнее.)
  • Разработчики часто быстро исправляют простые вещи. Мы все знаем, что это часто не так сильно и сухо, как думал разработчик, и это быстрое решение либо не исправило, либо сломали что-то еще. Независимо от того, насколько малы изменения или исправления, все равно должен быть процесс QA. (Для некоторых магазинов, где время безотказной работы не так важно, что процесс обеспечения качества фактически может быть производством, но это редкое исключение. Это не должно быть так, с точки зрения пуриста, но, как ни с чем, это отношение риска/вознаграждения. риск низкий (например, при провале производства не наносит большого штрафа, если он вообще есть), а стоимость QA сравнительно высока, тогда это нормально.)
  • Регулирующие потребности. Согласование PCI и т.д. Часто требует четкого разделения задач между рабочими местами. Это часто неверно истолковывается, поскольку "разработчики не могут получить доступ к продукции" и обрабатываются очень черно-белыми. Но это означает, что разработчики должны иметь доступ только к тем, что им нужно, чтобы выполнять свою работу. Если вам не нужны данные о производстве, и данные чувствительны, вы не должны иметь его.

Ответ 3

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

"Я просто сделаю это небольшое изменение конфигурации в Prod, это ничего не сломает".

Разработчики ООП должны понимать разделение обязанностей, я бы подумал. Вы нарушаете это, вы владеете им. Избегайте проблем с отдельной командой Ops.

В некоторых средах (например, финансах) большие суммы денег (а иногда и закон) также подвержены риску от недобросовестных или злонамеренных изменений в неконтролируемой производственной среде.

В небольших командах я вижу пример для разработчиков, имеющих производственный доступ, но это нужно контролировать и проверять, чтобы вы ВСЕГДА знали, что есть в Production. В этом смысле не имеет значения, кто нажимает кнопки развертывания и отката, но они существуют и являются только способом изменения производственной среды.

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

Ответ 4

Основная причина заключается в том, что, позволяя разработчику развертывать непосредственно на производстве, вырезает процесс QA. Что вводит риск. Какие типы управления не нравятся.

Таким образом, для вас еще один импульс - это увеличение RISK.

Ответ 5

Безопасность. Имея один привратник (с резервной копией), только один человек обращается к производственным данным и серверам. Это означает меньшее количество точек доступа.

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

Практика делает совершенным - один человек, который строит рутину и придерживается ее, имеет меньше шансов для винтов.

Ответ 6

Развертываясь непосредственно в производственной среде, существует хорошая вероятность того, что QA не было задействовано (т.е. ничего не было протестировано).

Ответ 7

Потому что должен быть ОДИН человек, с которым вы можете пойти, кто знает, что было развернуто на сайте. Если каждый разработчик может развернуть, вы не знаете, кто использовал то, что когда кто-то замечает что-то неправильно.

Ответ 8

Соответствие SOC-1 может (без необходимости) предлагать или требовать, чтобы разработчик был отдельным человеком, чем тот, который развертывается для производства, чтобы средства управления были установлены для предотвращения злонамеренных намерений.