Você desenvolveu o seu software - seja um website, portal, aplicativo ou qualquer outro tipo - testou, fez pesquisa de mercado pra fazer a melhor entrega de valor possível e está tudo pronto para o lançamento. Agora você precisa entregar seu programa para o seu cliente, como fazer?
Percebo que mesmo a maior parte dos desenvolvedores não conhece bem, ou não conhece de maneira nenhuma, as boas práticas para criar um bom processo de entrega (ou deploy) de seu software. E tão importante quanto construir o melhor software, com as melhores funcionalidades, a experiência de usuário mais fluída, é o processo de entregar toda essa pilha de código, funções, processos e dados aos clientes.
E é nesse ponto que eu quero chegar com esse artigo. Atualmente estamos ouvindo falar bastante de DevOps, que deriva das palavras inglesas Development + Operations (Desenvolvimento + Operações). O DevOps trata de técnicas e processos que vão desde o início do desenvolvimento de um software (ou funcionalidade) até a entrega final para o cliente. Essa parte final, é a que comumente nos referimos como Deploy.
E nesse caso podem existir diferentes tipos, dependendo do tipo de software que você está desenvolvendo e até mesmo da arquitetura dele.
Software na nuvem
Um software na nuvem pode ser um website, um portal de notícias, ou até mesmo um aglomerado de microsserviços que desempenham alguma determinada função, e que está hospedado em algum serviço de nuvem pública. Perceba que isso não quer dizer que o acesso à esse software seja público, significa apenas que ele é acessível publicamente pela internet (grande diferença aqui!).
Esse é, provavelmente, o tipo mais simples - veja que simples não é sinônimo de fácil - de deploy. Pois você pode atualizar uma determinada versão de seu software para uma grande parcela de seus clientes, talvez até mesmo todos eles, de uma única vez. Basta jogar os arquivos lá, e seus clientes estarão utilizando a versão mais recente.
Aplicativos móveis
Aplicativos são normalmente distribuídos por lojas de apps, como a App Store da Apple ou a Play Store da Google. Nesse caso, você precisará enviar uma cópia do seu software compilado para uma dessas empresas, e elas irão fazer uma espécie de homologação do seu aplicativo antes de disponibilizá-lo aos seus clientes.
Esse processo tende a ser um pouco mais chato e moroso, porém ajuda a manter um certo padrão de qualidade nos apps que vemos nos nossos celulares hoje.
Software on-premise - instalado localmente na máquina do usuário final
Esse tipo de software era o mais comum até uns tempos atrás. Basicamente é todo e qualquer programa que você instala no seu computador.
Nesse caso pode ser um pouco mais complicado de realizar um deploy de uma versão atualizada, afinal de contas você não tem exatamente controle sobre o ambiente em que o seu software está rodando e nem sobre o que o usuário pode fazer com os seus arquivos.
Nesse caso normalmente temos um serviço entre as pontas - sua infraestrutura e a do cliente - que irá receber os arquivos do seu processo de deploy, e em seguida disponibilizá-lo para que os dispositivos do seu cliente o recebam. Além disso o seu programa deve estar preparado - ter código e funcionalidade o bastante - para se "auto"-atualizar.
Então é isso pessoal, gostaram do assunto? Se tiverem alguma dúvida, comentem aí que eu elaboro outro post respondendo. Até mais.
Comments