Skip to content

Instantly share code, notes, and snippets.

@pablo-rufat
Last active March 20, 2022 12:50
Show Gist options
  • Save pablo-rufat/6b218f2ca78cd6cd526e575ceea39051 to your computer and use it in GitHub Desktop.
Save pablo-rufat/6b218f2ca78cd6cd526e575ceea39051 to your computer and use it in GitHub Desktop.

AMBIENTE DE DESENVOLVIMENTO

Ambiente focado no desenvolvimento do código. Nesse ambiente é onde as novas features são desenvolvidas e testadas de uma forma facil e rápida. Os testes implementados nesse ambiente são de tipo unitário e de integração.

As configurações de segurança e rede são muito flexíveis para favorecer o desenvolvimento e teste de forma fluida. O acesso às branches de desenvolvimento costuma a ser liberado para todos os desenvolvedores já que o risco de afetar o produto final é mínimo. Os dados usados no banco de dados são dados fake e o proprio banco pode ser derrubado e levantado de novo sem prejuizio quantas vezes quiser.

Podemos diferenciar o ambiente de desenvolvimento local (máquina do desenvolvedor) e o ambiente de desenvolvimento remoto, normalmente aprovisionado com os requerimentos basicos, já que unicamente é acessado por desenvolvedores do projeto.

AMBIENTE DE TESTES

No ambiente de testes, o software é testado imitando o comportamento final o máximo possivel. Esses testes são do tipo End-toEnd e são desenvolvidos, automatizados e avaliados pela equipe de Quality Assurance (caso exista no projeto). Tudo nesse ambiente deve ser igual ao ambiente de produção: configurações de hardware, SO, segurança, rede e banco de dados, para que os testes consigam represantar fielmente o funcionamento real do software.

Nesse ambiente ganham importancia as ferramentas testes automatizados como cypress e de monitoramento de software como Sentry. A equipe de QA deve ter uma comunicação continua com a equipe de desenvolvimento para que qualquer bug ou issue achado possa ser resolvido no ambiente de desenvolvimento e ser promovido de novo para o ambiente de testes.

AMBIENTE DE PRODUÇÃO

O ambiente de produção é o conjunto de hardware e ferramentas destinadas a executar o software desenvolvido para o usuario final. Nesse ambiente, é esperado que o código funcione sem nenhum bug (o que raramente acontece).

No caso de uma aplicação web, os servidores de produção devem ser capazes de manter o serviço live ou funcionando para que o acesso dos usuarios não seja interrumpido em nenhum momento. Isso pode ser feito com orquestradores como Kubernetes caso seu aplicativo seja containerizado.

O deploy ou lançamento de novas versões do software no ambiente de produção deve ser feito com muito cuidado para não afetar a experiencia do usuario principalmente em casos como os aplicativos móveis, já que um usuario com uma versão antiga do aplicativo deveria ter suporte da mesma forma que um com a ultima versão.

Um software "em produção" pode ser armazenado em um datacenter, em varios deles para melhorar a redundância ou em serviços na nuvem como AWS ou GCloud.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment