Probablemente no necesites un Backend
Habitualmente cuando hablo con desarrolladores web Frontend y desarrolladores de aplicaciones moviles que estan empezando o no llevan mucho tiempo desarrollando, muchos creen que siempre es necesario crear aplicaciones Backend completamente desde cero para sus aplicaciones cliente, y esto no creo que este bien, y no me mal interpreten para aprender a programar creo que es una muy buena idea desarrollar desde cero, pero si tienes que llevar un negocio o una idea a la realidad en un plazo real, y quieres vivir de ello, debes considerar que quizas esta no sea tu mejor opcion, o si te gusta mucho el desarrollo de apps moviles y el desarrollo frontend pero no sabes nada del backend, no tienes porque estudiar el backend a profundidad, cuando puedes especializarte mas en el desarrollo de aplicaciones cliente.
Piensalo asi, si tienes la tarea de desarrollar una aplicacion movil, la aplicacion backend y administrar tu mismo tu base de datos, subida de archivos, autenticacion de usuarios y la seguridad de tu aplicacion, ademas del despliegue y infraestructura (servidores) en donde se ejecutará tu aplicaciones, temas que son muy comunes en Backend, estoy seguro que aprenderas un monton, pero que hay del negocio principal, es decir mejorar la experiencia del usuario, resolver problemas de la interfaz, hacerla accesible, que tenga un buen rendimiento y sobretodo crear el servicio o producto que vas a ofrecer a las personas o empresas
el llevar un negocio y el desarrollo de la aplicacion del negocio son dos tareas que conllevan su propio tiempo y no es nada facil llevar ambas.
Entonces el tema principal es este, no necesitas crear un backend desde cero siempre, hay veces en la que es mucho mejor opcion tercerizar o usar aplicaciones o servicios existentes y que a cambio de un pago mensual o anual puedas tener acceso a funcionalidades ya creadas para que te enfoques en solucionar un problema directamente y no pasar mucho tiempo creando herramientas de software desde cero.
De hecho esta necesidad es uno de los motivos del exito de los servicios de la nube, notandose mucho cuando tenemos caracteristicas complicadas de desarrollar, como hacer pagos en linea, por ejemplo no desarrollamos un sistema de procesamiento desde cero, usamos plataformas que ya lo tienen hecho como Stripe, Paypal, Paddle y otros, o no desarrollamos un CRM desde cero sino software como Hubspot, por ejemplo, o no desarrollamos un sistema de mensajeria de textos desde cero usamos Twilio, y asi.
Y Esto incluso ha hecho que el ecosistema de servicios de la nube sea tan amplio que ya es muy dificil darle atencion a todos, porque actualmente hay muchisimas soluciones que practicamente ofrecen lo mismo, por ejemplo
- ¿Quieres subir archivos y que se sirvan rapidos a tus usuarios y sea escalables? usa AWS S3, Google Cloud Storage, Microsoft Blob Storage, Digitalocean Spaces o cualquier otro servicio, todos estos son llamado Cloud Object Storage.
- ¿Necesitas autenticacion?, tienes servicios de la nube que permiten a tus usuarios hacer login como Google, Microsoft, Twitter, Facebook, numero de telefono, correo, y mucho mas. Servicios como:
- AWS Cognito
- Azure Active Directory
- Google Cloud Identity
- Okta
- Auth0
- Firebase Authentication
- Ping Identity
- ¿Necesitas bases de datos en la nube?, bueno no tienes que desplegarlos desde cero, ya hay servicios que te permiten tener bases de datos SQL y NoSQL al instante solo con botones, servicios como:
- Amazon RDS
- Google Cloud SQL
- Microsoft Azure SQL Database
- DigitalOcean Managed Databases
- Heroku Postgres
- MongoDB Atlas
- IBM Cloud Databases
- ¿Hay una biblioteca en otro lenguaje que es muy rapida y muy facil?, no tienes que crear un backend desde cero en ese lenguaje, tambien puedes usar funciones serverless y podrias usar esa logica y que solo te cobren cuando se usa esa funcionalidad.
Y de hecho tambien hay servicios que ya te ofrecen todo esto en conjunto que son llamados los Backend as a Service, que en la practica significa que ya te dan todo el backend y el despliegue listo simplemente para que crees tu logica, tu diseño de base de datos y este creara automaticamente
En este sitio por ejemplo ya hemos visto ejemplos de Firebase, Supabase, AWS Amplify, GraphBase, Pocketbase, y muchos otros que ya ofrecen esto, entocens las soluciones estan alli.
Incluso no solo estan los Backend as a Service tambien estan los Headless CMS, que son incluso un paso mas simple y ya no solo te dan el backend sino tambien un panel de control para tu aplicacion lo que te envita tener que desarrollarla tu mismo, por ejemplo proyectos como Sanity, Strapi, Conteful, Prismic, GraphCMS.
Si quieres saber mas de esto te dejo los videos en la descripcion, pero el resumen es basicamente que todos estas soluciones ya te dan el backend creado, esta hara que te especialices en el desarrollo de aplicaciones frontend, y puedas mejorar o llevar a cabo la idea principal del negocio.
Aunque por supuesto te hablo de una soluciones bastante genericas y no de una solucion a todos tus problemas.
Lo malo de los BaaS y Headless CMS
Los BaaS y los Headless CMS son practicos pero tambien tienen sus propias consideracioens para usarlos, lo primero es el costo, muchos de estos te ofrecen un pago aproximado al mes, como de 15$, 20$ y a mas tranfico necesite tu app mas pagas, ahora si lo comparamos con el pagarle a un desarrollador freelance para que cree el backend, igual es mucho mas barato.
Por supuesto la idea de llevar un neogocio saber presupuestar tambien, asi que cuando estes llevando un proyecto, tienes que tener en un punto una idea o plan de como mantenerlo, los servidores cuestan, si se tiene una aplicacion existosa, el trafico aumenta y los planes gratuitos se acaban, asi que tienes que considerar monetizarlos, y lo genial es que muchas forma de monitizar con subscripciones, ventas de productos, merchandising, o anuncios, todos estos te pueden dar la tranquilidad de pagar estos servicios sin ningun problema y simplemente enfocarte en hacer tu app util.
O si quieres ahorra mucho mas tambien estan las soluciones open Source en Backend as a service esta Supbase, y pocketbase, y en headless CMS Strapi, Sanity pueden ser descargados e instalados en tu propio servidor, lo que te reducira un poco el costo a cambio que tu mismo lo despliegues y lo administres constantemente.
Y lo otro es que muchos de estos CMS tienen funcionalidades que son muy genericas, es decir si vas a crear una tienda virtual, un blog, un sitio de noticias y aplicaciones que basicamente tienen datos simples y relacionados, puedes ir por estas soluciones sin problemas, pero si quieres ejecutar un funcionalidad que procese imagenes, audio, video para procesar tu propia logica, estas no son la mejores opciones, y alli si necesitarias escribir tu propio codigo o crear una funcion serverless.
¿Cuando desarrollar desde cero?
Ahora, por supuesto tambien hay ocasiones cuando se necesita crear desde cero, entonces ¿Cuales serian?:
- La primera y la mas comun, es si quieres aprender lo mas que puedas, esta es la mejor opcio
- Tienes codigo complejo y funcionalidades que no sean visto, ve por codigo desde cero
- no quieres depender de ningun plataforma y sus reglas, desarrolla desde cero, esto solo hara que dependas de la regla del proveedor de la nube
- Tienes tiempo para desarrollar y no te molesta aprender muchos temas en el proceso, entonces ve por la solucion desde cero, aprenderas mucho y tendras un control muy amplio
- Son varios desarrolladores en un mismo proyecto
Ahora muchos desarrolladores principiantes en internet escuchan mucho de terminos como rendimiento, escalabilidad, o mantenmiento que si bien es importante considerarlos, este son solo unos puntos de un conjunto mucho mas grande de cosas a tomar en cuenta cuando se lleva un proyecto.
Asi que si estas apunto de crear una aplicacion que resuelve un problema, supongamos para aprender idiomas, vender productos online u ofrecer un servicio considera que el proyecto no solo es desarrollo sino tambien la solucion que estes ofreciendo a traves de tu desarrollo.
a veces me encuentro con desarrolladores de aplicaciones moviles que prefieren enfocarse en crear la experience de uusario en la app, o lo mismo en la web, hay personas que prefieren desarrollar la interfaz web, y no tanto la logica de como subir el archivo, hacr que este este disponible en una cdn, y adminsitrar ellos mismo esta logica porque es algo comun. asi que van por esto servicios, incluso las apps de la AppStore y Google Play estan repletos de apps que usan este enfoque, interfaces creadas por usuarios y el backend es o un headless cms o un backend as a service.
Conclusion
En fin como puedes ver hay muchas soluciones actuales para poder llevar multiples proyectos a cabo, uso lo que tengas a tu disposicion, y no temas en usar cualquier servicio, porque al final, mas del 90% de estos, permiten obtener los datos que almacenastes en estos y poder migrarlos a otro lugar, de hecho las migraciones de tecnologias es algo bastante comun en la industria, plataformas como Discord han pasado de usar primero Mongodb, a luego casandra, a luego, o proyectos como Turborepo, han pasado de usar go a Rust, o
Asi que siempre tienes la posiblidad de migrarlos, claro lleva trabajo y prefeririamos evitarlo, pero cuando se tiene una idea de proyecto y muy conocimiento y no se conocen todas las tecnologias mas eficientes, muchas veces es mejor llevarla a cabo rapidamente, porque a los usuarios no les interesa con que tecnologia esat siendo usada sino que resuelva que tienen de momento.
Asi que en tu dia dia desarrolla un equilibrio entre codigo, la idea de negocio principal, y la administracion de tu tiempo. De esa forma podras ir seleccionando servicios que te facilente el trabajo, y no tanto la idea de hacerlo todo desde cero.