- Opero vários apps SaaS em um único servidor grande da OVHcloud
- Processa cerca de 6 milhões de requisições sem cache por dia
- O backend é Django/Python + MySQL + Redis + WebSocket (Pub/Sub)
- Meu segredo é o OpenResty (Dynamic web platform based on NGINX and LuaJIT)
- Uso scripts em Lua para lidar com cache complexo de páginas, bloquear DDoS, processar WebSocket e fazer offloading de requisições de longa duração
- Um "Cloudflare do pobre" feito com 1500 linhas de código Lua
- Esses apps foram criados antes do Docker, então simplesmente rodam como processos (
systemd)
- No início eu usava
uwsgi, mas gunicorn é muito mais eficiente, então já migrei tudo
- Meu SPOF é o DNS. Eu tinha uma boa relação com a DNSMadeEasy e não me preocupava com banimentos automáticos, mas agora a DigiCert os comprou, então isso virou um problema
- Os pagamentos são processados com Stripe e PayPal. Adicionei o PayPal mesmo não gostando dele, porque não dá para saber quando o Stripe pode bloquear sem aviso
- Os uploads dos usuários vão para Wasabi e Backblaze por meio de um servidor Python com
aiohttp, e depois ficam em cache no nginx. Então meu custo de tráfego em nuvem é zero
- A camada de WebSocket é meio instável. No começo eu fazia tudo com uma biblioteca Python de WebSocket baseada em
asyncio, e até funcionava em certo ponto, mas quando tentei processar isso em múltiplos processos, o consumo de recursos disparou
- Então decidi usar o WebSocket do OpenResty, mas não queria escrever lógica complexa em Lua
- Mudei para usar Redis Pub/Sub para encaminhar mensagens ao processo Python
- Mas não vou dizer o nome do meu serviço (não quero mais concorrentes!)
- Tenho tendência a escolher opções menos conhecidas, e acho isso produtivo para desenvolvedores solo
- PostgreSQL + SQLite
- Linguagem principal: Rust
- Front-end:
htmx + tailwindcss
- Hospedagem: CloudFlare + Vultr
nginx + nixos + circle ci
- Algumas pessoas vão odiar isso, mas escolher WordPress foi a melhor decisão para mim
- O fórum é
bbPress
- A comunidade em que os membros publicam posts é
buddyPress
- Para newsletter, em vez de um SaaS caríssimo, uso o plugin barato
mailster.co (com Critsend.com)
- A maior parte dos recursos que eu queria já existe em plugins: FAQ pesquisável, Captcha, anúncios, postar no Discord, sistema de denúncias de usuários etc.
- Opero https://rpgplayground.com/
- Opero o https://text-generator.io, um serviço que compete com a OpenAI
- Antes eu usava Kubernetes no GCP, mas agora opero a partir de casa com minhas GPUs, por meio de túneis do Cloudflare. Assim, o custo das GPUs fica 10 vezes menor.
- Analisa links e imagens usando Tesseract / Unified IO / OFA / Beautiful Soup etc., e responde sobre imagens/recibos
- O site em si roda no AppEngine com Python + Stripe + Firebase UI, então o custo semanal é baixo
- Hospedado na Render
- Opero https://allaboutberlin.com
- Roda com Craft CMS em Docker na DigitalOcean
- O Craft facilita criar tipos de post personalizados com campos personalizados, algo difícil de fazer no WordPress
- Mas, como não é WordPress, não há muitos plugins disponíveis de que eu precise
- O
nginx cuida de cache e de várias outras coisas
- Se quiser ser produtivo, experimente PETAL
- Phoenix + Elixir + Tailwind + Alpine.js + LiveView
- Rails + Postgres + Redis + SideKiq
- Hospedado na Heroku, rastreamento de erros com Sentry, monitoramento de performance com New Relic, e e-mail com Send Grid
- Recentemente troquei o Google Analytics por Plausible e estou fazendo análises internas mais profundas com Ahoy (Rails Middleware)
- Uso Intercom para suporte/chat com clientes, mas pretendo trocar por Chatwoot
- Pretendo sair da Heroku, mas a principal alternativa, a Render, ainda não tem uma opção de HA Postgres com failover automático
- Quando faço push para a branch master no GitHub, o deploy em produção acontece automaticamente
- Só é possível fazer merge na branch master via PR, e apenas se Linter (Rubocop) + Tests (Rspec no CircleCI) + cobertura de 100% (
codecov.io) estiverem verdes
- A UI é Bootstrap, e faço renderização no lado do servidor com JavaScript
- Para UIs que exigem mais interação, estou avaliando Hotwire/Turbo vs. Alpine vs. Stimulus vs. React
- Desenvolvendo uma plataforma agtech
- Backend: Rust, Rocket,
sqlx, Postgres, um pouco de Ansible
- Front-end: Rescript + React. Tenho usado bastante Rust/WASM, mas isso foi um erro. Estou tentando reverter
8 comentários
Uau, como vocês conseguem gerenciar tudo isso sozinhos? Nossa.
Fico bem curioso sobre o que significa fazer offload de requisições web que demoram muito para serem processadas, porque quase não vejo explicações sobre isso ^^;
Dammm
Uau, vocês usam uma variedade enorme mesmo,, é a primeira vez que vejo uma combinação como PETAL, muito bom
👍
Artigo realmente muito útil, valeu mesmo!
A stack de arquitetura de uma startup técnica de uma pessoa só
A stack tecnológica do Healthchecks.io, um SaaS de uma pessoa só
Recomendação de ferramentas para desenvolvedores de SaaS solo
Operando uma startup por US$ 6 por ano
Operando uma startup de software com o mínimo de esforço
Stimulus + Turbo Frames - Hotwire : HTML Over The Wire
Veja também posts antigos que apareceram no HN
2021 https://news.ycombinator.com/item?id=28299053
2020 https://news.ycombinator.com/item?id=25465582
2019 https://news.ycombinator.com/item?id=21024041