Juntar todos os arquivos da sua aplicação em um ZIP. Transferir o arquivo para o servidor de produção. Descompactar para uma nova pasta. Mudar o diretório do VirtualHost para a nova pasta. Reiniciar o servidor web.

Você pode adicionar, remover ou mudar um desses passos, mas você deve conhecer pelo menos parte do fluxo acima. Muitos de nós já usamos esses passos nos últimos anos para subir o seu site ou aplicação para um servidor. Talvez você tenha até mesmo os usado hoje! Se você o fez, estou aqui para te trazer boas novas: você não precisa mais fazer isso.

Entrega Contínua (CD) e Computação Serverless são termos relativamente recentes, mas com certeza são conceitos que equipes de desenvolvimento e operações desejavam ter por décadas. Entrega Contínua é uma prática onde as mudanças no código sobem continuamente, utilizando um conjunto pré-definido de ações que preparam, fazem a build, testam e sobem o código. Claro, você pode escolher quando subir ou não, mas não precisa fazer todo o trabalho: o software faz por você. No entanto, Entrega Contínua é o segundo passo em um processo de trabalho quem tem mais outros dois passos, Integração Contínua (CI) e Implantação Contínua (Continuous Deployment). Portanto, para poder implementar CI da maneira certa, primeiro deve-se implementar um pipeline de Integração Contínua, onde o código é totalmente integrado, e cada push gera um artefato de build que está pronto para subir.

Computação Serverless é o outro conceito que pode ser útil quando não se deseja mais ter de gerenciar servidores. Quando você utiliza Serverless, o trabalho de criar servidores e carregar o software já não é mais seu, mas sim do seu provedor de nuvem. Nesse caso, você fornece o seu código e o provedor de nuvem irá automaticamente gerenciar as necessidades computacionais sempre que tiver de executar o código. Claro, isto não é uma mágica: o seu provedor de nuvem utiliza servidores e VMs por debaixo dos panos, mas você sempre vai ter seu código executando, não importa quantas instâncias sejam necessárias para aguentar a carga. Isto porque, em vez de ter um servidor que está sempre ligado (muitas vezes subutilizado a maior parte do tempo), com Computação Serverless seu código só executa quando for necessário e você só paga pelo que usa.

Apesar de extremamente útil em alguns casos, Computação Serverless também tem suas desvantagens. Como não há mais uma instância da aplicação que está sempre pronta e o provedor de nuvem pode ter de preparar uma nova, há uma latência maior para a execução do código. Talvez isso não seja um problema para a maioria das aplicações, mas para situações críticas, talvez seja um empecilho. Outra coisa a se considerar antes de utilizar Serverless é se você tem uma aplicação stateful, que depende de conexões persistentes para armazenar estados de sessão. Nesse modelo de computação, instâncias da aplicação podem ser criadas e finalizadas em questão de segundos, de acordo com a carga de uso, e levam com elas todos os dados armazenados na memória. Certifique-se de que sua aplicação não depende de nada que se mantenha na memória entre requests e, se for necessário manter algum dado de sessão, estes dados devem ser persistidos em algum armazenamento externo, como S3 ou um banco de dados.

Talvez estes conceitos sejam extensos para ser digeridos de uma vez, então não se preocupe. Coloque em prática um passo de cada vez. Comece criando pipelines de Entrega Contínua que possam ser usados para subir sua aplicação para seu servidor hoje. Tente utilizar uma aplicação de CI ou até mesmo git hooks para fazer isso. Independente da forma que você use, comece a automatizar o seu fluxo de implementação de aplicação. Uma vez definido isso, será mais fácil tornar sua aplicação serverless e parar de se preocupar com servidores. Será uma preocupação a menos e mais tempo para você focar no seu código.