En el desarrollo de aplicaciones SaaS en el ámbito empresarial es necesario cumplir con unos altos estándares que aporten a los clientes el rendimiento y la seguridad que necesitan para confiar sus datos y el procesado de los mismos a una plataforma en la nube.

En Retain Technologies desarrollamos una política continua de I+D+i para aplicar las últimas tecnologías del desarrollo de aplicaciones a nuestra plataforma de gestión de activos en la nube, Retain EAM. Esta política nos permite desarrollar aplicaciones más rápidas y más seguras, con mayor eficiencia y eficacia, acortando los tiempos de despliegue de nuevas funcionalidades y versiones y con unos niveles de calidad muy altos. Además, es muy importante que nuestro software pueda ejecutarse en distintas plataformas y dispositivos, especialmente móviles, para dotar de mayor movilidad a los usuarios del sistema.

Vamos a hacer en este post un repaso a algunas de la tecnologías que usamos actualmente y que recomendamos para el desarrollo de aplicaciones SaaS. Lógicamente el uso de unas u otras tecnologías dependerá de las características del proyecto y de la solución tecnológica a implantar.

Docker

Docker es una herramienta open source que permite crear y usar contenedores ligeros y portables para ejecutar aplicaciones en cualquier máquina con Docker instalado. Estos contenedores los podemos usar como máquinas virtuales muy livianas y modulares, ya que cada contenedor incluye únicamente los servicios mínimos para ejercer su función independientemente. Docker proporciona flexibilidad para crearlos, implementarlos, copiarlos y pasarlos de un ordenador a otro o de un entorno a otro.

Docker nos permite generar entornos de desarrollo idénticos a los de producción, de forma que todo el equipo trabaja sobre el mismo entorno de desarrollo, independientemente del SO en el que se desenvuelva habitualmente cada uno. De este modo evitamos los temidos momentos “pero si esto en mi ordenador funcionaba”.

Por ejemplo, en el caso de estar desarrollando o manteniendo una aplicación en Symfony, podemos crear un contenedor con PHP, MySQL, Apache / Nginx y Mongo idéntico al servidor de producción donde finalmente estará alojada nuestra aplicación.

Por tanto, permite realizar despliegues tanto en test como en producción de manera mucho más fácil y eficiente.

Symfony

Symfony es uno de los framework PHP open source más demandados del momento (junto con Laravel) gracias a que cuenta con una enorme comunidad detrás que la alimenta con mejoras y actualizaciones regularmente.

Se puede adaptar para la mayoría de proyectos, aunque está pensado para grandes aplicaciones web. Su principal ventaja es que genera código muy fácil de leer, de entender, de extender y de mantener.

Symfony nos aporta, entre otras ventajas:

  • Abstracción de la base de datos.
  • Flexibilidad.
  • Estabilidad.
  • Estandarización y rapidez en los desarrollos.
  • Escalabilidad y seguridad.
  • Permite la generación de APIs REST.
  • Evita tener que “reinventar la rueda” gracias a la reutilización de funcionalidades o la integración de bibliotecas de terceros.

Como puntos en contra, hay que tener en cuenta que, en ocasiones, la curva de aprendizaje es elevada, o que entre versión y versión se pueden producir muchos cambios de código; aunque gracias a su elaborada y extensa documentación, hace más sencillo la migración a nuevas versiones.

Angular

Angular es un framework JavaScript open source creado por Google.

Actualmente es uno de los frameworks JS más demandados, ya que el apoyo de Google y la experiencia durante los 4 años que lleva activo, sumado a la gran comunidad que lo apoya, hacen que sea una herramienta muy potente, segura y fiable.

Angular facilita la creación de aplicaciones web modernas de tipo SPA (Single Page Application). Esto significa que toda la página web se carga en el navegador del cliente, asegurando una interacción mucho más rápida.

