

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Entendendo os DevOps ambientes
<a name="understanding-the-devops-environments"></a>

Para entender as estratégias de ramificação, você deve entender o propósito e as atividades que ocorrem em cada ambiente. Estabelecer vários ambientes ajuda você a separar as atividades de desenvolvimento em estágios, monitorar essas atividades e evitar o lançamento não intencional de recursos não aprovados. Você pode ter um ou mais Contas da AWS em cada ambiente. 

A maioria das organizações tem vários ambientes definidos para uso. No entanto, o número de ambientes pode variar de acordo com a organização e de acordo com as políticas de desenvolvimento de software. Esta série de documentação pressupõe que você tenha os cinco ambientes comuns a seguir que abrangem seu pipeline de desenvolvimento, embora possam ser chamados por nomes diferentes:
+ **Sandbox** — Um ambiente em que os desenvolvedores escrevem código, cometem erros e realizam trabalhos de prova de conceito.
+ **Desenvolvimento** — Um ambiente em que os desenvolvedores integram seu código para confirmar que tudo funciona como um aplicativo único e coeso.
+ **Teste** — Um ambiente em que equipes de controle de qualidade ou testes de aceitação ocorrem. As equipes geralmente realizam testes de desempenho ou integração nesse ambiente.
+ **Preparação** — um ambiente de pré-produção em que você valida se o código e a infraestrutura funcionam conforme o esperado em circunstâncias equivalentes à produção. Esse ambiente está configurado para ser o mais semelhante possível ao ambiente de produção.
+ **Produção** — Um ambiente que gerencia o tráfego de seus usuários finais e clientes.

Esta seção descreve cada ambiente em detalhes. Ele também descreve as etapas de criação, as etapas de implantação e os critérios de saída de cada ambiente, para que você possa prosseguir para o próximo. A imagem a seguir mostra esses ambientes em sequência.

