# Ambiente de implantação

Em implantação de software, um ambiente ou camada é um sistema de computador no qual um programa ou componente de software é implantado e executado. Em casos simples, como o desenvolvimento e a execução imediata de um programa na mesma máquina, pode haver um ambiente único, mas no uso em produção, o ambiente de desenvolvimento (onde as alterações são originalmente feitas) e o ambiente de produção (o que os usuários finais usam) são separados, frequentemente com várias etapas intermediárias. Esse processo estruturado de gerenciamento de liberação permite implantação em fases (rollout), teste e reversão em caso de problemas.
Os ambientes podem variar significativamente em tamanho: o ambiente de desenvolvimento normalmente é uma estação de trabalho de um desenvolvedor individual, enquanto o ambiente de produção pode ser uma rede de muitas máquinas geograficamente distribuídas em centros de dados ou máquinas virtuais em computação em nuvem. Código, dados e configuração podem ser implantados em paralelo e não precisam se conectar à camada correspondente - por exemplo, o código de pré-produção pode se conectar a um banco de dados de produção.

## Ambientes

A tabela abaixo descreve uma lista bem dividida de camadas:
| Nome do Ambiente/Camada | Descrição |
| Local | Estação de trabalho do desenvolvedor |
| Desenvolvimento | Servidor de desenvolvimento agindo como uma sandbox, onde o teste de unidade pode ser executado pelo desenvolvedor |
| Integração | Alvo de criação de IC ou teste de efeitos colaterais para desenvolvedores |
| Teste/CQ/Aceitação Interna | O ambiente em que o teste da interface é executado. Uma equipe de controle de qualidade garante que o novo código não tenha nenhum impacto na funcionalidade existente e testa as principais funcionalidades do sistema após a implantação do novo código no ambiente de teste. |
| Preparação (Staging)/Modelo/Pré-produção/Aceitação do Cliente Externo/Demonstração | Espelho do ambiente de produção |
| Produção/Ativo | Serve os clientes/usuários finais |

### Preparação (staging)

Um ambiente de preparação (do inglês staging) ou pré-produção é um ambiente de teste que procura espelhar o ambiente de produção real o mais próximo possível e pode se conectar a outros serviços e dados de produção, como bancos de dados. Por exemplo, os servidores serão executados em máquinas remotas, e não localmente (como na estação de trabalho do desenvolvedor durante o desenvolvimento ou em uma única máquina de teste durante o teste), que testa os efeitos da rede no sistema.
O uso principal de um ambiente de temporariedade é testar todos os scripts e procedimentos de instalação/configuração/migração antes de serem aplicados a um ambiente de produção. Isso garante que todas as atualizações principais e secundárias em um ambiente de produção sejam concluídas de maneira confiável, sem erros e em um período mínimo de tempo.
Outro uso importante da preparação é o teste de desempenho, particularmente o teste de carga, pois isso geralmente é sensível ao ambiente.
A preparação também é usada por algumas organizações para visualizar novos recursos para selecionar clientes ou validar integrações com versões ativas de dependências externas.

## Integração de frameworks

Desenvolvimento, Preparação e Produção são variáveis de ambiente conhecidas e documentadas no ASP.NET Core. Dependendo da variável definida, um código diferente é executado e o conteúdo é renderizado, diferentes configurações de segurança e depuração são aplicadas.