Tecnologia / Blog /
Hospedando uma plataforma sem gastar nenhum centavo

Cléber

## Até o domínio sai de graça! * Date: 2018-10-21 00:28:43 * Modified: 2018-11-30 16:12:23 Um dos meus requisitos para colocar o próprio Deretium para rodar era justamente conseguir deixar a plataforma rodando com o mínimo de manutenção e o mínimo de custo. Inicialmente eu imaginava que gastaria algumas dezenas de reais pelo menos com o domínio ou configurando um servidor com SSL, mas no fim das contas acabei conseguindo colocar tudo no ar de forma **absolutamente gratuita**. Nada mal. :) # Nem tudo é questão de dinheiro Eu acho muito **saudável** essa possibilidade que temos atualmente de hospedar sistemas na *web* sem precisar gastar dinheiro. Saudável porque permite que novas ideias, como a minha, sejam testadas, colocadas à prova no mundo real e devidamente validadas. Essa *mamata* de manter um sistema assim no ar gratuitamente só durará **um ano**, claro. Um prazo mais que suficiente para eu descobrir se acabarei assumindo alguns gastos ou recebendo alguns dividendos com esse projeto. # O site O Deretium é um site curioso, especialmente porque é **completamente desprovido de Javascript**. Ele faz tudo naquele estilo tradicional de *request/response*, sem nenhum "XHR" no meio, sem API, sem nada. Ele também é **tracking free**, ou seja, **não há absolutamente nenhum agente externo espionando o tráfego dentro deste site**. Repare que eu propositadamente não coloquei nenhum tipo de "botão de like do Facebook" ou "barra de compartilhamento". Você também pode abrir o código fonte dessa página ou fazer uma análise de tráfego de rede e perceber que eu não uso nenhum tipo de sistema de "analytics" externo. Eu menciono essas minhas decisões porque elas tem peso no quesito técnico e de **preço**. Eu **preciso** de algum poder computacional, já que todas as ações são executadas *server-side* e **preciso** de um banco de dados para persistir todo o conteúdo, contas de usuários, interações, etc. (O site não aceita upload de nenhum tipo de arquivo, então eu me safei de precisar de **armazenamento**, pelo menos.) Esse artigo trata especificamente de aplicações assim, mais "tradicionais". Eu bem poderia criar um site baseado fortemente em Javascript e usar as dezenas de belas funcionalidades que o Netlify provê gratuitamente. Mas, como eu detesto Javascript (por N razões), fico bem feliz em poder trabalhar "do jeito antigo". # Amazon Web Services Eu procurei plataformas "PaaS" (*platform as a service*) alternativas, mas nenhuma das que eu vi oferecia um plano gratuito tão satisfatório quanto o da Amazon (ou, pelo menos, eu não consegui encontrar). ## Free Tier https://aws.amazon.com/free/ A Amazon (AWS) oferece um "plano grátis" de **um ano** para contas novas. Esse plano oferece um conjunto bastante decente de funcionalidades, conforme você pode conferir no link acima. Você pode até mesmo escolher usar algumas que não sejam cobertas pelo *free tier*, sem problema algum: nesse caso, basta pagar a fatura no fim do mês (que, se você não fizer nenhuma besteira, deve ser bem baixa). O que mais me interessou foi o EC2 (computação) e o RDS (banco de dados relacional). ## EC2: computação Antes de "cair" no EC2, minha alternativa era o **Heroku**. Não me julgue mal: eu acho o Heroku lindo. Lindo, mesmo. Mas essa beleza toda vem a um custo, que é **dinheiro**. Ele até oferece um plano gratuito, mas o *dyno* (que é uma espécie de máquina virtual ou *container*) "drena" horas de sua conta que, se for "não-verificada", tem somente 550 horas por mês. Isso dá cerca de 18 horas por dia. Ou seja: é bom a tua aplicação dormir pelo menos 8 horas por dia, ou então "sobrará mês" no fim das suas horas. E esses *dynos* gratuitos dormem depois de 30 minutos de inatividade, o que geralmente não é percebido, mas certamente um ou outro usuário acabará sentindo alguns segundos de "lag". Então, acaba sendo mais ou menos assim: se você quer testar sua aplicação com uma audiência limitada, o plano gratuito do Heroku é muito bom -- muito bom mesmo, porque é bem fácil de operar. Mas se você quer colocar uma prova de conceito mais séria, acaba sendo mais interessante usar o *free tier* da AWS. ## RDS: banco de dados O Heroku também provê um banco de dados (Postgres). O plano gratuito te dá uma máquina de tamanho razoável e limite de **10 mil linhas**. Então, novamente: se você está só testando uma aplicação, "sem muito compromisso", 10 mil linhas é um limite perfeitamente aceitável. Mas se precisa de algo mais sério, é melhor pegar o RDS do *free tier* da Amazon. A máquina do *free tier* é praticamente idêntica à máquina do plano gratuito do Heroku, com a grande diferença de que, enquanto esta tem um limite de 10 mil linhas, aquela te permite gravar **20GB de dados** e gerenciar seu Postgres como bem entender. E **20GB é um excelente tamanho**. Conheço aplicações comerciais que não chegam nem perto de usar isso. ## Elastic IP O Elastic IP é meio mal documentado (como tudo na AWS) mas o que importa sobre ele é o seguinte: 1) Se sua máquina EC2 for reiniciada, sem usar o Elastic IP, não é garantido que ela mantenha o IP externo original. 2) Usando o Elastic IP, você consegue um IP público que "se prenda" à sua instância EC2 novamente tão logo ela volte ao ar. 3) O Elastic IP não é cobrado se for **um por máquina e se ela estiver ligada**. Esse último ponto merece mais explicação: para eviar **abusos**, a Amazon cobra de Elastic IPs "ociosos". Por isso, caso sua máquina fique desligada por muito tempo, você pode acabar tendo que pagar por isso caso use o Elastic IP. Mas não se preocupe: o valor é **bem** barato[4]. [4] https://aws.amazon.com/ec2/pricing/on-demand/#Elastic_IP_Addresses (O valor era de **5 milésimos** de dólar por hora no dia em que escrevi este artigo.) ## Calculadora http://calculator.s3.amazonaws.com/index.html Caso você comece a pensar em contratar mais serviços da AWS, recomendo ter em mãos o link dessa calculadora, aí. Ela é feinha, mas funciona bem para estimar seus custos. (Nota importante: o domínio da calculadora é fácil de lembrar, então você provavelmente acabará querendo acessá-la "de cabeça". Mas lembre-se: você **precisa** colocar o `/index.html`, ou então não vai funcionar!) # Netlify Se há na web algum serviço mais legal que o Heroku, certamente o **Netlify**[1] é um deles. A equipe é extremamente focada em entregar aos desenvolvedores funcionalidades que realmente importam e que sejam **estupidamente simples** de serem usadas (ao contrário da AWS, por exemplo, em que tudo é mais difícil do que você imaginaria e pior documentado do que você aceitaria). [1] https://netlify.com A Netlify oferece **gratuitamente** funcionalidades tão legais que eu fico até sem jeito de usar de graça. Curioso, não? O produto é tão bom que eu **quero** dar dinheiro para essa empresa... ## CDN e redirects / proxy Você também poderia usar os serviços da Cloudflare[2], mas eu tenho alguns problemas com essa empresa. [2] https://cloudflare.com Os caras já vazaram milhões de senhas no passado e também colaboraram ativamente com práticas de **censura online**. Além de, certa feita, arruinar completamente minha experiência de uso do Medium. Então eu torço o nariz para a Cloudflare e, sempre que possível, passo longe. E, afinal, quem precisa da Cloudflare quando se tem a Netlify? Meu uso da Netlify é o seguinte: **CDN e proxy**. Eu ganho uma excelente CDN porque faço com que tudo o que vai no `/static/*` seja servido **pela Netlify** e não pelo meu servidor que roda no EC2 da Amazon. Isso já me poupa muita CPU. E ganho um excelente proxy porque faço uso do arquivo `_redirects`[3] que joga tudo o que não é estático para o meu servidor EC2. [3] https://www.netlify.com/docs/redirects/ Exemplo extremamente simples de como usar o Netlify como proxy: `/* http://ᐸseu-elastic-ip-da-AWSᐳ/:splat 200` Você pode se perguntar: "ué, mas o /static não vai cair nessa regra?". E com razão. Mas a Netlify não aplica a regra se dentro do próprio site houver um caminho que "case" com o endereço. Se eu quisesse sobrescrever esse comportamento, teria que marcar a linha com um ponto de exclamação no final. Do jeito que está, a Netlify entrega meus arquivos estáticos e manda o que é dinâmico para o EC2. # FreeNom Eu estava já com a tela de pagamento do `registro.br` aberta quando aqueles **R$40,00** sendo pagos por um ano de domínio começaram a me parecer um tanto fora de questão. Primeiramente, porque o `.com.br` não me agradava tanto assim. Depois, porque ter um domínio "chique" ou "aparentemente 'oficial'" não acrescentava muito à plataforma, que é explicitamente um projeto pessoal. Então, na busca por "free domains", encontrei o "FreeNom"[5] e o "dot.tk"[6]. [5] https://www.freenom.com/pt/index.html [6] http://www.dot.tk/pt/index.html Achei, inicialmente, que "FreeNom" seria um daqueles sistemas alternativos de DNS e meio que "pulei" ele. O "dot.tk" me animou mais, porque era um *top-level* domain (ao contrário dos "free **subdomain**" que abundam por aí) e porque achei `.tk` razoavelmente *catchy* -- e até elegante. No fim das contas, descobri que o "dot.tk" era só um tipo de "hotsite" para o próprio FreeNom. E, veja que coisa curiosa: eu imagino o Deretium como uma espécie de **jornal**: é extremamente baseado em texto, tem tipagem que lembra publicações impressas, etc. E, enquanto escrevia este artigo, veio-me um *insight*: "*ei, TK não era um tipo de **marcador** com significado?*". Lembrei que eu li a respeito de algo assim havia algum tempo e, pesquisando a respeito, confirmei: "TK" é um acrônimo para "*to come*", usado no "mundo impresso" (anglófono, pelo menos) para indicar elementos que ainda serão adicionados ao texto. https://en.wikipedia.org/wiki/To_come_(publishing) Tudo a ver com o Deretium! Haha! É claro: ao invés de ser uma referência a esse tipo de "TK", `.tk` é o *top-level* de Tokelau[7]. [7] https://pt.wikipedia.org/wiki/Tokelau Você também pode pegar um domínio `.ml`, se quiser. Há umas quatro ou cinco opções. O domínio é gratuito por um ano, e depois disso você paga um preço "normal" -- nada fora do padrão de mercado, pelo que vi. # Resumo Bom, a ideia aqui não era ensinar a **criar** um sistema, mas dar algumas dicas de como colocar uma ideia no ar sem gastar *cash* (porque já basta o tempo e o suor). As ferramentas foram: * **AWS**: computação e banco de dados. Um ano grátis. * **Netlify**: proxy e CDN. Grátis. * **FreeNom**: domínio. Um ano grátis. --- *p.s.: eu passei muito tempo pronunciando "free tier"como /frí táier/ e só depois descobri que a pronúncia correta é /frí tíer/...*

Curti

52 visitantes curtiram esse Item.

Anterior: Diminuindo a dependência do navegador | Próximo: O Medium e a Estrela da Morte