![\[DevOps Ambientes comuns em ordem sequencial\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/choosing-git-branch-approach/images/devops-environments.png)


**Topics**
+ [Ambiente sandbox](sandbox-environment.md)
+ [Ambiente de desenvolvimento](development-environment.md)
+ [Ambiente de teste](testing-environment.md)
+ [Ambiente de preparação](staging-environment.md)
+ [Ambiente de produção](production-environment.md)

# Ambiente sandbox
<a name="sandbox-environment"></a>

O *ambiente sandbox* é onde os desenvolvedores escrevem código, cometem erros e realizam trabalhos de prova de conceito. Você pode implantar em um ambiente sandbox a partir de uma estação de trabalho local ou por meio de um script em uma estação de trabalho local.

## Acesso
<a name="access"></a>

Os desenvolvedores devem ter acesso total ao ambiente sandbox.

## Etapas de construção
<a name="build-steps"></a>

Os desenvolvedores executam manualmente a compilação em suas estações de trabalho locais quando estão prontos para implantar alterações no ambiente sandbox.

1. Use [git-secrets](https://github.com/awslabs/git-secrets) (GitHub) para verificar informações confidenciais

1. Lint, o código-fonte

1. Crie e compile o código-fonte, se aplicável

1. Execute testes unitários

1. Realizar análise de cobertura de código

1. Executar análise estática de código

1. Crie infraestrutura como código (IaC)

1. Execute a análise de segurança do IaC

1. Extraia licenças de código aberto

1. Publique artefatos de construção

## Etapas da implantação
<a name="deployment-steps"></a>

Se você estiver usando os modelos Gitflow ou Trunk, as etapas de implantação serão iniciadas automaticamente quando uma `feature` ramificação for criada com sucesso no ambiente sandbox. Se você estiver usando o modelo GitHub Flow, execute manualmente as seguintes etapas de implantação. A seguir estão as etapas de implantação no ambiente sandbox:

1. Baixe artefatos publicados

1. Executar o controle de versão do banco de dados

1. Execute a implantação do IaC

1. Realize testes de integração

## Expectativas antes de passar para o ambiente de desenvolvimento
<a name="expectations-before-moving-to-the-development-environment"></a>
+ Construção bem-sucedida da `feature` filial no ambiente sandbox
+ Um desenvolvedor implantou e testou manualmente o recurso no ambiente sandbox

# Ambiente de desenvolvimento
<a name="development-environment"></a>

O *ambiente de desenvolvimento* é onde os desenvolvedores integram seus códigos para garantir que tudo funcione como um aplicativo coeso. No Gitflow, o ambiente de desenvolvimento contém os recursos mais recentes incluídos pela solicitação de mesclagem e está pronto para lançamento. Nas estratégias de GitHub Flow e Trunk, o ambiente de desenvolvimento é considerado um ambiente de teste, e a base de código pode ser instável e inadequada para implantação na produção.

## Acesso
<a name="access"></a>

Atribua permissões de acordo com o princípio do menor privilégio. *Privilégio mínimo* é a prática recomendada de segurança para conceder as permissões mínimas necessárias para executar uma tarefa. Os desenvolvedores devem ter menos acesso ao ambiente de desenvolvimento do que ao ambiente sandbox.

## Etapas de construção
<a name="build-steps"></a>

A criação de uma solicitação de mesclagem para a `develop` ramificação (Gitflow) ou a `main` ramificação (Trunk ou GitHub Flow) inicia automaticamente a construção.

1. Use [git-secrets](https://github.com/awslabs/git-secrets) (GitHub) para verificar informações confidenciais

1. Lint, o código-fonte

1. Crie e compile o código-fonte, se aplicável

1. Execute testes unitários

1. Realizar análise de cobertura de código

1. Executar análise estática de código

1. Crie IaC

1. Execute a análise de segurança do IaC

1. Extraia licenças de código aberto

## Etapas da implantação
<a name="deployment-steps"></a>

Se você estiver usando o modelo Gitflow, as etapas de implantação serão iniciadas automaticamente quando uma `develop` ramificação for criada com sucesso no ambiente de desenvolvimento. Se você estiver usando o modelo GitHub Flow ou o modelo Trunk, as etapas de implantação serão iniciadas automaticamente quando uma solicitação de mesclagem for criada na `main` ramificação. A seguir estão as etapas de implantação no ambiente de desenvolvimento:

1. Baixe os artefatos publicados nas etapas de construção

1. Executar o controle de versão do banco de dados

1. Execute a implantação do IaC

1. Execute testes de integração

## Expectativas antes de passar para o ambiente de teste
<a name="expectations-before-moving-to-the-testing-environment"></a>
+ Construção e implantação bem-sucedidas da `develop` ramificação (Gitflow) ou da `main` ramificação (Trunk ou GitHub Flow) no ambiente de desenvolvimento
+ O teste unitário passa em 100%
+ Construção bem-sucedida do IaC
+ Os artefatos de implantação foram criados com sucesso
+ Um desenvolvedor realizou uma verificação manual para confirmar se o recurso está funcionando conforme o esperado

# Ambiente de teste
<a name="testing-environment"></a>

A equipe de garantia de qualidade (QA) usa o ambiente de teste para validar os recursos. Eles aprovam as alterações depois de concluírem os testes. Quando eles aprovam, a filial passa para o próximo ambiente, a fase de preparação. No Gitflow, esse ambiente e outros acima dele só estão disponíveis para implantação a partir de `release` filiais. Uma `release` ramificação é baseada em uma `develop` ramificação que contém os recursos planejados.

## Acesso
<a name="access"></a>

Atribua permissões de acordo com o princípio do menor privilégio. Os desenvolvedores devem ter menos acesso ao ambiente de teste do que ao ambiente de desenvolvimento. A equipe de controle de qualidade precisa de permissões suficientes para testar o recurso.

## Etapas de construção
<a name="build-steps"></a>

O processo de compilação nesse ambiente só é aplicável para correções de bugs ao usar a estratégia Gitflow. A criação de uma solicitação de mesclagem para a `bugfix` ramificação inicia automaticamente a construção.

1. Use [git-secrets](https://github.com/awslabs/git-secrets) (GitHub) para verificar informações confidenciais

1. Lint, o código-fonte

1. Crie e compile o código-fonte, se aplicável

1. Execute testes unitários

1. Realizar análise de cobertura de código

1. Executar análise estática de código

1. Crie IaC

1. Execute a análise de segurança do IaC

1. Extraia licenças de código aberto

## Etapas da implantação
<a name="deployment-steps"></a>

Inicie automaticamente a implantação da `release` ramificação (Gitflow) ou da `main` ramificação (Trunk ou GitHub Flow) no ambiente de teste após a implantação no ambiente de desenvolvimento. A seguir estão as etapas de implantação no ambiente de teste:

1. Implemente a `release` ramificação (Gitflow) ou `main` ramificação (Trunk ou GitHub Flow) no ambiente de teste

1. Pausa para aprovação manual pelo pessoal designado

1. Baixe artefatos publicados

1. Executar o controle de versão do banco de dados

1. Execute a implantação do IaC

1. Execute testes de integração

1. Realize testes de desempenho

1. Aprovação de garantia de qualidade

## Expectativas antes de passar para o ambiente de teste
<a name="expectations-before-moving-to-the-staging-environment"></a>
+ As equipes de desenvolvimento e controle de qualidade realizaram testes suficientes para satisfazer os requisitos da sua organização.
+ A equipe de desenvolvimento resolveu todos os bugs descobertos por meio de uma `bugfix` ramificação.

# Ambiente de preparação
<a name="staging-environment"></a>

O *ambiente de preparação* está configurado para ser igual ao ambiente de produção. Por exemplo, a configuração dos dados deve ser semelhante em escopo e tamanho às cargas de trabalho de produção. Use o ambiente de preparação para verificar se o código e a infraestrutura funcionam conforme o esperado. Esse ambiente também é a escolha preferida para casos de uso comercial, como visualizações prévias ou demonstrações para clientes.

## Acesso
<a name="access"></a>

Atribua permissões de acordo com o princípio do menor privilégio. Os desenvolvedores devem ter o mesmo acesso ao ambiente de preparação que têm ao ambiente de produção.

## Etapas de construção
<a name="build-steps"></a>

Nenhum. Os mesmos artefatos que foram usados no ambiente de teste são reutilizados no ambiente de teste.

## Etapas da implantação
<a name="deployment-steps"></a>

Inicie automaticamente a implantação da `release` filial (Gitflow) ou da `main` filial (Trunk ou GitHub Flow) no ambiente de teste após a aprovação e a implantação no ambiente de teste. A seguir estão as etapas de implantação no ambiente de preparação:

1. Implemente a `release` ramificação (Gitflow) ou `main` ramificação (Trunk ou GitHub Flow) no ambiente de teste

1. Pausa para aprovação manual pelo pessoal designado

1. Baixe artefatos publicados

1. Executar o controle de versão do banco de dados

1. Execute a implantação do IaC

1. (Opcional) Realizar testes de integração

1. (Opcional) Execute o teste de carga

1. Obtenha a aprovação dos aprovadores necessários de desenvolvimento, controle de qualidade, produto ou negócios

## Expectativas antes de passar para o ambiente de produção
<a name="expectations-before-moving-to-the-production-environment"></a>
+ Uma versão equivalente à produção foi implantada com sucesso no ambiente de teste
+ (Opcional) A integração e o teste de carga foram bem-sucedidos

# Ambiente de produção
<a name="production-environment"></a>

O *ambiente de produção* suporta o produto lançado, manipulando dados reais de clientes reais. Esse é um ambiente protegido ao qual é atribuído acesso por privilégio mínimo e o acesso elevado só deve ser permitido por meio de um processo de exceção auditado por um período limitado de tempo.

## Acesso
<a name="access"></a>

No ambiente de produção, os desenvolvedores devem ter acesso limitado e somente para leitura no AWS Management Console. Por exemplo, os desenvolvedores devem ser capazes de acessar dados de log para day-to-day operações. Todas as versões para produção devem ser limitadas por uma etapa de aprovação antes da implantação.

## Etapas de construção
<a name="build-steps"></a>

Nenhum. Os mesmos artefatos que foram usados nos ambientes de teste e preparação são reutilizados no ambiente de produção.

## Etapas da implantação
<a name="deployment-steps"></a>

Inicie automaticamente a implantação da `release` filial (Gitflow) ou da `main` filial (Trunk ou GitHub Flow) no ambiente de produção após a aprovação e a implantação no ambiente de preparação. A seguir estão as etapas de implantação no ambiente de produção:

1. Implante a `release` ramificação (Gitflow) ou `main` ramificação (Trunk ou GitHub Flow) no ambiente de produção

1. Pausa para aprovação manual pelo pessoal designado

1. Baixe artefatos publicados

1. Executar o controle de versão do banco de dados

1. Execute a implantação do IaC