Identity

Mi camino para levantar un SaaS en 21 días

Desde inicios de año tengo en mente el proyecto de 'desacoplar' un ERP hecho con GeneXus, el cual fue construido durante más de 10 años y con aportaciones de más de 20 personas.

Como todo monolito, hay tareas que toman mucho tiempo o resultan muy complejas: versionado de la base de conocimientos (aka KB), mejoras en módulos existentes, cambio de versión de la herramienta, etc. Por eso mi idea es separarlo en módulos y que cada uno sea una KB independiente.

Este año he logrado separar dos: eDocs (Documentos Electrónicos) y el Identity Provider (módulo de administración).

Una vez que tuve la versión beta del Identity Provider funcionando en un cliente, me surgió la idea de hacerle algunas mejoras y levantarlo como un producto que se pueda ofrecer de forma independiente. Solté la idea en el mastermaind de los faisanes (aca el audio), tuvo muy buena acogida, me animaron a que lo ponga en marcha.

Así que hoy 23 de noviembre de 2022 empieza el reto, la idea es ir modificando esta página con los hitos que cumpla.

Día 1: Check List

Lo primero que se me ocurre es hacer una lista de las tareas a cumplir y tiempos estimados.

Marca

Logo, nombre y landing. Para el logo recurriré a mi diseñador de confianza, tengo en mente que el color principal del módulo sea el mismo gris del logo de mi emprendimiento.
Para el nombre, quiero hacer una encuesta con los malandriners, ya tengo pensados algunos.
Y finalmente para la landing voy a usar algún template de Jamstack (https://jamstackthemes.dev/).
Todo esto no debería tomarme más de 6 días.

Desarrollo

Si bien ya tengo una versión funcional instalada en un cliente, quiero crearme una nueva base de conocimientos con entidades mejor nombradas, además de utilizar algunas nuevas características de GX 18. Tiempo estimado, 10 días.

Despliegue

La parte dificil aquí va a ser decidirme en la arquitectura a utilizar. Quisiera tener por separado la base de datos de la aplicación, pero me preocupa la latencia ya que serían VPS idependientes.

Para la base de datos estoy entre levantar un Postgresql con Coolify o utilizar algún servicio de base de datos en la nube (buenas recomendaciones de los malandriners).

Para la aplicación pienso en una instancia gratuita de Oracle Cloud, por el tipo de aplicación no sería un problema, si por algún motivo me dan de baja la instancia, levantarla en otro VPS. Por este motivo lo más probable es que el despligue lo haga utilizando una imagen de Docker. Tiempo estimado, 4 días.

Día 2 y 3: Analizando la competencia

Para tener más claro las funciones que debe tener mi SaaS quiero analizar algunas de las opciones disponibles. Lo ideal sería poder hacer algún pequeño ejemplo de cada una, pero no sé si pueda darme tiempo para eso.

Las opciones son:

Increíble la cantidad de opciones, sería genial probarlas todas y grabar videos cortos usándolas en una aplicación GeneXus.

Día 10: Entendiendo lo que estoy haciendo

Luego de unos días sin hacer nada 'palpable' en el SaaS, leo un paper de Auth0 (disponible aquí) que describre algunas características que debe tener un IAM (Identity and Access Management), importante para entender el concepto y saber cual es el nombre real de mi producto.

El documento es corto pero explica muy bien los conceptos asociados al manejo de identidad, los diferentes casos de uso y las consideraciones que se deben tener.

Al final extraigo dos conclusiones importantes:

  • El producto que estoy desarrollando estaría en la categoría B2E (A business provides single sign-on to its own employees) es decir, permitiría manejar la autenticación de los usuarios en las diferentes aplicaciones de una empresa.
  • El listado de consideraciones a evaluar para seleccionar un solución de IAM me dejó preocupado y me pone a pensar si mi solución realmente tiene sentido frente a las opciones disponibles.

De momento sigo con el proyecto y si al final no logro convertirlo en un producto comercial, al menos tendré una solución que integraré en mis futuros proyectos.

Día 15: Diseñando la nueva versión

Tomando como base la versión desplegada en un cliente, diseño la base de datos para la nueva versión. Si bien al desarrollar con GeneXus no es un requerimiento indispensable para empezar, siempre ayuda tener modeladas las entidades y sus relaciones.

De momento estarían 7 entidades (Plan, Cuenta, Usuario, Aplicacion, Llave, Menu, Servicio).
Un bosquejo de las pantallas de login y registro.
Y una primera aproximación de los endpoints rest.

El siguiente paso es crear la kb, probar el proceso y realizar el despliegue, casi nada.

Día 19: Beta Release

Día 20: Web lista

Día 21: Presentación en Mastermind