Что именно определяет производство?

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

EDIT: короткий ответ: если вы "делаете ставку на ферму на нем", это "производство" .

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

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

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

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

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

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

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

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

Теперь мы затронули все ключевые элементы "среды":

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

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

An 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 или последующей проверки (оценки), то мы называем, что a training environment.

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

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

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

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

An environment может быть retasked, перепрофилируя его 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) может быть поручена команда разработчиков ( sponsor) для размещения своего источника управления ( process), на которые команда опирается на свои основные задания ( production). Тем не менее ИТ-персонал видит тот же настольный компьютер, что и просто рабочая станция разработчика ( development, а не production) и относится к ней с презрением и беззаботностью, когда она разрабатывает аппаратная проблема. Но разработчики производят production код, так же как они не являются частью production? Перспективные вопросы.

EDIT: Качество продукции

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

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

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

Ответ 5

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

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

G-Man

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

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

alt text