Что именно определяет производство? - PullRequest
12 голосов
/ 29 января 2009

Как и почти любой, кто программирует некоторое время, я знаком с термином «производственный код» и имею смутное представление о том, что он означает. Тем не менее, может ли кто-то предложить полужесткое определение, так как кажется, что Википедия и Google не могут? Кажется, что есть много серых областей в том, что считается производством, таких как внутренние инструменты, которые используются небольшой группой людей и, следовательно, не «формализованные» с точки зрения пользовательского интерфейса, документации и т. Д., А также приложения с открытым исходным кодом, которые функция завершена, разумно свободна от ошибок и работает, но не нуждается в полировке, пользовательском интерфейсе и обширном тестировании.

Ответы [ 9 ]

24 голосов
/ 29 января 2009

Когда ваш код работает в производственной системе, это означает, что он используется целевой аудиторией в реальной ситуации.

Рабочий код, однако, не обязательно означает надежный, надежный или стабильный код. Ежедневный WTF предоставляет множество доказательств в этом отношении.

18 голосов
/ 29 января 2009

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

Является ли скрипт сборки или общедоступным веб-сервером.

Когда другие полагаются на ваш код, особенно те люди, которые могут его не понимать (т.е. даже «умные» разработчики, но, возможно, не в вашей группе, а с использованием написанной вами библиотеки), этот код является рабочим кодом.

Это производство, потому что "работа останавливается" и "деньги теряются" при сбое производственного кода.

7 голосов
/ 29 января 2009

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

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

3 голосов
/ 29 января 2009

РЕДАКТИРОВАТЬ: Краткий ответ: Если вы "ставите ферму на это", это "производство" .

Это великий вопрос - абсолютно критическое различие, которое обычно ставит всех в беду из-за недопонимания. Вопрос о том, что такое « production », является подмножеством соответствующего вопроса о том, что такое « environment ».

Таким образом, часть ответа заключается в том, что « production » - это « environment », то есть большинство важно и пользуется наибольшим доверием как " real " вещь.

Итак, теперь мы должны определить « environment » (а затем вернуться к « production »). Мы все еще далеки от удовлетворительного ответа.

Мы, программисты, постоянно используем термин « environment » для обозначения компьютерных систем, состоящих из аппаратного обеспечения, выполняющего программное обеспечение. Это программное обеспечение - это код, который мы написали, плюс программное обеспечение, от которого оно зависит, которое было написано другими. Мы пишем наш код и интегрируем его с другим программным обеспечением, а затем обычно запускаем интегрированное программное обеспечение через все возрастающую серию тестов (модульные тесты, интеграционные тесты, функциональные тесты, приемочные тесты, регрессионные тесты и т. Д.), Пока мы наконец не запустим интегрированное программное обеспечение в полном соответствии с его предназначением.

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

С другой стороны, не может быть никакой значительной автоматизации вообще. Например, мы говорили о « production », когда у нас была комната, полная людей, выполняющих ручной труд, которые производили a product . Таким образом, в нашей « production » « environment » не должно быть никакой автоматизации. Существует также промежуточный этап, когда автоматизация не включает программное обеспечение, например, в случае человека, использующего ткацкий станок для плетения ткани.

Кроме того, может отсутствовать продукт , поскольку мы адаптировали наш язык " production " " environment " для включения поставщиков услуг без продуктов .

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

Теперь мы затронули все важнейшие элементы " окружения ":

  • есть цель, intent, преследуемая
  • и intent требуется целое число, поэтому должно быть sponsor (человек или группа, но не машина), которая указывает intent
  • , что intent преследуется различными processes, которые выполняются различные actors
  • те actors могут быть людьми, программным обеспечением, выполняемым на оборудовании, или могут быть машины, не управляемые программным обеспечением, поэтому может присутствовать или не присутствовать автоматизация

Теперь мы можем правильно и полностью определить наши оригинальные термины.

environment состоит из всех processes и их actors, которые сотрудничать, чтобы преследовать определенный intent от имени его sponsor. Тот означает программное обеспечение, выполняемое на оборудовании, то есть машины, не управляемые программным обеспечением, и что означает людей, выполняющих свои различные обязанности. Это intent, который в первую очередь определяет environment, а не processes или actors.

Кроме того ...

Если intent в конкретном environment являетсяsponsor's конечная цель, которая обычно включает в себя получение product или предоставляя service в обмен на деньги, то мы ссылаемся на это environment как production.

Теперь мы можем пойти немного дальше.

Если intent, преследуемый в environment, является проверкой processes и их actors в рамках подготовки к production, мы называем что test environment.

Мы также называем это integration environment, если это испытание включает первоначальное объединение значимых лиц или групп processes и их actors.

