Cómo armamos infraestructura para facilitar los pagos de empresas en tiempo record

Hoy les cuento sobre los primeros pasos en la creación de la arquitectura de Bemmbo.

Cómo armamos infraestructura para facilitar los pagos de empresas en tiempo record

En este post les voy a contar como fueron los primeros pasos en la creación de la arquitectura de Bemmbo y cómo la tecnología nos permitió avanzar rápido.

En septiembre del año pasado estaba buscando ideas después de un intento fallido de emprender y me encontré con un mensaje de un tal “Rorro” en el Discord de Platanus Ventures. Él estaba buscando un socio computín para emprender con la idea de facilitar el pago de empresas (pueden leer más de cómo nos conocimos aquí). Como buen computin me dediqué a investigar a fondo la idea y cómo se estaba haciendo afuera, caché que existia Bill.com, Routable.com, entre otros que le estaba yendo bastante bien.

Primeras juntas con Rorro hablando de todo

Todo pintaba bien. En las primeras veces que hablé con Rorro conectamos de forma natural y llegamos a conclusión de que si queríamos hacer algo, tenía que ser a lo grande; ayudar a todas las empresas de LATAM para que pagar y cobrar no sea un ají en el ***. Después de una de las tantas juntas, camino de vuelta a mi departamento, pensaba que la patita técnica de esta startup tenía que apuntar a que algún día íbamos a procesar millones de pagos mensuales. En un discurso en una graduación de Stanford, Steve Jobs habla de cómo se conectan los puntos a través del tiempo -recomiendo mucho ver el discurso- y por primera vez en mi vida lo experimenté en carne propia, ¿cómo se preguntan?, bueno, justo antes de emprender había participado en un increíble desafío en MACH donde escalamos una infraestructura para facilitar pagos entre más de 3 millones de chilenos. Ahora tocaba hacer lo mismo, pero con una perspectiva distinta: facilitar los pagos de empresas, en vez de personas: Bemmbo.

Steve Jobs en su discurso de Stanford

AWS

Durante mi aventura en MACH tuve la oportunidad de aprender de grandes personas con buenos conocimientos en AWS y una arquitectura de micro servicios que permitía miles de transacciones diarias entre millones de chilenos. En mi mente, cuando empezamos Bemmbo, dije: “necesitamos algo parecido a lo de MACH, pero rápido y sin tener 40 devs”. Parecía imposible jaja, pero le pregunté a las personas más secas de MACH en AWS si era posible “acelerar” una infraestructura escalable. Todos llegaron a la misma respuesta: AWS CDK.

Pensando que teniamos que armar la infra parecida a MACH, con un solo ingeniero

AWS CDK es un framework que permite armar infraestructura usando código (en Bemmbo escribimos infraestructura usando Typescript). Luego de Googlear rápido sobre AWS CDK, me aparecieron templates de infraestructura de micro servicios, escalables y que se podían montar en un día. Entre estos templates, uno me llamó la atención, introducía una infraestructura serverless con el siguiente stack

  • DynamoDB como database serverless NoSQL (porque NoSQL por sobre SQL)
  • Lambdas que procesaban llamadas de API
  • Lambdas que procesaban cambios en DynamoDB (arquitectura de eventos)
  • GraphQL sobre DynamoDB para ayudar con el CRUD
  • Pipeline -como código- con 3 diferentes ambientes: dev, staging y prod.

Primera funcionalidad de Bemmbo

Decidí usar este template y armar la primera funcionalidad de Bemmbo: Extraer miles de facturas desde el SII y movimientos bancarios usando Fintoc. La experiencia fue buenísima. Logré armar un MVP de la funcionalidad en dos días. Pero ¿Cómo se ve todo esto?

Primero se define la infraestructura como código de lo que quieres armar:

donde el código de la Lambda vendría teniendo la siguiente forma:

luego este código se compila y con el comando cdk deploy, se crean mágicamente los recursos en AWS en la región que quieras.

Arquitectura primera funcionalidad de Bemmbo

En resumen, si lo llevamos a un lenguaje natural, lo que hice fue crear un endpoint que dada una organización dentro de Bemmbo extrae las facturas desde Fintoc y las escribe en nuestra base de datos no relacional. Si se fijan, en el código existen varios new … que crea una APIGateway, una tabla en DynamoDB y una Lambda. Todos estos new … son infraestructura como código que crearon personas secas en AWS que nosotros en Bemmbo reutilizamos para acelerar nuestro desarrollo sin dejar la calidad de lado, porque claro, estamos usando código de gente muy capacitada de AWS que las codearon por nosotros.

