Aplicando a filosofia do "The One Person"-qualquer-coisa
O DHH, criador do Rails, escreveu este artigo - "The One Person Framework", à época do lançamento do Rails 7.
Confesso que não o conhecia até muito recentemente, quando assisti a este podcast do Lex Fridman.
Sim, ele (o DHH) é cheio de opiniões e isso, aparentemente, reflete em muitas coisas que ele fez. Por exemplo, na ideia por trás do Rails e do Omarchy (distro-like do Arch Linux) - o tal do Omakase:
The word Omakase means "I'll leave it up to you" or "chef's choice"
in Japanese.
Significando que: "eu abro mão de escolher uma série de detalhes, para utilizar algo super opinado" - eu, por exemplo, nunca tinha "tocado" em Ruby até 2 meses atrás e, utilizando Rails já consegui colocar "meia dúzia" de ferramentas internas pra rolar na minha própria empresa.
Motivação e Rails 8
Se a versão 7 já trazia essa ideia de que uma única pessoa poderia fazer "tudo sozinha", o Rails 8 veio com a filosofia do "End-to-End Freedom". Com um ferramental que permite:
- Subir WebApps interativos e reativos "nativamente" através do "Hotwire".
- SQLite "super otimizado" para produção - não somente como banco de dados, mas como cache, websocket, e fila (tal do Solid Trifecta).
- Deploy/CI com apenas um arquivo de configuração, com Kamal.
Cara, pra mim que tenho uma empresa mega enxuta, e que não quero "tirar a mão da massa" - chamou muito atenção!
Em algum momento do futuro eu devo trazer um exemplo de ferramenta que coloquei no ar, talvez num formato de tutorial...
Mas hoje vamos falar de uma infraestrutura que segue o mesmo conceito: "The One Person Infrastructure".
Infra minimalista, segura e barata
VPS (Virtual Private Server)
As aplicações em Rails 8 (para ir com "chef's choice") precisam de um "box", uma VPS, um servidor-zinho. E como estão os preços por aí?
Nessa pesquisa por VPS, descobri a Hetzner que é simplesmente imbatível em termos de preço. Especialmente se for possível utilizar os datacenters europeus - que sim, vão ter mais latência para usuários no Brasil. Mas para ferramentas internas ou MVPs B2B onde o usuário não é sensível a 150ms de diferença, a economia de 80% no custo fala mais alto.
O tier "Cost Optimized" da Hetzner tem um preço de entrada de aproximadamente 4 USD (dolls), por 2 vCPU, 4 GB RAM, 40 GB SSD e 20 fuc***-TB de tráfego.
Para colocar em perspectiva, para specs similares na Digital Ocean, Linode, Vultr, o valor chega a 24 USD.
Storage e Segurança
Outros dois pilares para "sustentar" meus apps, são buckets para armazenar "arquivos" em geral, e para backup do SQLite - sim estou usando SQLite em produção. E, além dos buckets, uma camada de segurança, um "frontdoor" para os apps.
Engraçado que quando estou escrevendo este artigo, está rolando mais uma indisponibilidade na Cloudflare... Mas cara, eu acho difícil algo competir com eles atualmente, o freetier/freemium deles é muito generoso.
Mas sim, estou usando dois "produtos" da Cloudflare na minha infra:
- O Zero Trust Tunnel: que basicamente elimina qualquer necessidade de portas abertas do lado do servidor.
- O R2 Storage: para gerenciar os meus buckets.
IaCarus: The One Person Infrastructure
E aí, pra pilotar essa infra de uma pessoa só, eu criei um toolkit, que me permite "gerenciar" as minhas VPS e os meus buckets.
Foi bem importante na fase que estava testando, criando e destruindo as VPS e buckets como se não houvesse amanhã... fazer via UI teria sido um pesadelo.
O IaCarus é um conjunto de scripts em bash, que permite "gerenciar" (criar, listar, destruir) VPS na Hetzner e R2 buckets na Cloudflare. "Bem massinha" - como diria o mestre Deschamps.
Além disso, existe um "smoke test", especialmente para testar credenciais e configurações em cada um dos "bundles".
Poderia ter usado Terraform? Poderia. Mas para o conceito do "The One Person"-qualquer-coisa um script bash resolve o problema sem adicionar uma camada de complexidade cognitiva. KISS - Keep It Simple, Stupid...
Vou deixar aqui o link para o repo - confere lá!
E aí já tinha ouvido falar da Hetzner? E do Zero Trust Tunnel? Será que essa infra minimalista aguentaria pancada de uma aplicação "pública"?
Abraço, Filipus!