РЕДАКТИРОВАТЬ: Краткий ответ: Если вы "ставите ферму на это", это "производство" .
Это великий вопрос - абсолютно критическое различие, которое обычно ставит всех в беду из-за недопонимания. Вопрос о том, что такое « 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
.
Я сказал, что это может быть довольно сложно ...