• novidade
  • técnico
  • lfg

Migração de apps do RPGist para a núvem

O LFG acaba de ser migrado para o Google Cloud, e está com cara nova!

Este post é técnico, para a galera de tecnologia que se interessa pelo que acontece por trás dos panos no RPGist.

O LFG e o Assistente do Conjurador D&D 5e foram os primeiros projetos do RPGist, ambos inicialmente hospedados no Heroku. Com o crescimento do acesso, tornou-se necessário pagar por dynos Hobby para cada um, e também por seus bancos de dados, que excederam os limites de registros para as versões gratuitas. O Heroku cobra em dólares e, com o dolar subindo de lá pra cá, e esses custos começaram a pesar cada vez mais.

Procurando por um jeito de reduzir o peso destes custos no meu bolso, ainda que contragosto, adicionei um programa de publicidades (Adversal, porque o Google Adsense não quis me aceitar de jeito nenhum) e um programa de mineração de Monero (CoinIMP) - configurado para usar o mínimo possível das CPUs, mais detalhes aqui - ambos os quais são desligados para doadores, por sinal.

Abre parênteses.

Muito obrigado a todos RPGistas maravilhosos que fizeram, fazem e/ou farão doações pelo https://donate.rpgist.net, vossa ajuda é muito apreciada!

Fecha Parênteses.

Infelizmente, nenhuma dessas duas táticas deu um resultado significativo (ainda), eu sigo pagando 99% dos custos do meu bolso (com ajuda das doações), então procurei um meio de reduzir os custos de fato.

Solução: migrar as aplicações para a núvem, mais especificamente para o Google Cloud, porque uma VM padrão, mais simples, lá, é mais barata do que na AWS ou na Azure, por exemplo.

Problema: eu nunca tinha administrado um servidor de produção antes.

Quando tomei a decisão de fazer essa migração, no entanto, eu já estava no meio do desenvolvimento da nova versão do LFG, feita em NativeScript + Angular 7, que permite gerar uma app Android com o mesmo codebase da versão web, e que está praticamente pronta, e deve sair em breve (quando eu conseguir).

Ao mesmo tempo também estava desenvolvendo um novo serviço de SSO (Single Sign-On) para o RPGist, o Accounts (que ainda está bem cru. Vou aprimorar ele com o tempo), que resolve o problema de toda aplicação do RPGist ter que gerenciar sessões e dados de usuários individualmente, e para finalmente me livrar das garras do Facebook, que era o único mecanismo de login do LFG, que fez com que a app parasse de funcionar múltiplas vezes ao cortar acesso a informações de usuários das quais a aplicação dependia para funcionar, devido aos escândalos que envolveram a rede social.

Outra coisa que o Facebook cortou nesse meio de caminho, foi a possibilidade de websites sem SSL/HTTPS usarem o recurso de login com Facebook. O sistema de doações do RPGist, o Donate, era um caso desses, logo tornou-se impossível de doadores se logarem e utilizarem o formulário do site para me notificar de suas doações. Eu recebo aviso direto do Paypal quando recebo doações, então isso não prejudicou ninguém, mas eu tinha que consertar essa feature. Incluir SSL não era uma opção atraente, porque como a aplicação também estava hospedada no Heroku, eu precisaria pagar por mais um dyno Hobby pra isso. O objetivo do Donate era reduzir custos com, não aumentar. Decidi, portanto, integrá-lo com o Accounts também, asism só o Accounts precisaria ter SSL, pois só ele faria de fato a integração com Facebook. Só fui descobrir depois, por sinal, que podia criar certificados SSL de graça pelo Let's Encrypt.

Enfim, terminei o desenvolvimento do LFG e do Accounts, integrei o Donate com o Accounts e decidi que iria lançar estas versões novas das apps no novo ambiente, no Google Cloud. Então comecei a estudar como eu faria isso...

Tive que aprender como configurar um Nginx em um container de Docker servindo aplicações que rodam em outros containers, como usar o próprio Google Cloud, como gerar um certificado SSL e configurá-los no Nginx, etc., etc.

Resumindo: estudei, apanhei, testei, apanhei, aprendi e voilà! Está funcionando!

LFG, o Accounts, o Donate e seus respectivos bancos de dados estão todos rodando atualmente em uma única VM no Google Cloud, todos com SSL (for freeeeee), cujo custo fica menor do que 3 dynos Hobby e 2 bancos de dados pagos que eu precisava no Heroku. Neste momento, não estou mais pagando pelo dyno e pelo banco do LFG no Heroku. O Assistente do Conjurador D&D 5e ainda está lá.

O próximo passo é migrar o  Assistente do Conjurador D&D 5e para a mesma VM, mas primeiro terei que integrar ele com o Accounts, o que vai tomar um tempinho. Vou lhes atualizando conforme isso caminha.

E é o que tá teno pra hoje. Acabou o post. Acabou!