Ambiente de preparação versus ambiente de produção

80

Eu trabalho para uma empresa onde construímos aplicativos corporativos e mantemos três ambientes: desenvolvimento (ou dev ), preparo (ou estágio ) e produção (ou prod ).

O significado de dev é intuitivo: é o ambiente usado durante o desenvolvimento do aplicativo.

Qual é a diferença entre os ambientes de preparação e produção ?

rdasxy
fonte

Respostas:

122

Para empresas menores (não está claro quão grande é o seu), três ambientes (desenvolvedor, estágio, produção) são comuns. As empresas maiores geralmente têm um ambiente de controle de qualidade entre o desenvolvedor e o estágio.

Eles normalmente se decompõem da seguinte maneira:

dev : cópia de código de trabalho. As alterações feitas pelos desenvolvedores são implantadas aqui para que a integração e os recursos possam ser testados. Esse ambiente é atualizado rapidamente e contém a versão mais recente do aplicativo.

qa : (Nem todas as empresas terão isso). Ambiente para garantia de qualidade; isso fornece uma versão menos alterada do aplicativo, na qual os testadores podem executar verificações. Isso permite relatar uma revisão comum para que os desenvolvedores saibam se problemas específicos encontrados pelos testadores já foram corrigidos no código de desenvolvimento.

preparo : Esse é o candidato a release e esse ambiente normalmente é um espelho do ambiente de produção. A área de preparação contém a versão "próxima" do aplicativo e é usada para testes finais de estresse e aprovações de cliente / gerente antes de entrar no ar.

produção : esta é a versão atualmente lançada do aplicativo, acessível ao cliente / usuários finais. Esta versão preferencialmente não muda, exceto durante as liberações agendadas.

Mike
fonte
7
Isso é correto em termos de software. Há também os dados: dev e qa são conectados aos bancos de dados de teste, para que os desenvolvedores e testadores não precisem se preocupar em introduzir mudanças, enquanto a preparação e a produção usam bancos de dados de produção. Pense em um banco.
Juan Lanus
4
Há outra dimensão: quem são os usuários? dev: os desenvolvedores; qa (eu prefiro qc): os testadores; estadiamento e produção: usuários reais. Em aplicativos de negócios com bancos de dados médios, os desenvolvedores não têm permissão para ver e muito menos tocar em bancos de dados de produção, eles são fornecidos com versões anônimas.
Juan Lanus
3
@ JuanLanus: Geralmente, o ambiente de armazenamento temporário usa uma cópia dos dados de produção - normalmente você não deseja alterar os dados de produção do armazenamento temporário.
sleske
1
@JuanLanus: Desculpe, eu quis dizer "você não deseja que as edições no ambiente de preparação sejam visíveis no ambiente de produção" - portanto, a preparação usa uma cópia dos dados de produção, mas (normalmente) uma cópia editável.
sleske
2
Chamamos qa 'test': dev (me), teste (equipe), estadiamento (cliente), prod (mundo)
Rudie
13

Estou um pouco surpreso que um ambiente de teste também não esteja presente, como um local para o código ir antes de ser promovido para teste.

Para responder à pergunta:

Um ambiente de palco deve espelhar o ambiente de produção o mais próximo possível.

Ele é usado para verificar os procedimentos de implantação - garantindo que, quando o código estiver pronto para produção, ele possa ser implantado sem causar problemas.

Ou seja, o código vai para a preparação - isso é testado e regredido de forma abrangente para garantir que a implantação foi executada conforme o planejado (e para resolver os problemas, se não).

Oded
fonte
1
Exatamente - existe para levar o código do ambiente de desenvolvimento para um ambiente mais controlado, entre outras coisas, mostrando quaisquer dependências perdidas na documentação e qualquer constrangimento de 'bom que funcionou na nossa máquina' no ambiente de produção / produção.
Danny Staple
Porém
4

O ambiente de palco é um ambiente de pré-produção que reflete a produção. Frequentemente, pode haver alguns dados de produção para que um grupo de teste composto por usuários reais e testadores de controle de qualidade possa confirmar que a base de dados / dados pré-lançados será implantada e funcionará corretamente em um ambiente semelhante a um produto, geralmente através de casos de uso com script e regressão testes.

Como observa o @Oded, geralmente é comum ter um ambiente de controle de qualidade usado pelos testadores para testar o código.

JW8
fonte
3

Minha experiência com o governo dos EUA / departamento de defesa de TI é que:

  1. DESENVOLVIMENTO / TESTE é para desenvolvedores e desenvolvedores de aplicativos. Eles constroem e testam aplicativos fora dos sistemas corporativos.
  2. Quando os aplicativos forem concluídos, eles serão implantados no ambiente de TI nos servidores PACKAGING.
  3. A partir desse momento, os aplicativos são suportados pela TI, migrados para STAGING (que permite à TI desenvolver / verificar diretrizes de implementação, configurações etc.). O teste do usuário pode ocorrer nesse estágio até certo ponto, para verificar se o aplicativo funcionará conforme o esperado em um sistema que replica a PRODUÇÃO.
  4. Se todos os planos de teste forem concluídos e eles estiverem prontos, o aplicativo será movido para PRODUÇÃO e entrará no modo de manutenção (ou seja, operações e manutenção ou O&M).
  5. Novas atualizações dos desenvolvedores também serão implantadas no PACKAGING e o processo continua.
Cmac
fonte
2
Bem-vindo aos programadores. Nosso site se concentra em perguntas e respostas de alta qualidade. Não é como fóruns típicos. Consulte o centro de ajuda para obter mais informações. Não vejo como sua resposta aborda pontos que ainda não foram apresentados por outras respostas a essa pergunta.
2

Como desenvolvedor web, existem basicamente três ambientes a serem considerados na prática :

Produção : o ambiente configurado para hospedar a versão final de um produto destinado aos usuários finais. É otimizado para segurança e desempenho. Está hospedado em um servidor ativo. Requer suporte alertado e urgente. É crítico para os dados. Portanto, seus dados são copiados regularmente. Também envolve gerenciamento de riscos e recuperação de desastres. O ambiente de produção está configurado para mostrar erros amigáveis ​​para os usuários finais.

Preparo : O ambiente configurado para hospedar o candidato a release do aplicativo após declarar um congelamento de código. Ele visa o gerente / proprietário do projeto, juntamente com a equipe de desenvolvimento, a concordar com o escopo do candidato a lançamento. Envolve garantia de qualidade e também a equipe de desenvolvimento para fazer as correções finais e o fornecimento final antes de liberar a produção. A melhor prática é imitar o ambiente de produção usando os dados mais recentes disponíveis de um banco de dados ativo copiado do ambiente de produção. Normalmente, o ambiente de temporariedade é acessível apenas pela equipe interna e pelas partes interessadas; portanto, ele é protegido em um servidor público ou publicado em um ambiente de intranet, se todas as partes interessadas puderem acessar uma rede local. O ambiente de temporariedade está configurado para mostrar erros técnicos médios ou completos.

Desenvolvimento : o ambiente privado configurado por um único desenvolvedor em sua máquina para verificar seu próprio trabalho durante um ciclo de desenvolvimento, normalmente chamado de sprint em um ambiente scrum. O ambiente de desenvolvimento está configurado para mostrar erros técnicos completos.

Shadi Namrouti
fonte