Ambientes de Desenvolvimento
Vamos entender o básico sobre ambientes de desenvolvimento e por que eles são tão úteis no ciclo de vida no desenvolvimento de softwwares mais complexos.
O que são ambientes de desenvolvimentos?
Um ambiente de desenvolvimento é um conjunto de configurações, e recursos específicos que ajudam os deesenvolvedores a separarem as necessidades de um software dependendo de cada etapa do desenvolvimento. Cada configuração é pensada para otimizar o desenvolvimento, pensando nas melhores práticas em cada etapa. Para facilitar o entendimento, podemos pensar na analogia mais comum dos desenvolvedores: O restaurante. Um restaurante tem diferentes ambientes e cada um deles vai ser focado em um propósito específico. O ambiente do salão é diferente do ambiente da cozinha, que são diferentes do ambiente de depósito. Cada um deles é pensado para um determinado momento e possuem características específicas.
Quais são os ambientes de desenvolvimento?
Por convenção, existem 3 ambientes de desenvolvimento principais: Desenvolvimento, Testes e Produção. Ainda podem ter outros ambientes, mas esses são os mais comuns.
Ambiente de desenvolvimento
É o ambiente dedicado à escrita inicial do código, implementação das funcionalidades e regras de negócios. É o ambiente onde todo iniciante da programação costuma começar. Nesse ambiente, as configurações são voltadas para criar os códigos e muitas vezes nem possuem bancos de dados e não costumam estar conectados com servidores remotos. Voltados para o desenvolvimento local.
Ambiente de Testes (Ou também conhecido como homologação)
Esse ambiente é voltado para testar os códigos que foram implementados, bem como encontrar possíveis erros do código (bugs). É nesse ambiente onde são utilizados ferramentas de testes (JUnit, Rspec, Pytest, ...) voltados para testes manuais e automatizados com o intuito de verificar possíveis falhas, e possui acesso controlado para alguns usuários de teste.
Ambiente de produção
É o ambiente que será disponibilizado para o usuário final do sistema. Nele são configurados os bancos de dados e comunicação direta com os clientes. É onde está a versão final do sistema, quando é feito o deploy da aplicação. Este ambiente precisa ser estável e seguro, pois é nesse ambiente que o sistema será disponibilizado para o mundo real. Geralmente nesse ambientes são utilizados softwares para o monitoramento da aplicação e considera aspecctos de load balance e logs. Uma ferramenta para esse ambiente é o jenkins.
Onde esses ambientes são definidos?
Esses ambientes são descritos em um arquivo chamado .env. Em algumas tecnologias, como é o caso do Rails (Framework da linguagem Ruby) os ambientes já são pré-definidos, sem a necessidade de implementar manualmente cada um dos ambientes. Ainda assim, é responsabilidade do time de desenvolvimento descrever as regras dos ambientes.