Sua versão em produção, está correta?

Tempo de leitura: menos de 1 minuto

E ai pessoal, beleza?

 

É uma atividade muito rotineiro na vida de um desenvolvedor, disponibilizar versões que subirão para o ambiente de Homologação, Pré – Produção, Produção (ou qualquer outro que exista em sua empresa), mas, você tem certeza, de que a versão que está sendo executada em produção foi implantada corretamente?

Passei por algumas empresas, clientes, e amigos que me disseram que em suas empresas também fazem da mesma maneira, onde os desenvolvedores abrem o projeto no Visual Studio, realizam uma build em sua máquina, muitas vezes como DEBUG, e utilizam o conteúdo dessa build para implantar em homologação e/ou produção.

Os desenvolvedores também, costumam informar para a equipe de implantações, uma série de configurações que devem ser realizadas para que a aplicação funcione, como por exemplo, alteração de variáveis do Web.config, e também, fornecem uma série de Scripts SQL para serem executados, visando o correto funcionamento da aplicação.

Como todo esse processo é muito manual, a equipe de desenvolvimento costuma( ou não), montar um pequeno manual para a equipe de implantação seguir, entretanto, na maioria das vezes, esses manuais não são atualizados, e/ou são seguidos apenas na primeira e/ou segunda implantação, pois após isso, o operador, acredita que já sabe realizar de olhos fechados a implantação, e já não realiza mais da mesma maneira que foi especificado no manual, sendo que, caso exista algum erro no processo de implantação, fica difícil de se realizar uma auditoria, ou até mesmo de se auditar o processo que foi realizado a 6 meses atrás por exemplo.

Esse processo, não é confiável, não é seguro, por diversos motivos, mas um deles, e do meu ponto de vista, um dos principais, é que não se tem nenhuma garantia de que a versão que está sendo implantada é a correta, se está estável, se passou realmente pelos testes que deveria, enfim, utilizar-se dessa versão pode lhe trazer uma série de problemas, e prejuízos, pois se uma versão incorreta, ou instável entra em produção, seus clientes serão afetados, e sua empresa perderá dinheiro, pois caso seu cliente tente acessar seu sistema, e não consiga utilizá-lo, ele irá partir para outro, tome como exemplo, um e-commerce, se você acessa uma determinada loja virtual, e ela está lenta, ou com algum erro, você espera o problema ser resolvida, ou acessa a loja do concorrente? Com seu sistema, acontece a mesma coisa, e não podemos deixar que isso aconteça.

Em nosso ambiente atual, a execução de implantações manuais já não é mais aceitável, não é seguro, e sua empresa não pode mais correr esse risco de versões estarem em produção, mas não estarem corretas, tendo isso em mente, temos que buscar soluções automatizadas para realizar nossas implantações, pois se utilizamos um processo automatizado, podemos alocar aquele funcionário que ficava responsável apenas por implantações para outras áreas, como desenvolvimento, testes, etc, o processo é executado mais rápido, e é auditável, pois podemos com mais facilidade encontrar locais onde ocorreram erros.

Bom, a Microsoft possui uma solução para realizar implantações automatizadas, essa solução se chama Release Management.

 

rm

Bom, oque seria o Release Management? Seria um orquestrador de implantações, onde você configura os servidores que devem ser implantados suas aplicações, para isso, você utiliza tanto de Scripts PowerShell para ambientes 100% Windows, ou pode utilizar do Chef, para ambientes Híbridos(Mac, Linux, Windows).

O Release Management com PowerShell, utiliza os acessos remotos que o PowerShell permite para realizar as implantações no servidor selecionado.

Com esses Scripts, você pode por exemplo, verificar se o IIS já está instalado, caso não esteja, pode solicitar a instalação via PowerShell, pode verificar se o ASP.NET está instalado, pode parar um WebSite, pode criar um WebSite, enfim, as possibilidades são muitas.

script

Imagine, todo aquele processo que você executava anteriormente de forma manual, sendo executado ao Clique de um botão?

Com o Release Management, você consegue solicitar aprovações de implantação, para manter um histórico de quem autorizou as implantações, você pode enviar e-mails para a equipe de testes informando que existe uma nova versão aguardando aprovação, entre outras funcionalidades.

rm4

Quando você está utilizando o RM com PowerShell, você pode versionar esses scripts de implantação juntamente com sua aplicação, permitindo assim, algum tipo de auditoria que possa existir, querendo consultar o processo de implantação de 6 meses atrás por exemplo.

folder

O RM, obtém a build do TFS(Team Foundation Server) para executar as implantações, caso a build esteja quebrada(com algum erro, não tenha passado nos testes), o RM não a utiliza para implantar nos ambientes

build

rm

 

Sabe oque é ainda mais interessante? Não é necessário realizar uma implantação apenas dentro de sua rede local, suponhamos que você queira deixar seu ambiente de homologação todo dentro do Microsoft Azure, com o RM, é possível você realiza implantações dentro do Microsoft Azure, bastando apenas, você configurar sua conta do Microsoft Azure, que ele se integra com sua conta, e consegue obter listas de maquinas virtuais criadas, para que você possa selecioná-las para realizar suas implantações.

rm2

rm3

 

Enfim, com a Ajuda do Release Management, você consegue, automatizar seu processo de implantação, deixar o processo mais seguro, confiável, auditável, terá menos gastos com pessoal para realizar implantações, e suas versões em produção possuirão uma probabilidade muito menor, de existir erros no ambiente de produção.