MiCupón: Detrás de cámaras (en este caso de la implementación)

Explicamos los componentes de la integración de la plataforma MiCupón para obtener una plataforma con los mejores costos, desempeño y tiempo de salida al mercado.

Por Daniel Cruz
2021-12-03

La intención de este artículo es dar una explicación con algo de detalle sobre los componentes que utilizamos para implementar una plataforma completa para móviles como lo es MiCupón como ejemplo de la capacidad de integración con la que contamos y que podemos utilizar con nuevos requerimientos de nuestros clientes.

La selección de esta arquitectura, marcos de trabajo y sus componentes permite enfocarnos en la creación de valor que es el desarrollo de software de forma ágil y mantener la plataforma en el tiempo sin fricción, optimizando costos, calidad y el tiempo de salida al mercado en la construcción de soluciones.

Arquitectura

El siguiente diagrama muestra la arquitectura con los componentes de la plataforma:

arquitectura_micupon.png

Como se aprecia la mayor interacción en línea de la app es con la plataforma de Firebase, vamos a detallarlo un poco más.

Flutter como plataforma de desarrollo para móviles

En primer lugar el SDK elegido para los móviles es Flutter. Se trata de una suite de desarrollo completamente madura para móviles (recién están sacando compatibilidad para aplicaciones de escritorio) que permite un desarrollo ágil al unificar el esfuerzo para lanzar una app tanto para Android como iOS (las dos apps de MiCupón están disponibles en ambos sistemas operativos). Hemos utilizado plugins para las siguientes funcionalidades:

  • Mapas de Google y de OpenStreetMap.
  • Escaner y generador de códigos QR.
  • Firebase
    • Authentication para justamente, autenticar a los usuarios y autorizar los accesos al resto de recursos de Firebase. Incluye credenciales federadas con terceros como Google, AppleID y el registro e ingreso mediante el tradicional esquema de dirección de correo electrónico y contraseña.
    • Firestore como base de datos No-SQL.
    • Storage (Buckets) para subir imágenes y archivos de los comercios a la nube.
    • Cloud Functions como backend.
  • Medio de pago con Conekta para tokenizar los datos de tarjetas bancarias.
  • Manejo de imágenes desde la galería del dispositivo o mediante fotos.

Firebase como infraestructura en la nube

Utilizamos la suite Firebase de Google como infraestructura en la nube . El uso de recursos en la nube implica su pago, al evaluar los costos y las prestaciones que ofrece Firebase contra otros esquemas de nube, lo escogimos y sin duda, lo recomendamos para futuras integraciones con nuestros clientes.

Tiene una (corta) curva de aprendizaje porque cambia el paradigma tradicional de tener servicios backend para realizar operaciones de lógica de negocio y finalmente acceder a las bases de datos. También es diferente el modelo de datos, es una lógica similar a la de las apps en el almacenamiento local, pero en la nube, donde la prioridad es el acceso ágil a los datos.

En cambio, con Firestore, si la app puede almacenar o consultar directamente los datos, lo hace sin intermediarios, lo que aumenta el desempeño de las operaciones en tiempo real y además es completamente reactivo a la actualización de los datos, lo que impacta positivamente en la interacción de los usuarios de la app . Lo mismo sucede con objetos como archivos o imágenes con Firebase Storage.

Sólo en los casos donde hay lógica de negocio en la que no interviene la app, como el envío de reportes, o donde es absolutamente necesario un backend para implementar Webhooks (Conekta requiere un Webhook en donde notifica eventos a la plataforma como que realizó un cobro o si éste falló), o donde hay credenciales que no se deben mantener en la app, entonces utilizamos Cloud Functions codificadas en NodeJS.

Son Serverless, por lo que no tenemos que preocupar por la administración de recursos de infraestructura, son completamente elásticas en alta demanda y sencillas de desplegar y mantener en el tiempo. Firebase provee en automático endpoints seguros para su consumo cuando se despliegan, esto es, URLs con TLS. Además cuenta con un Log centralizado por lo que es sencillo diagnosticar incidentes productivos. Todo esto encaja en la filosofía de Integración y Entregas Continuas (CI/CD) para dotar de mejoras a la plataforma con el tiempo sin fricción en los despliegues.

Para el envío del reporte diario de beneficios otorgados por los comercios, hay una tarea calendarizada tipo Cron que dispara la Cloud Function encargada de los reportes.

Todos los accesos en Firebase por parte de la app requieren de la autenticación de los usuarios, con lo que se genera un token, el cual viaja en cada petición para que se autorice el acceso al respectivo recurso. En el caso de la plataforma, el token de autorización se refresca, por lo que si no hay un cierre de sesión por parte de los usuarios, no pedirá un nuevo ingreso. Además, para minimizar la fricción de registro e ingreso, hemos integrado la funcionalidad por dirección de correo electrónico y contraseña y mediante credenciales de Google y Apple ID. En caso de un mal uso de la plataforma, podemos rastrear al usuario que presuntamente lo hiciera.

Medio de pago y facturación electrónica automática para las suscripciones

Para el cobro de las suscripciones y su facturación respectiva, integramos la plataforma con Conekta y Facturama. Fueron escogidos tanto por el costo como por la facilidad de su integración mediante APIs y SDKs para iOS, Android y NodeJS.

La app permite ingresar los datos de tarjeta bancaria, los cuales son procesados por Conekta para generar un token seguro y posteriormente gestionar la suscripción mensual de los comercios. Una vez que Conekta realiza un cargo satisfactorio, le notifica a un Webhook como Cloud Function en la plataforma, la cual genera en automático la factura electrónica con Facturama y es enviada por correo electrónico al comercio.

Con esto, reiteramos que en Lychee Creatividad e Innovación contamos con las mejores herramientas para crear incluso plataformas completas con los mejores tiempos, costos y calidad del mercado.

*Las marcas y logos Firebase y sus componentes, Conekta, Facturama y Apple son propiedad de las respectivas empresas Google Inc., GRUPO CONEKTAME S.A. DE C.V., EXPRESIÓN EN SOFTWARE, S.A.P.I. DE C.V y Apple Inc.