Overview
Antes de mais nada, vou citar a fonte de onde eu fiquei sabendo disso. Tudo começou com um vídeo do Chris Titus. A interface deu uma mudada desde que o vídeo saiu mas o esquema segue de pé.
BTW existem outras coisas gratuitas além da VPS.
Para ativar o uso do Compute Engine você vai precisar de um número de cartão de crédito, eles não vão te cobrar até você ir explicitamente e dar upgrade, essa VPS é de graça mas se você subir outras coisas, como VMs com Genymotion, ele primeiro vai usar aquele crédito inicial de 300USD ou 3 meses e então vai existir a opção de descontar o saldo. Eu não testei até por que meus 3 meses ainda não terminaram mas enquanto você não fizer o upgrade para descontar eles não vão te cobrar nada no cartão, meu cartão é do Mercado Pago BTW.
Não sei qual a pira da galera do Google Cloud Platform mas o site deles só funciona decentemente no Google Chrome, no Firefox fica bem lento então é uma boa ter o Chrome nem que seja só pra isso.
A instância gratuita tem que ser uma f1-micro
(novidades abaixo sobre isso) hosteada em alguns datacenters específicos nos estados unidos, é uma instância preemptiva de um núcleo, ou seja, esse núcleo é compartilhado com VPSes de outras pessoas. A VPS tem um total de 583MB de RAM então é uma boa usar swapfile ou o Low Memory Killer vai fazer a chacina quando o movimento não for mais tão trivial.
A minha instância está rodando NixOS, o processo de configuração inicial não é tão trivial mas eu consegui. Eu uso flakes no meu NixOS e de início o NixOS não vem com flakes habilitado então eu tive que compilar o sistema na minha máquina, gerar um arquivo NAR da saída da compilação, mandar para o Google Drive e baixar do Google Drive na VM. Por que Google Drive? Por que é mais rápido!. Na VPS eu importei esse NAR e fui na pasta da saída do build e apliquei essa compilação usando um comando tipo sudo /nix/store/ummontedecodigo-cloudhead/bin/switch-to-configuration switch
. Reiniciei a VPS e tá pronto o sorvetinho. Você pode usar Ubuntu, Debian e algumas outras distros que vai estar na lista da interface. A distro tanto faz contanto que não passe do tamanho de disco, o que é inicialmente impossível por que as imagens base são bem pequenas.
Como criar a VPS
Ao ir para o console do GCP você vai ir para uma tela assim:
Nesse caso os 18 centavos estão inclusos naquele esquema dos 300USD e eu usei para subir uma instância do Genymotion por coisa de uma hora.
No menu hamburguer vai para Compute Engine.
Na primeira vez ele vai pedir para configurar uma conta de faturamento, é basicamente um perfil com cartão de crédito. Por que não associar logo no projeto? Cardinalidade! Uma conta de faturamento pode ser usada para vários projetos, mesmo sendo geralmente usada para só um.
Nessa tela depois da configuração inicial vai ter uma opção para criar instância, mais especificamente essa tela aqui:
Ai você dá um nome para a sua instância, a região tem que ser Oregon, Iowa ou Carolina do Sul. Em família de máquinas você deixa o tipo padrão (Propósito geral), série N1 e tipo de máquina f1-micro, em disco de inicialização, o padrão é Debian 10 (buster) com 10GB, vai em alterar, escolhe o sistema que achar melhor e embaixo deixa o disco permanente padrão e em tamanho você pode colocar até 30GB.
Se for usar NixOS tem um passo a mais, pois você tem que importar uma imagem template para a sua conta, esse artigo da wiki tem mais detalhes, depois de criada a VPS você pode apagar a imagem importada sem problemas. O NixOS no primeiro boot pelo menos precisa que a VM GCP tenha um metadado configurado. Essa informação está na Wiki, sem esse metadado você vai ficar trancado para o lado de fora da VM por que a funcionalidade de SSH do GCP não vai conseguir conversar com a VM.
Se você escolheu o tipo de instância certa a mensagem de que as primeiras N horas do mês são gratuitas nessa instância. Pode fazer as contas, vai ser o número de horas do mês, nesse caso não está aparecendo todas as horas por que eu já tenho uma instância rodando a alguns dias. A instância só reiniciou ou desligou por que eu mandei ela fazer isso. O ambiente é mais flexível que o heroku que só expõe uma porta como porta 80, não aceita sistemas operacionais completos, no máximo containers, não salva estado e derruba sua aplicação depois de 30 minutos de inatividade.
É possível configurar firewall para a instância, eu uso zerotier que meio que cria uma rede local virtual. É como um hamachi só que melhor. Eu configurei para expor algumas portas externamente por comodidade.
A instância é fraca, isso eu tenho que concordar, mas quebra um galho e vai te ajudar a pegar algumas manhas.
Mudança de planos do Google que vai entrar em vigor em agosto de 2021
Hoje (20/7) eu recebi um email avisando que em breve o tipo de instância do free tier vai mudar. f1-micro
é uma instância de primeira geração e pelo jeito eles vão decomissionar ou sabe se la o que e vão mudar a instância do free tier.
A nova instância do free tier vai ser a e2-micro
que é uma instância de segunda geração.
Se a data que você estiver lendo é antes do dia primeiro de agosto de 2021 então aínda não chegou a hora de migrar. Durante o mês de agosto as duas vão estar no free tier e você vai ter até dia 1 de setembro de 2021 para migrar a sua instância f1-micro
para e2-micro
.
O processo de migração é bem trivial. Você desliga a sua instância se já estiver ligada, vai em editar e muda o tipo. Não perde absolutamente nada e resolve em menos de 5 minutos.
A novidade da instância pelo que eu percebi é que ela vai fornecer mais recurso. A f1-micro
fornece uns 650MB de RAM enquanto a e2-micro
vai fornecer 1GB. Enquanto a f1-micro
fornece um núcleo compartilado a e2-micro
vai fornecer dois compartilhados porém com um overcommit de VMs de 4 por núcleo, então no melhor dos casos você pode ter dois núcleos dedicados mas vai brigar com outras 4 máquinas por um núcleo então se as outras estiverem mais na maciota você tem mais margem para torrar o pau. Isso eu achei interessante e dependendo do uso que outros usuários derem para isso já pode ser uma boa para aplicações que não tem muita consistência de movimento.
Qual a pegadinha?
Saída de rede
O primeiro GB por mês de saída de tráfego de rede é de graça, mas é bem difícil fazer uma aplicação útil usar menos que 1GB de rede em um mês. Se você por acaso tiver uma cobrança vai muito provavelmente ser por causa de saída de rede.
Uma dica: se você for fazer um bot de Telegram tenta fazer usando webhooks. O problema do long pooling é que gera tráfego e o problema de gerar tráfego é que você pode ser cobrado mesmo que o bot não tenha feito nada de útil.