O que exatamente define a produção?
-
20-08-2019 - |
Pergunta
Como quase qualquer um que tenha sido programação por um tempo, eu estou familiarizado com o termo "código de produção" e ter uma vaga noção do que isso significa. No entanto, alguém pode oferecer uma definição semi-rigoroso, pois parece Wikipedia e Google não pode? Parece que há um monte de áreas cinzentas em que conta como produção, tais como ferramentas internas que são usados ??por um pequeno grupo de pessoas e, portanto, não "formalizada" em termos de UI, documentação, etc. e aplicativos de código aberto que são recurso completo, razoavelmente livre de erros e trabalhar, mas falta polonês, UI e testes extensivos.
Solução
meios de produção tudo o que você precisa para trabalhar de forma confiável e consistente.
Se é um script de construção, ou um servidor público enfrenta web.
Quando os outros confiar em seu código, particularmente pessoas que não podem compreendê-lo (ou seja, mesmo desenvolvedores "inteligentes", mas talvez não no seu grupo, mas usando uma biblioteca que você escreveu), esse código é o código de produção.
É de produção, porque "o trabalho pára" e "dinheiro é perdido" quando o código de produção falhar.
Outras dicas
Quando seu código é executado em um sistema de produção, isso significa que ele está sendo usado pelo público-alvo em uma situação do mundo real.
códigoProdução, no entanto, não significa necessariamente código robusto, confiável, ou estável média. The Daily WTF fornece abundância de evidências nesse sentido.
A definição como eu entendo é que o código de produção é qualquer código que está instalado ou em uso em um sistema vivo, não-banco de ensaio. Um servidor usado internamente para uma empresa é um sistema de produção se ele é o sistema vivo usada pelos funcionários da empresa. O ponto aqui é que o código executado em um servidor interno à empresa escrever o código pode ser código de produção.
Normalmente, uma boa distinção quando se olha para código interno é ou não o grupo manter o código é separado do grupo usando o código. Se os grupos são separados, as probabilidades são de que o código é o código de produção. Se a execução do negócio depende do código, então é certamente o código de produção, mesmo que seja desenvolvido e mantido em casa.
EDIT: A resposta curta:. Se você é "apostando a fazenda nisso", é "produção"
Esta é uma grande questão - uma distinção absolutamente crítico que rotineiramente recebe todos com problemas devido a mal-entendidos. A questão do que é " produção " é um subconjunto da questão relacionada do que é um " ambiente ".
Assim, parte da resposta é que " produção " é o " ambiente " que é mais importante e é mais confiável como o " real " coisa.
Então, agora temos que definir " ambiente " (e, em seguida, revisitar " produção "). Nós ainda estamos longe de uma resposta satisfatória.
programadores usam o termo " ambiente " constantemente para se referir a sistemas de computador que consistem em hardware que está executando software. Esse software é o código que nós escrevemos, além de software que depende, que foi escrito por outros. Nós escrevemos nosso código e integrá-lo com o outro software, em seguida, que normalmente executar o software integrado através de uma série crescente de testes (testes unitários, testes de integração, testes funcionais, testes de aceitação, testes de regressão, etc.), até que finalmente executar o software integrado de forma plena na qual ele se destina.
É claro, nem tudo é totalmente automatizado. Normalmente existem muitas pessoas envolvidas, e eles têm processos manuais para executar. Nós programadores olhar para formas de automatizar como muitos desses processos quanto possível, mas há sempre um "homem / máquina fronteira" nos sistemas em que trabalhamos. Muitas vezes, há muitos desses limites em qualquer caso particular.
Por outro lado, pode não haver qualquer automação significativa em tudo. Por exemplo, falamos de " produção " caminho de volta quando tivemos uma sala cheia de pessoas que executam o trabalho manual que produzidas a produto . Então, não tem que ser qualquer automação presente no nosso " produção " " ambiente ". Há também um meio termo, onde a automação envolvidos não incluem software, como no caso de uma pessoa que funciona um tear para tecer pano.
Além disso, pode não haver um produto , uma vez que se adaptaram a nossa língua de " produção " " ambiente " para incluir produto- menos prestadores de serviços.
Da mesma forma, o teste pode não envolvem software, uma vez que pode estar testando uma máquina não-driven software (por exemplo, o tear) ou mesmo as pessoas (formação e avaliação).
Agora temos tocado em todos os elementos cruciais de uma " ambiente ":
- há um propósito, um
intent
, sendo perseguido - um
intent
requer um intender, então deve haver umsponsor
(a pessoa ou grupo, mas não uma máquina) que especifica ointent
- que
intent
é perseguido através de váriasprocesses
que são realizadas por váriosactors
- os
actors
podem ser pessoas, eles podem ser software executando em hardware, ou eles pode ser máquinas não-software-driven, portanto, pode ou não ser de automação presente
Agora podemos corretamente e totalmente definir os nossos termos originais.
Um
environment
é composto por toda aprocesses
e suaactors
que colaborar para perseguir um determinadointent
em nome de seusponsor
. Este software meios execução em hardware, que as máquinas de meios não-software-driven, e que significa que as pessoas que executam as suas várias funções. É ointent
que primariamente define umenvironment
, e não suaprocesses
ou a suaactors
.
Além disso ...
Se o
intent
sendo perseguido em um determinadoenvironment
é asponsor's
objetivo final, que geralmente envolve a produção de umproduct
ou fornecendo umservice
em troca de dinheiro, em seguida, nos referimos a esseenvironment
comoproduction
.
Agora podemos ir um pouco mais.
Se o
intent
sendo perseguido em umenvironment
é a verificação daprocesses
e suaactors
em preparação paraproduction
, chamamos que atest
environment
.Chamamos ainda que um
integration
environment
se que o teste envolve a rubricar união de indivíduos significativos ou grupos deprocesses
e suaactors
.Se essa preparação envolve a "programação" do ser humano
actors
para executar novoprocesses
, ou a posterior verificação (avaliação), então nós chamamos isso detraining
environment
.
Armado com estas distinções e definições, podemos agora compreender vários cenários comuns.
Um environment
pode ser erroneamente com um nome que não corresponde ao seu intent
, tal como quando um training
ambiente é usado como test
.
Um environment
pode ser grosseiramente mal utilizado, por exemplo, quando integration
ou training
é feito em production
.
O environment
processes
actors
Um environment
podem ser novas tarefas, por redirecionando sua processes
e actors
para um novo intent
. Uma técnica muito bem sucedida para algumas organizações é rotineiramente "flip" vários conjuntos de actors
(servidores de hosting software) entre production
, test
, training
e integration
após cada lançamento.
Na maioria dos casos, um único actor
(pessoa ou hardware) pode executar múltiplos processes
que pode participar em vários environments
. Por exemplo, um único software pode hospedar servidor de computador que executa production
transações ao mesmo tempo, hospedagem outro software que executa test
ou training
funções.
Normalmente, uma única instância de um actor
environment
actor
podem ser compartilhados entre environments
se intents
são mutuamentecompatível. Na maioria das vezes, é muito imprudente para tentar essa partilha porque o intents
não são realmente compatíveis. Um exemplo perfeito é a execução de um test
process
em um servidor que também suporta production
processes
, resultando em tempo de inatividade porque o test
causou todo o servidor a falhar.
Portanto, o intent
de um environment
deve ser interpretado com muito ampla latitude, para incluir conceitos como disponibilidade , confiabilidade , desempenho , recuperação de desastres , precisão , precisão , repetibilidade , longevidade , etc. Isto significa que o actors
e processes
muitas vezes deve ser interpretado de forma a incluir coisas como fornecimento de energia , arrefecimento , backups e redundância .
Finalmente, nota que a situação pode ficar bastante complexo. Por exemplo, um computador de mesa ( actor
) pode ser encarregado pela equipe de desenvolvimento ( sponsor
) para hospedar seu controle de origem ( process
), que a equipe depende de suas tarefas primárias ( production
). No entanto, a equipe de TI vê que mesmo computador desktop simplesmente como uma estação de trabalho desenvolvedor ( development
, não production
) e trata-o com desprezo e indiferença quando se desenvolve um problema de hardware. Mas os desenvolvedores estão produzindo production
código, por isso não são eles também parte do production
? assuntos perspectiva.
EDIT: A qualidade da produção
A verificação sólido ( testing
) metodologia deverá ter código embalados de development
e executá-lo através de uma série de tests
(integração, TQA, funcionais, de regressão, aceitação, etc.) até que saia do outro lado "carimbado" para production
uso. No entanto, isso faz com que o pacote production
qualidade , mas na verdade não production
. O pacote só se torna production
quando um sponsor
, na verdade, implanta-lo em um environment
com esse nível final de intent
.
No entanto, se sua organização simplesmente produz esse pacote (sua product
) para o consumo de outros, então essa versão vem como perto de production
como a organização irá experimentar em relação a esse product
, por isso é comum para esticar o termo production
para aplicar em vez de esclarecer que é production
qualidade . Na realidade, essa organização production
ambiente consiste na actors
e processes
envolvidos em seus esforços de desenvolvimento / libertação que resultam em que product
.
Eu disse que poderia ficar bastante complexo ...
Qualquer código que será usado por ele é destinado userbase caberia em minha definição de 'código de produção'.
É claro, a área cinzenta em que a definição seria definir claramente quem é o seu userbase é.
G-Man
- O software de produção pode apresentar no volume de trabalho necessário, sem interrupção ou degradação do serviço
- Software foi testado com sucesso em diferentes cenários de produção
- Transformar protótipo de trabalho em produção de software que é executado em prova de falhas arquitetura redundante que pode trabalhar no negócio real, ou seja, ambiente de produção, precisa de tempo, refatoração de código, e atenção aos detalhes
- O código de produção tem nível aceitável de manutenção e está razoavelmente bem comentado
- O manual de documentação explica funcionalidade, todos os recursos e facilita a manutenção
- Se o software de produção é um serviço internacional ou a aplicação, deve ser localizada
- Código de produção é utilizada por usuários finais, muitas vezes os clientes nas condições descritas no Acordo de Termos de Serviço
- software de Produção não significa necessariamente missão confiável software crítico
- O software faz bem, o que se pretendia fazer
- Os arquivos de log fornecem uma descrição precisa do desempenho e confiabilidade software métricas e relatórios em tempo de execução que não facilitar a depuração e manutenção de software
Eu acho que a melhor maneira de descrevê-lo, é como qualquer código que "leva-a" implantação e "segue-up" de implantação. implantação propriamente dita é definida como todas as atividades que fazem um sistema de software disponível para uso. Se o seu código está pronto para ser usado por pessoas, em casa ou não, então é o código de produção.
Em palavras simples "Código de produção que é ao vivo e em uso por seu público-alvo"
O termo "produção de código" mistura dois conceitos diferentes. Uma é a gestão de implantação e o outro é ciclo de vida liberação .
No sentido estrito da palavra, um sistema está em produção quando ele está sendo usado como parte da operação de negócio ou serviço. O que não está em produção são o desenvolvimento, teste, QA, demo, e sistema de estadiamento. sistema de produção não implica imediatamente qualidade.
Do ponto de vista do ciclo de vida de lançamento, uma compilação de "produção" é a compilação que é liberado para público em geral ou clientes. É a fase após pré-alfa, alfa, beta, (completo característica, completa código, etc.) e de libertação candidato. Para produtos shrink-wrap que não podem facilmente implantar atualizações, alcançando a fase de produção provável implica série de testes e correções de bugs.