La foto no tiene mucho que ver con un framework, pero he buscado "Symfony" en Unsplash y era la única que había 😅... en fin, a lo que íbamos..
Hoy vamos a hablar de un tema importante en el mundo de la programación y el desarrollo web: la importancia de utilizar un framework, específicamente Symfony en nuestro caso, pero hay miles para cada lenguaje, y como esto repercute de manera positiva en nuestros proyectos y, por lo tanto en nuestro caso, en nuestros clientes.
Resumen rápido
Un framework es un esqueleto que nos da una estructura base para arrancar nuestros proyectos con unos módulos o bloques base. Además, nos da estructura para desarrollar nuestro código y que nuestra aplicación pueda crecer bien. Esta parte de la estructura, esta guía sobre cómo desarrollar nuestros proyectos es, junto con los componentes que ya existan, lo que más va a diferenciar unos frameworks de otros. Aunque seguramente haremos una comparativa en otro momento, pero clásicamente hay dos tipos de frameworks diferentes:
- Ligeros, muy orientados a que el esqueleto sea lo mínimo posible sobre lo que construir, suelen ser rápidos pero más orientado a pequeñas webs y no a aplicaciones muy complejas. Ejemplos de estos frameworks en el caso de PHP serían Codeigniter y Slim
- Empresariales, más orientados a la robustez, a una estructura de componentes potente que nos permita hacer aplicaciones complejas y escalables. Ejemplos en PHP serían Symfony y Laravel.
Esto no quiere decir que no puedas desarrollar una aplicación web compleja con Codeigniter o sencilla con Symfony, pero no es para lo que están pensados de origen y en algún momento se notará.
Te cuento un poco más sobre Symfony
Symfony es un framework conocido por su robustez y es comúnmente utilizado en aplicaciones empresariales donde la escalabilidad y el rendimiento son críticos. Además, una de las mayores fortalezas de Symfony es su modularidad. Con su sistema de componentes y bundles, permite una gran flexibilidad para construir desde pequeños microservicios hasta aplicaciones empresariales de gran envergadura. Hablaremos más de los bundles más adelante.
Ventajas para nuestros proyectos
Desarrollo Acelerado
Hoy en día que todo va muy rápido, poder desarrollar más rápidamente las funcionalidades que nuestros clientes o proyectos necesitan, es una ventaja.
Si no reinventamos la rueda, si no volvemos a programar una y otra vez el mismo componente, ganamos mucho tiempo de desarrollo. Aparte de que estos componentes que reutilizamos estaremos seguros de que estarán muy bien diseñados e implementados, ya que se re-utilizan en muchos sitios diferentes.
Symfony nos permite acelerar significativamente el proceso de desarrollo, porque tiene muchos componentes ya integrados en el propio framework y porque su arquitectura está pensada justamente para que nuestras aplicaciones sean modulares y sea fácil crear un componente que podamos reutilizar.
Fiabilidad y Seguridad
Symfony tiene detrás una comunidad de desarrolladores muy grande y ha sido probado exhaustivamente, lo cual garantiza un código más seguro y fiable. No hay más que ver que en Github su repositorio principal tiene casi 30k favoritos.
Además, las actualizaciones frecuentes del framework (en Github ya llevan más de 530 releases), incluyen mejoras en la seguridad, algo que sin duda añade un valor incalculable para cualquier cliente preocupado por la integridad de su proyecto.
Mantenibilidad y Escalabilidad
Cuando usamos un framework, estamos partiendo de un esqueleto robusto y bien probado, con una estructura de código limpia y bien organizada, que hará que el mantenimiento futuro (que lo va a haber, siempre que se hace algo y se pone en producción hay que saber que habrá que mantenerlo y tenerlo actualizado después), sea mucho más ágil y la incorporación de nuevas funcionalidades sean tareas mucho menos arduas. Esto significa que podrás adaptarte más rápidamente a las necesidades del mercado o de tu propio crecimiento.
Sobre los bundles y componentes reutilizables
Hablemos un poco mas de lo que deciamos de los bundles y de la posibilidad de no reinventar la rueda.
Componentes Reutilizables
Una de las maravillas de Symfony es su extenso repositorio de componentes reutilizables, llamados bundles. Estos son como pequeños paquetes de funcionalidades que se pueden integrar fácilmente en cualquier proyecto. Imagina que necesitas implementar un sistema de autenticación en tu aplicación. En lugar de crear uno desde cero, puedes utilizar un bundle preexistente como FOSUserBundle que ya tiene las mejores prácticas integradas.
Formularios y Validación
Supongamos que tu aplicación necesita recopilar información del usuario a través de formularios. Crear formularios desde cero es un proceso que puede ser engorroso y propenso a errores. Symfony ofrece un componente de formulario que te permite manejar todo, desde la creación hasta la validación y la presentación de los formularios, de una manera mucho más eficiente y segura.
Enrutamiento y Control de Acceso
La navegación y la gestión de rutas es otra tarea que se vuelve mucho más sencilla con Symfony. El framework cuenta con un potente sistema de enrutamiento que te permite añadir, eliminar o modificar rutas con gran facilidad. Además, puedes configurar reglas de control de acceso para definir quién puede ver qué, mejorando así la seguridad de tu aplicación.
ORM y Base de Datos
Symfony está perfectamente integrado con el ORM (Mapeo Objeto-Relacional) Doctrine, que facilita la interacción con bases de datos. Esto elimina la necesidad de escribir consultas SQL en plano, minimizando el riesgo de errores y vulnerabilidades, y ahorra mucho tiempo en el desarrollo, además de permitir integrarse con relativa facilidad con una u otra base de datos, dependiendo de las necesidades del proyecto. Es decir, con el mismo código de entidades podemos conectarnos con un MySQL, un PostgreSQL, Mongo, etc.
Motor de Plantillas Twig
El uso del motor de plantillas Twig permite separar la lógica del negocio de la presentación visual de la aplicación. Esto no solo acelera el desarrollo, sino que también hace que sea más sencillo para diseñadores y desarrolladores trabajar en paralelo.
En Resumen
Lo que podría tomar semanas de desarrollo si se hiciera desde cero, puede reducirse drásticamente gracias a las herramientas y componentes que Symfony pone a nuestra disposición. Esto no es solo una ventaja para los desarrolladores, sino un verdadero valor añadido para nuestros clientes. Reduce tiempos de lanzamiento, aumenta la fiabilidad y facilita futuras escalabilidades, factores que en el competitivo mundo digital actual pueden marcar la diferencia entre el éxito y el fracaso.