Cloudflare me tiene en las nubes: el mejor free tier que te estás perdiendo

Un pequeño resumen de los servicios gratuitos de Cloudflare que puede que no conozcas.

Cloudflare me tiene en las nubes: el mejor free tier que te estás perdiendo
I love edging computing

TL;DR
Exploramos alguno de los servicios de Cloudflare mediante la creación de una app falsa que usara Pages como frontend, D1 como DB, KV para almacenar caché de tokens y R2 para almacenar archivos.

¡Hola! Esta vez no han pasado como 6 meses o así desde el último post (no os acostumbréis). En este artículo quería hablaros de Cloudflare, un proveedor que vengo usando desde hace un tiempo. Al principio, solo para las cosas básicas, como por ejemplo sus NS para mis dominios, su CDN para alguna de mis webs, los túneles para acceder a varios de mis servicios y desde hace poco el servicio de redirección de mails. Pero recientemente he ido descubriendo otros de sus muchos servicios de "Serverless Computing", los cuales tienen free tiers muy amplios o son, de hecho, la opción más barata. Para contaros esto en detalle vamos a crear una aplicación falsa llamada "Chat with Docs" una app para resumir documentos con IA que se vincula a tu cuenta de Google Drive.

Chat with Docs

Tienes una aplicación base en tu framework favorito subido a un repositorio de GitHub y también tienes un pedazo de dominio. Pero claro, ¿dónde hosteas la web? Podrías, por ejemplo, hostearlo en una VPS, pero esto te obligaría a tener que configurar un reverse proxy como NGINX, manejar los certificados SSL e idearte una manera en la que cada vez que actualices la app en tu repo, esta actualización se suba a producción. A esto se le llama CICD. Son un montón de cosas, ¿no? Ojalá hubiera un servicio que te permitiera desentenderte de todo esto y dedicarte solo a programar.

Cloudflare Pages and Workers.

Cloudflare Pages es un servicio que te permite desplegar proyectos web full-stack que se integra automáticamente con el repositorio de tu proyecto, para que cada vez que subas cambios a tu rama principal, estos se desplieguen en tu web. No solo eso, si creas una rama para trabajar en una nueva feature, te creará un dominio para previsualizar y probar los cambios que has hecho en un entorno idéntico a producción. Si mueves los NS de tu dominio a Cloudflare puedes vincular tu dominio superguay a tu proyecto de Pages, y de esa forma tener tu dominio online con un certificado SSL del que no tienes que preocuparte. Y si necesitas correr funciones serverless para tu servicio, para eso están los Workers, que se integran perfectamente con el resto de servicios de Cloudflare. Todavía no has pagado ni un céntimo.

Esto está muy bien, pero necesito una base de datos donde almacenar datos de mi proyecto. Podrías montarte un PostgreSQL en una VPS, o usar alguno de los servicios gestionados para bases de datos y ocuparte de vincularlo con tu proyecto, pero eso sería algo lento, debido al coldstart y la latencia de las peticiones a la base de datos.

Cloudflare D1

D1 es el servicio de bases de datos de Cloudflare basado en SQLite. Se integra de forma muy sencilla con tu proyecto en Pages, permitiéndote vincular la base de datos a tu ORM favorito e interactuar con ella con una latencia ridícula y que escala cuando es necesario. Todavía seguimos sin gastar ni un céntimo.

Vale, ahora necesitas un sitio donde guardar archivos, por ejemplo, los resúmenes que hace tu servicio de los documentos para que el usuario se los pueda descargar. Lo normal aquí sería irte a Amazon S3, pero...

Cloudflare R2

R2 es el típico servicio de object storage que es, de hecho, compatible con librerías para S3. Si bien su free tier de 10 GB al mes no es la gran cosa, en cuanto al número de peticiones que puedes hacer al bucket es de los más generosos. Y cuando te pases de los 10 GB, el precio es incluso más barato que S3.

Vale, ahora necesito una forma de cachear los tokens de autentificación que le solicito a la API de Google Drive, para no hacer demasiadas solicitudes, y necesito que dicho caché expire cuando estos tokens lo hagan. Normalmente, pensarías en un Redis para resolver este problema, pero igual que las veces anteriores (y sobre todo teniendo en cuenta los movimientos bastante feos que Redis se ha marcado, y su horrible rebranding)...

De base de datos respetable a cadena de comida rápida, de locos

Cloudflare KV

KV, como su nombre te hace intuir, es un servicio de almacenamiento de datos Key-Value. Como siempre, tiene un free tier de la hostia, se integra fácil con tu proyecto de Pages, soporta TTL y encima seguimos sin gastarnos un duro.

Nuestra infra final

Cloudflare permite a pequeños desarrolladores desplegar proyectos de forma gratuita y cómoda

Como los que he citado hay cientos de servicios que Cloudflare ofrece con un free tier o ridículamente baratos, los puedes ver todos en su documentación.

Todos estos servicios permiten a usuarios como yo, y probablemente tú, desplegar servicios de forma gratuita en la nube con gran parte del trabajo hecho, ahorrándonos un dinero, permitiéndonos innovar, compartir nuestras ideas y engordar nuestro porfolio, que siempre viene bien.

Un ejemplo de web que yo misma he desplegado en Cloudflare, aunque solo hago uso de Pages, es Lilly Valley, una pequeña web para publicar las historias cortas que me ha dado por escribir recientemente.

Lily Valley
Una simple pagina web para leer hisotiras cortas

Conclusiones

He escrito este blog con la principal intención de que le saquéis provecho a estos servicios que igual no conocíais para vuestro próximo proyecto, el cual estaría encantada de conocer.

Sé que hay varios otros servicios como Vercel que ofrecen cosas similares en su free tier, pero mi experiencia ha sido mucho mejor y sobre todo más integrada con Cloudflare (Y tiene modo oscuro, no como GCP o AWS).

En fin, como siempre, espero que hayáis disfrutado del post, que hayáis aprendido algo y que os esté yendo todo bien.

Nos vemos en la red 👋.