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