- Opero varias apps SaaS en un gran servidor de OVHcloud
- Procesa alrededor de 6 millones de requests sin caché al día
- El backend es Django/Python + MySQL + Redis + WebSocket (Pub/Sub)
- Mi secreto es OpenResty (Dynamic web platform based on NGINX and LuaJIT)
- Uso scripts en Lua para manejar caché compleja de páginas, bloquear DDoS, procesar WebSockets y hacer offloading de requests de larga duración
- Un "Cloudflare para pobres" compuesto por 1500 líneas de código Lua
- Estas apps fueron creadas antes de Docker, así que simplemente corren como procesos (
systemd)
- Al principio usaba
uwsgi, pero gunicorn era mucho más eficiente, así que ya hice el cambio por completo
- Mi SPOF es el DNS. Tenía buena relación con DNSMadeEasy, así que no me preocupaban los baneos automáticos, pero ahora DigiCert los adquirió y eso es un problema
- Los pagos se procesan con Stripe y PayPal. Aunque no me gusta PayPal, lo agregué porque no sabes cuándo Stripe puede bloquearte sin aviso
- Las subidas de usuarios van a un servidor Python con
aiohttp, que envía los archivos a Wasabi y Backblaze y luego nginx los cachea. Así que el costo de transferencia en la nube es 0
- La capa de WebSocket es un poco inestable. Al principio manejaba todo con una librería asyncio de WebSocket en Python, y funcionaba hasta cierto punto, pero cuando después intenté manejarlo en multiproceso empezó a consumir una cantidad enorme de recursos
- Así que decidí usar el WebSocket de OpenResty, pero no quería escribir lógica compleja en Lua
- Lo cambié para que entregara los mensajes a procesos de Python usando Redis Pub/Sub
- Pero no voy a decir el nombre de mi servicio (¡no quiero más competencia!)
- Tengo tendencia a elegir opciones poco conocidas, pero creo que son productivas para un desarrollador solitario
- PostgreSQL + SQLite
- Lenguaje principal: Rust
- Frontend:
htmx + tailwindcss
- Hosting en Cloudflare + Vultr
nginx + nixos + circle ci
- A algunos no les gustará, pero elegir Wordpress fue lo mejor para mí
- El foro es
bbPress
- La comunidad donde los miembros publican es
buddyPress
- Para newsletters, en vez de un SaaS carísimo, uso el plugin barato de
mailster.co (con Critsend.com)
- La mayoría de las funciones que quería existen en plugins: FAQ con búsqueda, Captcha, anuncios, publicar en Discord, sistema de reportes de usuarios, etc.
- Opero https://rpgplayground.com/
- Opero https://text-generator.io , un servicio que compite con OpenAI
- Antes usaba Kubernetes en GCP, pero ahora lo opero desde mi casa con mis GPUs a través de túneles de Cloudflare. Así el costo de GPU es 10 veces menor.
- Analiza links o imágenes ingresadas usando Tesseract / Unified IO / OFA / Beautiful Soup, etc., y responde sobre imágenes/recibos
- El sitio en sí está hecho con AppEngine + Python + Stripe + Firebase UI, así que lo opero semanalmente con bajo costo
- Hospedado en Render
- Opero https://allaboutberlin.com
- Corre con Craft CMS en Docker de DigitalOcean
- Craft permite crear fácilmente tipos de contenido personalizados con campos personalizados, algo difícil de hacer en WordPress
- Pero como no es WordPress, no hay tantos plugins disponibles como se necesitan
- Uso
nginx para el caché y muchas otras cosas
- Si quieres ser más productivo, prueba PETAL
- Phoenix + Elixir + Tailwind + Alpine.js + LiveView
- Rails + Postgres + Redis + SideKiq
- Hospedado en Heroku, seguimiento de errores con Sentry, monitoreo de rendimiento con New Relic, correo con Send Grid
- Hace poco cambié Google Analytics por Plausible, y uso Ahoy (Rails Middleware) para análisis internos más profundos
- Para soporte/chat con clientes uso Intercom, pero planeo cambiar a Chatwoot
- Pienso salir de Heroku, pero Render, que es la alternativa más conocida, todavía no tiene una opción de HA Postgres con failover automático
- Si hago push a la rama master de GitHub, se despliega automáticamente a producción
- Solo se puede hacer merge a master mediante PR, y únicamente si Linter (
Rubocop) + Tests (Rspec en CircleCI) + 100% de cobertura (codecov.io) están en verde
- La UI es Bootstrap, y estoy renderizando del lado del servidor con JavaScript
- Para las UIs que necesitan más interacción, estoy evaluando Hotwire/Turbo vs. Alpine vs. Stimulus vs. React
- Desarrollando una plataforma agtech
- Backend: Rust, Rocket,
sqlx, Postgres, un poco de Ansible
- Frontend: Rescript + React. Estoy usando bastante Rust/WASM, pero eso fue un error. Estoy intentando revertirlo
8 comentarios
Guau, ¿cómo haces para gestionar todo esto tú solo? uf
La verdad me da mucha curiosidad qué significa exactamente eso de descargar las solicitudes web que tardan mucho en procesarse; no se comenta mucho al respecto ^^;
Dammm
Vaya, de verdad usan una gran variedad,, es la primera vez que veo una combinación como PETAL, buenísimo
👍
De verdad es un artículo muy útil, ¡muchas gracias!
La pila de arquitectura de una startup tecnológica de una sola persona
La pila tecnológica de Healthchecks.io, un SaaS de una sola persona
Recomendación de herramientas para desarrolladores de SaaS de una sola persona
Operar una startup por 6 dólares al año
Operar una startup de software con el mínimo esfuerzo
Stimulus + Turbo Frames - Hotwire : HTML Over The Wire
También consulta publicaciones antiguas que se subieron a 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