• No se han encontrado resultados

Análisis de tecnología backend a utilizar

5. Arquitectura

5.6. Elección de tecnologías

5.6.3. Análisis de tecnología backend a utilizar

Centro de comandas

Luego de realizar un análisis, ir al bar a ver el lugar donde sería colocada la terminal de comandas y hablar con las personas que utilizarían este sistema, se llegó a la conclusión de que la mejor forma de implementar esta aplicación era en una tablet y no en una PC. Es por esto, que al igual que la aplicación móvil y que la terminal autoservicio, el centro de comandas está desarrollado con Flutter, para así poder correr de forma nativa en cualquier tablet Android o iOS.

Ruby on Rails

Es un framework de aplicaciones web de código abierto escrito en el lenguaje Ruby, siguiendo el patrón de arquitectura Modelo Vista Controlador (MVC). Intenta combinar la simplicidad con la posibilidad de desarrollar aplicaciones escribiendo menos código que con otros frameworks y con un mínimo de configuración. Estos son los aspectos a favor más importantes:

● Es un framework fuertemente estructurado. Rails cuenta con muchas reglas para organizar el código. Usa el patrón MVC, obligando a crear view, controller y ruta para la creación de una petición. Esto resulta en un código muy bien organizado, fácil de leer, de mantener y editar.

● Cuenta con todo lo necesario para crear una aplicación web basada en base de datos pronta para usar. Esto incluye un ORM (mapeo relacional de objetos), desarrollo de API RESTful, scaffolding, administración del entorno, procesamiento en segundo plano, testing y comunicación en tiempo real mediante websockets. Dado que las características básicas de las aplicaciones CRUD se pueden generar fácilmente sin escribir mucho código, Rails es muy apto para la creación rápida de prototipos y el desarrollo de MVPs.

● Cuenta con muchos recursos de código abierto (gemas) disponibles en caso de que sea necesario el desarrollo fuera de lo convencional.

● Se adapta muy bien a metodologías ágiles de desarrollo de software.

● Cuenta con una gran comunidad.

Django

Es un framework de desarrollo de aplicaciones web de código abierto escrito en Python, respeta el patrón de arquitectura modelo-vista-controlador. Django se inventó para cumplir con plazos de desarrollo apresurados, y al mismo tiempo, satisfacer las altas expectativas y requisitos de desarrollos web complejos. Estos son algunas de sus fortalezas:

● Es un software maduro, cada parte de su código fue examinado y probado

● Énfasis en el reúso, la conectividad y extensibilidad de componentes, el desarrollo rápido y el principio “No te repitas” (DRY, del inglés Don't Repeat Yourself).

● Cuenta con una gran comunidad.

Decisión

Al tomar la decisión final se tuvo en cuenta los criterios de selección de tecnologías.

Para el backend se destaca la necesidad de desarrollo veloz para liberar un primer MVP y desarrollar nuevas versiones. También se considera la experiencia previa del equipo con las tecnologías y los objetivos planteados con los atributos de calidad.

Django cuenta con características que hacen foco en el criterio de velocidad de desarrollo. De igual manera, el equipo no cuenta con ningún tipo de experiencia previa en el uso del framework, por lo que el equipo creyó que lo mejor sería descartarlo.

Por otro lado, se encuentra Node.js, con muy buenas características que quizás alienten su uso, es un lenguaje muy popular con muchas posibilidades de crecimiento. Su gran desventaja, en el contexto del proyecto, es el tiempo de desarrollo para alcanzar un mínimo producto viable rápidamente e incorporar nuevas versiones.

Luego se encuentra Ruby on Rails, un framework muy bien estructurado. Su mayor desventaja puede decirse que es su performance en comparación con otros, pero esto no quiere decir que no sea suficiente para la solución. Al igual que Django, Ruby on Railses muy bueno en cuanto a productividad de desarrollo.

Por razones de estudio, el equipo cuenta con experiencias previas en las últimas dos tecnologías mencionadas, esto es importante porque se tiene nociones de como comenzar y de igual manera sigue siendo desafiante.

Se consideró utilizar el framework Express.js para programar con el lenguaje Node.js, esto podría solucionar el problema de productividad que tiene Node.js.

Pero luego de investigar un poco más se encontraron algunas desventajas. Se presenta una tabla de comparación.

Ruby on Rails Express.js Velocidad de

programación

Muy útil cuando se quiere

crear aplicaciones

rápidamente y probar las ideas.

Requiere más tiempo en empezar y probar la app.

Performance No puede soportar tantas peticiones a la vez como Express.js.

Es conocido por la velocidad gracias a la combinación de la programación orientada a eventos y la asincronía.

Popularidad Usado en 381,367 sitios web.

Cuenta con una gran cantidad de desarrolladores seniors en su comunidad.

Usado en 174,112 sitios web.

El nivel de desarrolladores en la comunidad es muy variado.

Documentación Una tecnología madura. Por lo tanto, tiene una comunidad más grande que conduce a una documentación más amplia.

A veces los módulos son de

calidad pobre y la

documentación carece de especificaciones.

Curva de

aprendizaje

Fácil de empezar. Una buena opción para desarrolladores con conocimiento en Node.js.

Comunidad y soporte

Apoyado por una comunidad de desarrolladores activa y solidaria.

Es una tecnología más joven que no puede compararse en términos de soporte contra RoR.

Tabla 9: Comparación de tecnologías.

de escalabilidad y performance son cubiertos por Rails, la decisión terminó definiéndose por la velocidad de inicio y productividad al correr de todo el proyecto, siendo la más indicadaRuby on Rails.

Esta tecnología está construida sobre el patrón Model-View-Controller (MVC), el cual favorece uno de los atributos de calidad del proyecto tal como la modificabilidad. Al mismo tiempo, es muy sencillo de integrar con librerías de terceros. Prácticamente existe cualquier tipo de librería la cual esté en formato de gema la cual puede ser instalada en la aplicación mediante la herramienta Ruby Gems.

Por otro lado, Ruby on Rails es una de las tecnologías con mayor popularidad en el sitio GitHub. Cuenta con una comunidad muy amplia de desarrolladores los cuales están constantemente mejorando código y ayudando a la comunidad a resolver sus problemas. Esta es una gran ventaja ya que simplemente uno de los integrantes del equipo maneja experiencia previa en esta tecnología, por lo cual para los otros dos, el conseguir documentación y ejemplos de código no será un problema, favoreciendo así la curva de aprendizaje.