Después de la primera funcionalidad

Esta fue la primera funcionalidad que armé para Bemmbo, actualmente el equipo ha hecho cosas increibles reutilizando infraestructura como código de ciertos templates (puedes ver algunos templates aquí) con una velocidad de desarrollo muy buena para una startup. Entre las cosas más destacadas estan los siguiente proyectos dentro de Bemmbo.

Un día cualquiera en la oficina trabajando en varios proyectos

Extraer la información de todo tipo de documentos usando Textract

En el día a día de las empresas, la información que viven en archivos es impresionante. En Bemmbo queríamos que toda esta información viviera en la plataforma, para llevar esto a cabo utilizamos una solución escalable pre hecha para que nuestros usuarios pudieran subir todos sus archivos de una y nosotros nos encargamos de extraer la información usando Textract. Textract es el OCR de AWS que está entrenado para, entre otras cosas, extraer información de facturas (justo lo que necesitábamos). Como dato freak, desarrollamos un MVP de esta funcionalidad en dos días, y la hicimos trabajando desde Coñaripe, una parte muy bonita del sur de Chile.

Una billetera digital usando QLDB para ejecutar pagos en tiempo real

Uno de los desafíos más bonitos de Bemmbo fue hacer que las empresas paguen literal con un par de clicks. Por eso armamos nuestra billetera digital usando un servicio de AWS que está hecho especialmente para manejar transacciones: Quantum Ledger Database (QLDB). Esto nos permitió poder tener una base de datos transaccional, auditable e inmutable, todas las características necesarias para transar dinero en una aplicación en una sola base de datos, y de nuevo, nos aprovechamos de este desarrollo de AWS para acelerar el lanzamiento de una billetera digital que nuestros clientes querían. Aquí pueden ver un template de una funcionalidad con QLDB. Si te gustaría probar la beta privada de nuestra billetera digital, puedes hacerlo aquí.

Un sistema de recordatorios en cobranza usando StepFunctions

Para ayudar a nuestros clientes con la cobranza, implementamos un sistema de envío de recordatorios por email. Montamos un sistema basada en una máquina de estados usando un servicio de AWS llamado StepFunction. La primera versión es una máquina de estado con dos estados: Wait y Send . Por cada factura que nuestros clientes deben recordarles a sus clientes que deben pagar, nosotros creamos un listado de recordatorios donde cada recordatorio es una máquina de estado que espera una cierta cantidad de tiempo y luego se envía. Agendamos recordatorios para cuando una factura está pronto a vencer y luego cuando vence, y podemos repetir estos recordatorios las veces que queramos gracias a las propiedades de las máquinas de estados. Gracias a templates pre hechos, logramos hacer un MVP de esta funcionalidad en menos de una semana. Para ayudar a nuestros clientes con la cobranza, recordarles a sus clientes que deben pagar era una parte clave. Por eso montamos un sistema basada en una máquina de estados usando un servicio de AWS llamado StepFunction. La primera versión es una máquina de estado con dos estados: Wait y Send . Por cada factura que nuestros clientes deben recordarles a sus clientes que deben pagar, nosotros creamos un listado de recordatorios donde cada recordatorio es una máquina de estado que espera una cierta cantidad de tiempo y luego se envía. Agendamos recordatorios para cuando una factura está pronto a vencer y luego cuando vence, y podemos repetir estos recordatorios las veces que queramos gracias a las propiedades de las máquinas de estados. Gracias a templates pre hechos, logramos hacer un MVP de esta funcionalidad en menos de una semana. Si te gustaría empezar a simplificar y automatizar la cobranza con tus clientes, puedes contactarnos aquí.

Hemos recorrido un camino lleno de desafíos, pero todavía quedan muchos más por delante. Gracias al equipo que hemos formado y con la tecnología como core, logramos avanzar rápido en nuestra misión de ayudar a las empresas a pagar y cobrar en fácil. Sabemos que nos queda un largo camino, queremos escalar esta solución a toda LATAM y tenemos la convicción que disfrutando del camino podemos lograrlo 🚀

Equipo Bemmbo de izquierda a derecha- Cris, Manriq, Nora, Nico, Sofi, Valde, Jona, Rorro y Dario