Если эта подготовка включает «программирование» человека actors для выполнения нового processes или последующей проверки (оценки), то мы называем это training environment.

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

environment может быть помечен как имя, которое не соответствует его intent, например, когда используется среда training как test.

environment может быть неправильно использован, например, когда integration или training выполняется в production.

Значение environment может быть искажено, например, когда ключ processes или actors остается неопознанным (например, выверка вручную или даже игнорируя людей в целом).

Значение environment можно изменить, перенаправив его processes и actors на новый intent. Для некоторых организаций очень удачным методом является регулярное переключение нескольких наборов actors (серверы, на которых размещается программное обеспечение) между production, test training и integration при каждом выпуске.

В большинстве случаев один actor (человек или оборудование) может выполнить несколько processes, которые могут участвовать в нескольких environments. Например, на одном компьютерном сервере может размещаться программное обеспечение, которое выполняет транзакции production, а также другое программное обеспечение, которое выполняет функции test или training.

Обычно, один экземпляр actor должен участвовать только в одном environment одновременно. В очень редких случаях один actor может совместно использоваться для environments, если intents взаимно совместимы. Большую часть времени очень неразумно пытаться делать такой обмен, потому что intents на самом деле не совместимы. Прекрасным примером является запуск test process на сервере, который также поддерживает production processes, в результате чего во время простоя, потому что test вызвал сбой всего сервера.

Следовательно, intent для environment следует интерпретировать с очень широкой широтой, чтобы включить такие понятия, как доступность , надежность , производительность , аварийное восстановление , точность , точность , повторяемость , долговечность и т. Д. Это означает, что actors и processes часто должны толковаться как включающие такие вещи, как , обеспечивающие питание , охлаждение , резервные копии и резервирование .

Наконец, обратите внимание, что ситуация может быть довольно сложной. Например, команда разработчиков может поставить настольный компьютер (actor) за размещение своего исходного кода (process) (sponsor). ), на которую команда полагается для своей основной работы (production). Тем не менее, ИТ-персонал видит тот же настольный компьютер как просто рабочую станцию ​​разработчика (development, а не production) и относится к нему с презрением и невнимательностью, когда возникает проблема с оборудованием. , Но разработчики создают код production, не являются ли они частью production? Перспектива имеет значение.

РЕДАКТИРОВАТЬ: Качество продукции

Методология надежной проверки (testing) должна взять упакованный код из development и выполнить его через серию tests (интеграция , TQA, функционал, регрессия, принятие и т. Д.), Пока не выйдет другая сторона, "проштампованная" для production использования. Тем не менее, это делает пакет production качество , но не на самом деле production. Пакет становится production только тогда, когда sponsor фактически развертывает его в environment с таким конечным уровнем intent.

Однако, если ваша организация просто производит этот пакет (product) для использования другими, то такой выпуск приближается к production, как эта организация будет иметь отношение к этому product, поэтому обычно растягивают термин production, чтобы применять, а не разъяснять, что это production качество . В действительности среда production этой организации состоит из actors и processes, вовлеченных в усилия по ее разработке / выпуску, в результате которых product.

Я сказал, что это может быть довольно сложно ...

1 голос
/ 27 сентября 2017

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

1 голос
/ 31 декабря 2014
  • Производственное программное обеспечение может работать при необходимой рабочей нагрузке без прерывания или ухудшения качества обслуживания
  • Программное обеспечение было успешно протестировано в различных производственных сценариях
  • Преобразование рабочего прототипа в производственное программное обеспечение, которое работает на отказоустойчивой избыточной архитектуре, которая может работать в реальном бизнесе, то есть в производственной среде, требует времени, рефакторинга кода и внимания к деталям
  • Производственный код имеет приемлемый уровень удобства обслуживания и достаточно хорошо прокомментирован
  • Руководство по документации объясняет функциональность, все функции и облегчает обслуживание
  • Если производственное программное обеспечение является международной службой или приложением, оно должно быть локализовано
  • Производственный код используется конечными пользователями, часто клиентами в соответствии с условиями, описанными в Соглашении об условиях обслуживания
  • Программное обеспечение для производства не обязательно означает надежное программное обеспечение для критически важных задач
  • Программное обеспечение работает хорошо, для чего оно предназначено
  • Файлы журнала предоставляют точное описание показателей производительности и надежности программного обеспечения, а также отчетов, которые облегчают отладку и поддержку программного обеспечения
1 голос
/ 29 января 2009

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

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

G-Man

0 голосов
/ 29 января 2009

Простыми словами «Производственный код, который является живым и используется целевой аудиторией»

0 голосов
/ 29 января 2009

Термин «производственный код» смешивает два разных понятия. Одним из них является управление развертыванием, а другим - жизненный цикл релиза .

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

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

alt text

...