Como Angular es una tecnología que se utiliza solamente para el desarrollo del front (parte visible de la aplicación) nos da pie a que el back, donde se gestiona la interacción con la base de datos, se desarrolle en el lenguaje que cada equipo de desarrollo estime oportuno. Por ejemplo, se pueden realizar llamadas a APIs REST hechas en Symfony o NodeJS.

Al igual que Symfony, aporta:

  • Flexibilidad.
  • Versatilidad.
  • Escalabilidad.
  • Estandarización y rapidez en los desarrollos.
  • Permite crear módulos reutilizables y fáciles de usar.

La curva de aprendizaje de Angular al principio es elevada, pero después es muy fácil de entender, utilizar y mantener.

La aparición de este framework supuso un antes y un después en la manera de desarrollar aplicaciones webs, y a día de hoy ya contamos con otros frameworks JS muy potentes y con gran aceptación por parte de la comunidad de desarrollo, como pueden ser ReactJS o VueJS.

Un punto a favor muy importante para este tipo de frameworks es que se consigue desarrollar aplicaciones que, por lo general, son más rápidas que  las realizadas con otras herramientas como los frameworks PHP.

Ionic

Según Gartner Inc., en 2022 el 70% de las interacciones que se realizarán en la web será a través de dispositivos móviles.

Ionic es un framework JavaScript open source que permite la generación de aplicaciones móviles híbridas. ¿Qué significa esto? Que con Ionic es posible crear apps móviles para iOS, Android y aplicaciones web usando el mismo código. Un gran punto a favor de Ionic es que se compromete en funcionar siempre en las últimas versiones de iOS y Android.

Ionic se creó utilizando Angular como base, pero actualmente proporciona soporte para el desarrollo de aplicaciones móviles apoyándose en los principales frameworks JS mencionados anteriormente. Esto hace que si el equipo de desarrollo conoce alguno de ellos, le será mucho más fácil desarrollar en Ionic.

La principal ventaja, como hemos visto, es que permite desplegar la aplicación en múltiples dispositivos (desktop, móvil, PWA, coches, etc.) a partir de un único desarrollo y código fuente, lo que reduce a más de la mitad el tiempo de entrega de aplicaciones en múltiples plataformas, mejorando además la productividad y la rentabilidad de los proyectos.

Con Ionic se aprovecha mejor el talento existente, evitando la necesidad de incorporar especialistas en cada plataforma. El mantenimiento del software se simplifica y se reduce su coste, pudiendo dar un mejor soporte al no necesitar personal especializado en código nativo. Hay que tener en cuenta que la comunidad de desarrolladores web es 30 veces mayor que las comunidades de apps nativas.

Quizás el único punto en contra de Ionic es el rendimiento, que en una app híbrida puede ser ligeramente menor que en apps nativas.

MongoDB

MongoDB es una base de datos orientada a documentos. Su principal característica es que guarda los datos en documentos en lugar de hacerlo en registros. No es una base de datos relacional, por lo que no es necesario seguir un esquema. Los datos de una misma colección pueden tener estructuras diferentes.

En esta base de datos no existe la unión de tablas, sino que un documento puede contener múltiples subdocumentos o colecciones de subdocumentos. Por ejemplo, en el desarrollo de un sistema de gestión de incidencias, una incidencia puede contener en su interior un subdocumento con todos los datos del usuario que la creó, o una colección de subdocumentos correspondientes a todos los partes generados sobre esa incidencia.

MongoDB nos ofrece mayor velocidad a la hora de extraer gran cantidad de datos y una mayor escalabilidad al no depender de estructuras, lo que aporta mayor eficiencia a la hora de analizar y estudiar la información extraída.

Como desventajas, es importante tener en cuenta que no es la mejor solución para todos los casos, y dependerá del tipo de proyecto. Además, migrar de sistemas relacionales a MongoDB puede resultar bastante costoso.

Una buena solución suele ser desarrollar aplicaciones basadas en MySQL o MariaDB sincronizadas con MongoDB y extraer los datos de una u otra plataforma en función de las necesidades oportunas.