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.

Foi útil?

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ódigo

Produçã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 um sponsor (a pessoa ou grupo, mas não uma máquina) que especifica o intent
  • que intent é perseguido através de várias processes que são realizadas por vários actors
  • 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 a processes e sua actors que colaborar para perseguir um determinado intent em nome de seu sponsor . 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. É o intent que primariamente define um environment , e não sua processes ou a sua actors .

Além disso ...

Se o intent sendo perseguido em um determinado environment é a sponsor's objetivo final, que geralmente envolve a produção de um product ou fornecendo um service em troca de dinheiro, em seguida, nos referimos a esse environment como production .

Agora podemos ir um pouco mais.

Se o intent sendo perseguido em um environment é a verificação da processes e sua actors em preparação para production , chamamos que a test environment .

Chamamos ainda que um integration environment se que o teste envolve a rubricar união de indivíduos significativos ou grupos de processes e sua actors .

Se essa preparação envolve a "programação" do ser humano actors para executar novo processes , ou a posterior verificação (avaliação), então nós chamamos isso de training 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 pode ser deturpada, tal como quando a chave processes ou actors são deixados não identificado (por exemplo, reconciliações manuais, ou mesmo por ignorando as pessoas ao todo).

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 deve participar em apenas um environment de cada vez. Na ocasião muito rara, um único 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.

text alt

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top