7. Arquitectura y diseño
7.6. Infraestructura
plataforma porque permitía alojar las mencionadas instancias sin costo alguno. Sin embargo, a medida que avanzaba el proyecto, el plan gratuito de esta plataforma cambió y se nos obligó a utilizar uno de pago. Este cambio, hizo que se tengan que considerar otras opciones para migrar los componentes delbackend.
Después de investigar varias alternativas para llevar a cabo esta tarea, se consideró que la opción más adecuada era Fly.io. Esta plataforma, por medio de su plan gratuito, no solo brindaba los recursos necesarios para alojar todos los componentes de la solución planteada, sino que también se presentaba como una de las primeras alternativas a Heroku dentro de los miembros de la comunidad del desarrollo.
Utilizando la mencionada plataforma, se tienen tres appsdesplegadas: una para la base de datos (ahorranza-database), otra para el backend principal (ahorranza), y por último, una para el componente clasificador de textos (text-classification).
Ilustración 72 -Appsdesplegadas en Fly.io.
Para cumplir con los requerimientos de seguridad, se configuró que el acceso a la base de datos solo sea posible desde una aplicación interna dentro de la organización, es decir el backend
terminal como intermediario, esta funcionalidad fue usada esporádicamente para verificar el estado de la base de datos.
Por otro lado, hay determinadas funcionalidades del sistema que requieren que existan tareas que se ejecuten de manera periódica en determinados momentos. Para lograr esto, utilizamos las cloud functions de Firebase, que nos permiten utilizar un cron job (una tarea programada) de Google Cloud Services para satisfacer estos requerimientos. Al tener un único proyecto en Firebase, lascloud functionsestán ubicadas en el mismo servidor que laweb app.
Ilustración 73 - Listado descheduled cloud functionsdesplegadas.
Finalmente, durante el desarrollo y especialmente para las pruebas de integración, se presentó la necesidad de compartir una base de datos entre las diferentes plataformas y poder levantar instancias locales que apunten a la misma. Para esta base de datos de desarrollo no se podía usar Fly.io debido a las restricciones del plan gratuito y nuestro presupuesto acotado. Finalmente, se decidió optar por Supabase, un servicio similar a Fly.io que si bien es de peor calidad fue suficiente para este contexto.
7.6.2.
Despliegue de la web app
En referencia al despliegue de la web app, se analizaron diversas alternativas para llevar a cabo su implementación. Entre las opciones evaluadas, se destacan AWS, Vercel y Firebase Hosting.
Durante el proceso de selección, se tomaron en consideración varios aspectos relevantes, entre
los cuales se incluyen los costos asociados al uso de cada plataforma, la facilidad y rapidez del proceso de despliegue, y el tiempo de respuesta.
En lo que respecta al factor de costos, se encontró que AWS proporcionaba una cobertura adecuada para realizar el despliegue de la web app, gracias a los créditos otorgados por la cátedra. En contraste, en el caso de Vercel se requería la conformación de un equipo cuyo costo ascendía a 20 dólares por desarrollador al mes. Finalmente, Firebase no presentaba costo alguno en este aspecto.
En relación a los otros aspectos que afectan la toma de decisión, comparando las distintas plataformas, AWS destaca por su corto tiempo de respuesta promedio, siendo este de 50 ms [148]. Sin embargo, referido a la facilidad de despliegue, la misma no era sencilla, ya que ninguno de los miembros del equipo presentaba experiencia previa usando la herramienta.
Por su parte, la plataforma de Vercel ofrece el sistema deedge computing, lo que permite alojar la web appen sus servidores distribuidos por todo el mundo, logrando tiempos de respuesta que oscilan entre un mínimo de 45 ms y un máximo de 85 ms [149]. De igual manera que con AWS, ninguno de los miembros presentaba experiencia previa.
En cuanto a Firebase, el tiempo de respuesta promedio oscila los 80 ms, debido a que el servidor más estable se encuentra en la zona este de Estados Unidos. Cabe mencionar que tres de los miembros del equipo ya contaban con experiencia previa en esta plataforma.
Finalmente, se ha decidido utilizar Firebase debido a su adecuación a las restricciones, así como la facilidad de uso y la experiencia previa de los miembros del equipo.
7.6.3.
Despliegue de la mobile app
Para desplegar la mobile app, se utilizaron distintas estrategias en función de la plataforma a desplegar. Para la aplicación Android, se utilizó el servicio implementado por Firebase, App Distribution. El proceso para utilizar esta herramienta consiste en cargar un archivo .apk, que se
dirigida la liberación. En una primera instancia, se realizó un despliegue con pocos usuarios, principalmente los miembros del equipo y luego se abrió a más testers, y se compartió la aplicación por medio de unlinkde registro.
Para la aplicación de iOS, el proceso fue distinto. Para esto se usó la herramienta de Apple, TestFlight. Este servicio permite subir versiones de aplicaciones y hacer operaciones sobre las mismas. Al igual que para la plataforma anterior, en primera instancia se crearontestersinternos, que serían básicamente los miembros del equipo, y luego se abrió a un testeo externo que sería accesible por medio de unlink.
Para poder subir un archivo a esta plataforma, se utilizan ciertos comandos de Flutter, que combinados con la herramienta XCode [151], permiten crear y subir un archivo .ipa, que sería cargado a la plataforma.
De esta manera se cumpliría el RNF3 - Instalación con un linkde la mobile appdurante la fase de testeo.
7.6.4.
Dominios adquiridos
Para el despliegue de las aplicaciones, el equipo compró ciertos dominios utilizando el gestor GoDaddy. El nombre que fue adquirido para contener las aplicaciones a desplegar fue ahorranza.com ywww.ahorranza.com.
Como se puede observar en la siguiente ilustración, se utilizaron registros A y CNAME que permiten dirigir el sitio web a Firebase Hosting.
Por otra parte, se tienen registros MX y CNAME que apuntan al proveedor de servicios de correo electrónico Zoho, que permiten tener tres cuentas de correo electrónico asociadas al dominio adquirido. Las mismas son las siguientes:
Ilustración 74 - Administración deDNSen GoDaddy.
Finalmente, se cuenta con registros TXT para probar la propiedad del dominio, y que autorizan a Firebase a asignar y renovar los certificadosSSLdel sitio.