En Abalit desarrollamos los backend de nuestros proyectos en Laravel, por su robustez y fiabilidad.
Os explicaré los pros y contras de desarrollar APIs de backend en Laravel
Nuestra empresa desarrolladora de apps nutre su contenido gracias a la parte servidor desarrollada con Laravel
by Marc C, backend specialist, 26/05/2020
Laravel es un framework open-source de PHP desarrollado por el MIT en 2011. Su principal objetivo es simplificar y estilizar el código y que sea más sencillo de leer, interpretar y programar, virtud de la que carecía la programación del lenguaje nativo PHP.El framework norteamericano consigue su objetivo gracias a componentes y dependencias, en sus inicios mayoritariamente externas, pero con el transcurso de los años ha conseguido crear dependencias propias mejorando las de otros frameworks. Muchas de estas dependencias son del pionero francés Symfony, como Doctrine para la gestión de las bases de datos, mejorado y adaptado por Laravel con Eloquent, o http-foundation para las conexiones HTTP.Así como lo era y es para PHP, el principal target de Laravel son las páginas y aplicaciones web. Laravel permite romper, o no, si no se desea, con la percepción de las webs monolíticas antiguas donde no se distinguían las figuras de Frontend y Backend, y era PHP el que generaba código HTML para visualizar directamente en el navegador.Con la llegada del protocolo REST y de la popularización de las APIs, Laravel nos permite adaptar las dos figuras de la programación moderna mencionadas en el párrafo anterior en un stack de uso en nuestra empresa de desarrollo de apps: un Frontend web (HTML + JS) que consuma un Backend de Laravel o cualquier otro y un Backend que alimente a otros Frontends, por ejemplo una APP de un smartphone, cómo hacemos en Abalit Technologies.
Atentos: Es básico realizar una prueba de concepto (PoC) al inicio del proyecto para confirmar que toda la operativa del mismo sea viable.
¿Qué es el backend de una app móvil?
Para que una aplicación móvil pueda intercambiar datos entre sus usuarios, necesitaremos disponer de un Backend. En esencia, es la lógica y la programación que se encuentran en el servidor de una app. Se encarga de la gestión de los datos en un aplicación: coloquialmente, es “lo que hay detrás de una APP”. Es el responsable de:
- Las conexiones y la gestión de la base de datos que hay detrás de una app móvil (ej: un alta de un usuario, o un nuevo producto en una app).
- Alimentar las peticiones de la aplicación móvil (frontend) con datos reales a través de los end-points, que son las rutas o URLs con las que el backend devuelve la información a la app. En un entorno web se devolvería una página HTML, pero en una API REST se devuelve un objeto JSON con la información solicitada, la cual es interpretada por la app. Luego es, la aplicación Flutter en el frontend, la encargada de estilizar y mostrar esta información en el móvil.
- La seguridad de la app, restringiendo el acceso de las peticiones a datos sensibles de los usuarios. De hecho, es muy popular el uso de tokens de autenticación generados por el propio backend. En Laravel, usamos la dependencia Passport, aunque también es común el JWT, la cual se integra en la app móvil desarrollada con Google Flutter.
- Optimización de recursos y de la programación, para reducir al máximo los tiempos de respuesta y mejorar la experiencia de usuario. Algunas técnicas son la paginación o las colas de trabajo (enviar e-mails asíncronamente), entre muchos otros.
Puntos fuertes de hacer el backend de una app móvil con Laravel
Node.js, Django, y Symfony son unos de los frameworks más famosos para APIs y backends pero, en mi opinión, Laravel les supera en los siguientes puntos:
- Documentación. Si es verdad que para un programador junior o principiante la palabra framework asusta, en Laravel no. Su documentación oficial es de las más completas, de las más simples y de las mejor explicadas (https://laravel.com).
- Eloquent ORM, adiós queries. Cómo ha sido nombrado anteriormente, este súper-paquete de Laravel nos permite sustituir las consultas SQL y de MongoDB por una simple Programación Orientada a Objetos. De este modo, Eloquent se encarga de convertir nuestros objectos a queries para cualquiera de las bases de datos que acepta.
- Routing o rutas. Si bien en Node.js, por convención, las rutas se definen por entidades o modelos en ficheros separados, en Laravel los endpoints de nuestras apps móviles se agrupan por funcionalidades de la aplicación (web.php si es en un entorno web o api.php si es para una API para una app Flutter), para poder organizar mejor las rutas de nuestra aplicación móvil. Además, nos da la posibilidad de agrupar las rutas, permitiéndonos así asignarles prefijos, sufijos y middlewares.
- Middlewares más sencillos. Son controladores que se ejecutan antes o después de una petición para evitar repetirlos en nuestras funciones sistemáticamente. Laravel nos da ejemplos y una estructura para aprender como usarlos. Los más comunes son las autenticaciones de tokens de sesión, los permisos de un usuario, etc.
- La consola artisan. Laravel incorpora el cli artisan, que nos permite en comandos muy lógicos y sencillos realizar acciones que otros frameworks no nos permiten, como crear ficheros (modelos, controladores, providers …), limpiar la cache, etc. En definitiva, una maravilla, no tenemos que tenerle miedo a la terminal, es nuestra amiga (https://laravel.com/docs/7.x/artisan).
- “Comunidad = estabilidad”. La comunidad de Laravel es inmensa y cada vez crece más. Eso significa mayor detección y corrección de bugs, paquetes adaptados al framework y en definitiva, una estabilidad que todos los programadores buscamos, tanto los que ya usamos el framework como los que no saben con cual decidirse.
- No es sólo para hacer CRUD. Laravel tiene la fama de que solo sirve para páginas web como blogs y similares. Es bien cierto que no es así: Laravel puede usarse para la programación de alto rendimiento, para SOLID, DDD, CQRS y Arquitectura Hexagonal entre otros, pues su escalabilidad nos permite todo esto y más.
- Bonus Track de paquetes de Laravel propios: Blade, su gestor de webs “monolíticas” y no monolíticas moderno y limpio. Lumen, un micro-framework más ligero especificado para APIs sencillas o específicas y micro-servicios. Cashier, gestor de pagos. Y Tinker, consola de comandos para actuar con nuestras clases.
Complicaciones al desarrollar una API para nuestra app móvil (con soluciones)
Al crear una API para nuestra aplicación, Laravel no es un camino de flores para todo el mundo, también tiene handicaps y dificultades para los principiantes:
- Para programadores que vengan de la programación en un lenguaje puro, como PHP, la curva de aprendizaje puede llegar a ser muy inclinada debido a la cantidad de conceptos nuevos que se deben aprender, como el MVC, los Middlewares y todo lo que he comentado anteriormente en este artículo.
- El echo de que nos “obliga a programar bien”. Laravel nos proporciona una nueva manera de gestionar nuestro código y nuevas funciones de paquetes propios para sustituir las de PHP y su sintaxis, más orientado a objectos, en general. Al Principio, puede ser un problema a la hora de romper con muchas manías que se tenían al programar en PHP puro, un ejemplo es la gestión de arrays, donde Laravel fomenta el uso de sus collections.
- Optimización. Si no sabemos seleccionar bien las dependencias que importamos o si no distinguimos si es necesario importar una o crearla nosotros, puede resultar en que nuestra aplicación vaya demasiado lenta.
Conclusión: ¿Merece la pena usarlo para desarrollar APIs para apps Flutter?
La respuesta es clara: sí, y mucho, puesto que nuestra aplicación móvil dispondrá de un backend muy robusto y escalable. De hecho, un tiempo atrás, en una sesión retrospectiva que realizamos con los ojos de una empresa dispuesta mejorar su producto, nos encontramos con Laravel después de un exhaustivo proceso de selección de tecnologías. Laravel nos ha proporcionado un techo más alto y un ascensor para llegar a él, mientras que con PHP habíamos llegado al final de una escalera más bien corta.Cualquier contratiempo o limitación que hayamos encontrado con Laravel al desarrollar el backend de nuestra app móvil, ha sido resuelto gracias a su comunidad, nos ha ayudado desinteresada y eficazmente. Su curva de aprendizaje nos pareció imposible de recorrer, como también te podría ocurrir a tí. Pero a medida que avanzas, te ayuda a ser mejor programador de APIs de apps móviles, más ordenado, más limpio y con una visión más global de un proyecto. Es un framework super-potente al que se puede sacar mucho jugo.
En Abalit hemos dado un salto de calidad exponencial exprimiendo Laravel, y conectándolo con nuestras apps móviles. Probamos otros frameworks y por su dificultad innecesaria y/o por su poca facilidad no están a su altura.
Y para concluir, reiteramos que podemos implementar Laravel en cualquier proyecto tanto para empresas cómo emprendedores, ya sean APPs sencillas (MVP), APPs más complejas y con alto rendimiento, software empresarial, aplicaciones web, y un largo etcétera.¡Pon Laravel en tu currículum y en tu empresa!.Gracias por leernos. ¡Siéntete libre de pedirnos presupuesto para desarrollar la API de tu app móvil en Laravel!.